it-swarm-vi.com

Tôi nên sử dụng mysqldump hoặc mysqlhotcopy để sao lưu cơ sở dữ liệu MySQL?

Tôi có một blog WordPress đang chạy trên cơ sở dữ liệu MySQL mà tôi muốn sao lưu thường xuyên. Sẽ tốt hơn nếu sử dụng chương trình mysqldump hoặc tập lệnh mysqlhotcopy để tạo bản sao lưu? Những ưu và nhược điểm của mỗi là gì? Có lựa chọn nào khác tôi nên xem xét?

13
Matthew Shanley

Tôi có thể nói với bạn rằng tôi hiện đang sử dụng mysqldump để duy trì sao lưu cơ sở dữ liệu của mình. Tôi làm điều này bởi vì mục tiêu của tôi là giữ các bản sao lưu hàng tuần để trong trường hợp ai đó xóa (các) trang web của họ, tôi có thể khôi phục nó từ nhiều nhất một tuần trước.

Điểm hay của việc này là đây là một tệp văn bản cơ bản để tôi có thể nhập nó vào bất kỳ máy tính nào có MySQL, tải nó lên và tìm kiếm dữ liệu bị thiếu. Lưu ý: để có được những gì tôi muốn, lệnh tôi đang sử dụng trong tập lệnh của mình là:

mysqldump --databases databaseName > /file/path

--databases là thứ khiến mysqldump kết xuất các tiêu đề CREATE DATABASE IF NOT EXIST để tôi có thể nhập nó bất cứ nơi nào tôi muốn.

Mặc dù phương pháp này hiệu quả với tôi, tôi chắc chắn rằng có những phương pháp tốt hơn cho các mục đích khác. Tôi cũng có thể nói rằng, như đối với bất kỳ giải pháp sao lưu nào, bạn nên lưu trữ ít nhất trên một máy tính khác và tốt nhất là ngoại vi (trên đám mây của chúng tôi) nếu bạn có thể.

5
Mike

Tôi sẽ xem xét sử dụng plugin WordPress có tên là "Sao lưu cơ sở dữ liệu WordPress (WP-DB-Backup)" cũng được liệt kê trên Wordpress Sao lưu cơ sở dữ liệu hướng dẫn . Plugin này có thể sao lưu cơ sở dữ liệu theo lịch và gửi email cho bạn (giả sử đó là cơ sở dữ liệu nhỏ). Bạn cũng có thể chỉ cần sao lưu nó cục bộ. Bạn có thể loại trừ spam nhận xét và sửa đổi để làm cho DB nhỏ hơn

Ít kiểm soát hơn nhưng dễ thực hiện hơn.

Các bãi chứa MySQL cung cấp cho bạn quyền kiểm soát . Dịch vụ lưu trữ của bạn cũng có thể là một yếu tố hạn chế. Một số máy chủ không cung cấp cho bạn quyền truy cập để chạy các công việc định kỳ hoặc chạy lệnh mysqldump.

5
citadelgrad

BỀN VỮNG # 1

Nếu bạn thực hiện bất kỳ bản sao lưu nào của MySQL Instance, tốt nhất là thiết lập MySQL Replicaton để mọi tải máy chủ áp đặt hoặc tăng I/O đĩa không ảnh hưởng đến cơ sở dữ liệu sản xuất của bạn.

Khi bạn thiết lập Bản sao MySQL, bạn có thể tạo tập lệnh mysqldump theo nhiều cách khác nhau ( Vui lòng xem bài đăng của tôi trên DBA StackExchange cho sự đa dạng của các kỹ thuật ), miễn là bạn chạy các mysqldumps trên Slave.

BỀN VỮNG # 2

Nếu bạn không thể thiết lập một máy chủ khác cho Bản sao MySQL và tất cả dữ liệu của bạn là InnoDB, bạn sẽ phải thực hiện một mysqldump tại thời điểm. Điều này được thực hiện bằng cách sử dụng tùy chọn --single-transaction với mysqldump. Do đó, nếu bạn chạy mysqldump bắt đầu từ nửa đêm và sao lưu kết thúc lúc 12:15 sáng, đầu ra của mysqldump khi được khôi phục phản ánh dữ liệu vào lúc 12:00 AM.

BỀN VỮNG # 3

