2017-06-08 59 views
1

我是MySQL Master-Slave的初學者。binlog-do-db和replicate-do-db有什麼不同?

我已經閱讀了兩篇教程。

  1. How to Setup MariaDB (Master-Slave) Replication

  2. Setup MariaDB Master-Slave Replication


在第一教程。這讓我

[mysqld] Master section 

log-bin 

server_id=1 

replicate-do-db=employees 

bind-address=192.168.0.18 


[mysqld] SLAVE Section 

server_id=2 
replicate-do-db=employees 

但在第二個教程,它告訴我,

[mysqld] Master 
server_id=1 
log-basename=master 
log-bin 
binlog-format=row 
binlog-do-db=unixmen 

[mysqld] Slave 
server-id = 2 
replicate-do-db=unixmen 

爲什麼我應該LOCK TABLES,並mysqldump的SQL,然後將它導入?

FLUSH TABLES WITH READ LOCK; 

+0

這些設置實際上相當危險 - 它導致我們的數據庫缺失數據 - 請閱讀 - https://www.percona.com/blog/2009/05/14/why-mysqls-binlog-do-db-option -is危險/ – JosMac

回答

5

免責聲明:爲了使事情變得簡單,非混淆這裏,我講一個簡單的1個主 - 從1個設置。沒有鏈,沒有主人,或任何...

你的第一個教程是錯誤的,它應該是binlog-do-db那裏。

複製的工作原理是這樣的。

主設備將所有事務寫入其二進制日誌。
從設備從主設備二進制日誌讀取事務並將它們寫入其中繼日誌。
只有在這之後,從站才從其中繼日誌中執行語句。

binlog-do-db使主設備只將指定DB的語句寫入其二進制日誌中。

replicate-do-db使從站只從繼電器日誌讀取用於指定DB的語句。

replicate-do-db對主站沒有影響,因爲沒有中繼日誌讀取。


LOCK TABLES部分在那裏,以便數據一致。它可以防止在備份數據的過程中主服務器上的數據被修改。

您可以在從屬設備上從此備份中恢復數據庫,因爲當您設置從屬設備時,您並不總是從新設備啓動。因此,您只需在兩臺服務器上提供相同的數據基礎,然後告訴從服務器在哪個事務處理座標,並且您可以開始複製。您也可以在轉儲數據後解鎖主設備。只要確保在二進制日誌中的語句由於日誌旋轉而丟失之前及時獲得了slave。

相關問題