Tôi đã tìm thấy một số trang web nói về việc thực hiện chính xác điều này, nhưng tôi thiếu một vài chi tiết quan trọng. Các bước chung là
- Chạy
FLUSH TABLES WITH READ LOCK
- Chụp ảnh nhanh ZFS
- Chạy
UNLOCK TABLES
Nhiều nguồn báo cáo rằng InnoDB, mà tôi đang sử dụng, không thực sự tôn vinh a FLUSH
. Hướng dẫn sử dụng MySQL lưu ý rằng có một FLUSH TABLES...FOR EXPORT
biến thể để sử dụng với InnoDB, nhưng yêu cầu chỉ định từng bảng riêng lẻ, thay vì sao lưu toàn bộ cơ sở dữ liệu. Tôi muốn tránh chỉ định từng bảng riêng lẻ vì rất có thể danh sách các bảng sẽ không đồng bộ với các bảng thực sự tồn tại.
Vấn đề khác tôi có là tôi dự định làm một cái gì đó như thế nào mysql -h"$HOST" -u"$USERNAME" -p"$PASSWORD" --execute="FLUSH TABLES WITH READ LOCK"
. Tuy nhiên, điều này làm giảm khóa ngay sau khi thoát phiên. Điều này có ý nghĩa, nhưng cũng khá khó chịu vì tôi cần phải giữ khóa đọc khi tôi chụp ảnh.
Ý tưởng khác của tôi là sao lưu dự phòng bằng cách sử dụng một công cụ như Percona XtraBackup và chụp ảnh sao lưu, nhưng tôi không muốn trả chi phí để ghi tất cả dữ liệu của mình vào vị trí thứ hai chỉ để chụp.