Một chương trình khác có sẵn cho Sao lưu MySQL là XtraBackup từ Percona.

XtraBackup là một công cụ toàn diện hoạt động như rsync nhưng có mục đích định hướng trong cuộc sống. Nó có thể bắt đầu sao chép tất cả dữ liệu và không gian bảng của InnoDB. Nó có khả năng tạo các điểm kiểm tra bên trong và thực hiện khôi phục sự cố InnoDB tại chỗ để giúp có được bản sao lưu tại thời điểm hoàn hảo. XtraBackup cũng có một tính năng bổ sung cho phép tạo các bản sao lưu gia tăng. Một tính năng bổ sung khác là tạo các tệp nhật ký InnoDB, cũng được xây dựng bằng cách khôi phục sự cố tại chỗ. Ngoài ra còn có một số phần mềm trình bao bọc để cung cấp bản sao đông lạnh các bảng MyISAM.

Nó thực hiện một mặt sau của Instance MySQL, nhưng với một sự khác biệt rõ ràng. Thời điểm sao lưu dự phòng dựa trên thời điểm sao lưu hoàn thành thay vì khi bắt đầu. Do đó, nếu bạn chạy XtraBackup bắt đầu lúc nửa đêm và bản sao lưu kết thúc lúc 12:15 sáng, đầu ra của mysqldump khi được khôi phục phản ánh dữ liệu vào lúc 12:15 sáng.

3
RolandoMySQLDBA

Phụ thuộc vào công cụ lưu trữ của bạn cho các bảng của bạn. Nó chỉ hoạt động cho các bảng ARCHIVE và MyISAM accordinto Trang hướng dẫn sử dụng MySQL này và phải được chạy trên cùng một máy (tức là không sử dụng ổ cắm cục bộ hoặc TCP/IP)

MySQL cũng nói

Nếu bạn đang thực hiện sao lưu trên máy chủ và tất cả các bảng của bạn đều là bảng MyISAM, hãy xem xét sử dụng mysqlhotcopy thay vì nó có thể thực hiện sao lưu nhanh hơn và khôi phục nhanh hơn.

2
Aiden Bell

Tôi khuyên bạn nên sử dụng một trong nhiều tập lệnh sao lưu myQuery đã có từ trước để giảm bớt sự đúng đắn.

Tôi sử dụng "automysqlbackup", đây là một tập lệnh Shell nguồn mở có thể được đặt làm công việc định kỳ trên máy chủ. Nó bao gồm hầu hết mọi tình huống sao lưu có thể tưởng tượng được: http://sourceforge.net/projects/automysqlbackup/ . Nó đã làm việc hoàn hảo cho tôi trong nhiều năm - khuyến cáo triệt để.

1
Mark Hatton

mysqlhotcopy là một tập lệnh Perl vào khoảng '05. Vì vậy, nó thêm phụ thuộc, cho Perl và Perl khác nhau. Tôi sẽ chuyển qua cái này.

mysqldump là một chương trình C đang được phân phối với MySQL và được duy trì tích cực. Nếu bạn thêm tùy chọn -x, nó sẽ khóa các bảng để bạn vàng.

Cá nhân tôi có tập lệnh này trong cron (bạn sẽ muốn xóa các `thoát đó nếu bạn muốn chạy nó bằng tay) và nó hoạt động như một cơ duyên đối với tôi, sao lưu từng cơ sở dữ liệu của tôi một tệp cục bộ, cũng như một bãi chứa đầy đủ của tất cả các cơ sở dữ liệu.

Và nếu bạn có nhiều cơ sở dữ liệu ở đó, bạn cũng sẽ muốn bỏ các khoản tài trợ cho chúng. Maatkit sẽ giúp bạn ở đó và bạn sẽ chỉ mk-show-grants -uroot -pPASSWORD > mygrantsdatabase.sql để các bảng tài trợ của bạn được sao lưu và sẵn sàng để nhập lại.

1
intlect

Tôi cũng biết rằng một số công cụ quản lý máy chủ như Interworx và Sureim sử dụng mysqldump để sao lưu cơ sở dữ liệu và sau đó là một lệnh mysql đơn giản để khôi phục. Từ đó, tôi đoán rằng đây là một trong những cách tốt nhất.

0
Darryl Hein