Mysql

MariaDB/MySQL 備份複製

  • January 17, 2022

我目前有兩個帶有雙向複製的數據庫實例。每個都複製其他數據庫。所以兩者都是主人和奴隸。因此,這些數據庫中的任何一個更改都會自動複製到另一個。這工作正常。

但現在我需要一個只讀備份解決方案,它也將擁有一個完整的數據庫。當我只複製原始數據庫的第一個實例時,我的新備份剛剛在此實例上完成更改,第二個實例的所有更改都失去了。

所以可能唯一的方法是多源(多主)複製。這可以通過(MaridDB 語法)

CHANGE MASTER "A" TO MASTER_HOST = '192.168.8.2', MASTER_USER = 'replicator', MASTER_PASSWORD = '...', master_use_gtid = slave_pos;
CHANGE MASTER "B" TO MASTER_HOST = '192.168.8.3', MASTER_USER = 'replicator', MASTER_PASSWORD = '...', master_use_gtid = slave_pos;

我需要設置多個 gtid_slave_pos

SET GLOBAL gtid_slave_pos = "1-1-19124092,2-2-7060816";

這是一個有問題的部分。

我正在使用此語法將整個數據庫初始複製到第三台伺服器

sudo mysqldump --gtid --single-transaction --master-data dbName | pv | gzip > db-dump-fixed.sql.gz

它會自動放在那裡SET GLOBAL gtid_slave_pos='2-2-7027154';

**但是我怎樣才能獲得gtid_slave_pos第二個數據庫實例的電流呢?**它必須與執行時的狀態完全相同sudo mysqldump。如果我手動完成,我可能會錯過第二個數據庫中的一些事務。

我建議你在你log_slave_updates的兩個主人上啟用。然後他們會將複製的更改添加到自己的二進制日誌中,因此兩個實例的二進制日誌都將包含所有更改。那麼你就不需要多主複製了。

請參閱https://mariadb.com/kb/en/replication-and-binary-log-system-variables/#log_slave_updates

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