Backup

MariaDB 複製和跨數據庫查詢

  • January 11, 2019

我需要改進不會載入生產伺服器的數據庫的備份。我讀到了一個很好的解決方案是設置數據庫複製並在從伺服器上執行 mysqldumps。

但是“replicate_do_db”的描述說更新不適用於跨數據庫查詢。這裡有一個問題——我有很多 PHP 應用程序(其中很少有人真的很舊),所以我不能保證他們不會使用這種查詢。而且我不想有不同步的數據庫……

有沒有其他選擇?或者只對知名應用程序使用複制,而對其他應用程序使用 mydumper/mysqldump?

我知道 Percona XtraBackup 存在,但我想要 .sql 格式的備份。

replicate_do_db告訴系統應該為哪些數據庫複製 SQL 查詢(我假設 SQL 複製,而不是行複制)。

這就像這樣工作,假設replicate_do_db = DB_1

mysql> use DB_1;
mysql> insert into Table_1 values (1,2,3);

現在這個插入語句將被複製到從屬主機。

mysql> use DB_2;
mysql> insert into DB_1.Table_1 values (2,3,4);

由於您在 DB_2 中工作,因此不會複製此插入語句,即使您碰巧在查詢中指定了 DB_1,也不會複製該語句。

mysql> user DB_1;
mysql> insert into DB_2.Table_2 values (9,8,7);

該插入語句被複製,因此如果從屬主機沒有 DB_2.Table_2,則複製將中斷。

簡而言之,這就是跨數據庫查詢問題。請注意,跨不同數據庫的選擇語句不是問題,因為只複製數據修改語句,而不是數據查詢語句。

假設如果主伺服器有許多在應用程序中使用和更新的數據庫,您將希望將這些更新全部複製到從屬主機,因此您需要使用replicate_do_db;指定所有這些數據庫 正如您所描述的那樣,我不認為這會成為您遇到的問題。

只需確保您對複制狀態進行了某種監控,這樣如果複製確實中斷,您就會盡快意識到問題,並可以在複製的數據變得太舊之前修復它。提示:show slave status;在從屬主機上檢查“Slave_IO_Running”和“Slave_SQL_Running”是否均為“Yes”。

我也是mk-table-checksum每天晚上用master和slave對比一下,看數據庫表是一樣的。

引用自:https://serverfault.com/questions/948617