Mysql

從 binlog 備份中排除表的複制忽略表設置和使用

  • December 28, 2016

我需要對遠端伺服器上非常大的 mysql 數據庫進行日常備份,我只想獲得自上次備份以來的差異。我還需要從備份中排除一些表。我已將 mysql 伺服器設置為主伺服器,這是我更改的 my.cnf 的重要部分:

log_bin = /var/log/mysql/mysql-bin.log expire_logs_days = 10 max_binlog_size = 100M binlog_do_db = my_database

然後在備份伺服器上,我像這樣設置了 mysql my.cnf:

replicate-ignore-table = my_db_name.my_table_name

為了測試一切正常,我執行以下操作:

在大師:

$ mysql -u root -p MariaDB [my_database]> insert into my_table (param1, param2, ...) values(1, 1, ...) MariaDB [my_database]> exit $ scp /var/log/mysql/mysql-bin.00000X vagrant@backupserver:/tmp/

在奴隸上:

$ mysqlbinlog mysql-bin.00000X | mysql -u root -p

當我檢查從數據庫時,我總是在表中看到新條目,但這不是預期的結果……

我必須錯過一些東西,知道嗎?

過濾器replicate-ignore-table僅應用流複製協議(在這種情況下特別是SQL 執行緒 Slave),如果您手動應用日誌更改,它不會影響您正在做的事情。如果您想完全了解複製過濾的機制,可以使用複制規則應用程序補充有關複製過濾的詳細資訊。

一個非常簡單的分步教程將允許您使用除了官方發行版中包含的工具之外的其他工具來設置標準副本。

雖然您不想複製表,但我建議您創建表結構但使用 BLACKHOLE 引擎來避免某些場景問題。

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