Mysql

mysql複製重建dump數據庫鎖

  • March 14, 2019

我需要在 innodb 上重建整個 mariadb 實例的主從複製。我經常看到的是人們先讀鎖然後轉儲主然後解鎖,比如:

FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
mysqldump --all-databases > all.sql
UNLOCK TABLES;

在這種情況下,主伺服器被鎖定很長時間。我的主人是生產,所以我寧願在不停機的情況下執行此操作。我的計劃是這樣做:

mysqldump --single-transaction --master-data --all-databases > all.sql

我是否正確地假設在這種情況下我不需要保持數據庫鎖和轉儲是一致的並且可以用來重建從機?我明白在我的陳述開始時會有短鎖。在我的情況下,我只是認為不需要執行額外的鎖定。那是對的嗎?

此外 –single-transaction 是否確保單個數據庫或整個實例的一致性?無論實例上有多少個數據庫或每個數據庫的新事務,它只是一個事務嗎?

–single-transaction 確保整個實例的一致性,所以是的,跨多個數據庫。

它假定大多數表都是事務性的(即 innodb)。對於 myisam 表,在轉儲它們的時間裡,這些表仍然被短暫讀取鎖定。

mysqldump 快照方法在手冊中。

引用自:https://dba.stackexchange.com/questions/232168