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


14

Tôi có một blog WordPress 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?

Câu trả lời:


5

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

Đây --databaseslà những gì làm cho mysqldump đổ các CREATE DATABASE IF NOT EXISTtiêu đề để 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 ngoài kia cho các mục đích khác. Tôi cũng có thể nói rằng, đố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

Tôi sẽ xem xét sử dụng một plugin WordPress có tên "WordPress Database Backup (WP-DB-Backup)" cũng được liệt kê trong hướng dẫn sao lưu cơ sở dữ liệu Wordpress . 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

Kiểm soát í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 nhấ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.


4

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 Instance MySQL, 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 kịch bản cho mysqldump theo nhiều cách khác nhau ( Vui lòng xem bài đăng của tôi trên DBA StackExchange để biết nhiều 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 --single-transactiontùy chọn 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.


2

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 phù hợp với 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 (nghĩa 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.


1

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 kịch bản 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

mysqlhotcopy là một kịch bản 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 đượ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ó kịch bản 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 vào 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ỉ cần mk-show-grants -uroot -pPASSWORD > mygrantsdatabase.sqlsao lưu các bảng tài trợ của mình và sẵn sàng nhập lại.


0

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.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.