Mở mysql
cửa sổ lệnh và đưa ra lệnh này:
mysql> FLUSH TABLES WITH READ LOCK;
Điều này sẽ khóa tất cả bảng trong tất cả cơ sở dữ liệu trên phiên bản MySQL này cho đến khi bạn phát hành UNLOCK TABLES
(hoặc chấm dứt kết nối máy khách giữ các khóa đọc này).
Để xác nhận điều này, bạn có thể mở một cửa sổ lệnh khác và thử thực hiện ALTER
, DROP
, RENAME
hoặc TRUNCATE
. Các lệnh này bị treo, chờ khóa đọc được giải phóng. Nhấn Ctrl-C để chấm dứt việc chờ đợi.
Nhưng trong khi các bảng có khóa đọc, bạn vẫn có thể thực hiện mysqldump
sao lưu.
FLUSH TABLES WITH READ LOCK
lệnh may giống như cách sử dụng --lock-all-tables
tùy chọn của mysqldump
. Nó không hoàn toàn rõ ràng, nhưng tài liệu này
dường như hỗ trợ nó:
Cả FLUSH TABLES WITH READ LOCK
và --lock-all-tables
sử dụng cụm từ "khóa đọc toàn cục", vì vậy tôi nghĩ rằng có khả năng chúng làm điều tương tự. Do đó, bạn có thể sử dụng tùy chọn đó để mysqldump
và bảo vệ chống lại đồng thời ALTER, DROP, RENAME và TRUNCATE.
Lại. nhận xét của bạn:Sau đây là từ Guilhem Bichot trong nhật ký lỗi MySQL mà bạn đã liên kết đến:
Từ đó, có vẻ như bạn không thể có quyền truy cập đồng thời trong khi sao lưu và đồng thời chặn ALTER, DROP, RENAME và TRUNCATE.