2010-03-20 12 views
27

Vì tôi đang sao lưu toàn bộ hệ thống debian của mình, tôi đã nghĩ rằng nếu có một bản sao của thư mục /var/lib/mysql là một lựa chọn khả thi để bán phá giá các bảng với mysqldump.Sao chép/var/lib/mysql có thay thế tốt cho mysqldump không?

  • là tất cả thông tin cần thiết có trong thư mục đó?
  • có thể nhập các bảng đơn trong một mysql khác không?
  • có thể có sự cố trong khi khôi phục các tệp đó trên phiên bản máy chủ mysql khác nhau (có thể là hơi)?
+2

Việc làm này trong nhiều năm qua, không có mâu thuẫn! – sepehr

+2

Percona có một công cụ mà về cơ bản có cách tiếp cận này để làm "sao lưu nóng" của máy chủ chạy: http://www.percona.com/doc/percona-xtrabackup/2.1/ – Eli

Trả lời

26
  • Yes nếu bảng được sử dụng MyISAM (mặc định) động cơ. Không phải nếu nó sử dụng InnoDB.
  • lẽ là không, và nếu có, bạn chỉ cần thực hiện mysql_upgrade để khắc phục chúng

Để tránh bị cơ sở dữ liệu trong trạng thái không phù hợp, bạn có thể tắt máy MySQL hoặc sử dụng BẢNG LOCK và BẢNG sau đó tuôn ra trước sao lưu. Giải pháp thứ hai tốt hơn một chút vì máy chủ MySQL sẽ vẫn có sẵn trong quá trình sao lưu (mặc dù chỉ đọc).

+1

Cảm ơn tất cả mọi người cho giải pháp này. Nó cắt ra ít nhất một giờ thời gian tái nhập khẩu! Và nếu bạn muốn làm điều đó thành một hướng dẫn: Gõ "FLUSH TABLES WITH READ LOCK;". –

+0

Bạn có thể đi vào chi tiết về câu trả lời cho "các bảng đơn lẻ có thể được nhập vào một mysql khác không?" "Vâng, miễn là MyISAM" là một câu trả lời khá thưa thớt. – bobpaul

3

Hoàn toàn OK khi bạn tắt máy chủ MySQL trước và sử dụng chính xác cùng phiên bản để truy xuất "bản sao lưu". Nếu không nó không phải là.

4

Cách tiếp cận này sẽ chỉ hoạt động an toàn nếu bạn tắt cơ sở dữ liệu trước. Nếu không bạn cũng có thể kết thúc trong một trạng thái không nhất quán sau đó. Sử dụng lệnh /etc/init.d/mysql stop trước. Sau đó bạn có thể khởi động lại sau khi sao lưu được thực hiện.

Các vấn đề liên quan