Master Server Configuration
server-id=伺服器代號(數字,範圍介於 1~232,每台伺服器代號必須唯一)
--binlog-do-db=資料庫名稱
使用參數,要注意使用的是 Statement-based 或是 Row-based 的 log 格式
在 statement-based 格式下,Replication 只會發生在 USE 資料庫與 --binlog-do-db 指定的資料庫相同,如果 USE 資料庫與 --binlog-do-db 資料庫不同,即使指令異動 --binlog-do-db 指定的資料庫,也是不會被 Replication 的
例如:
在 Statement-based logging format 下會被 Replication |
--binlog-do-db=db_a; USE db_a; UPDATE db_b.table_a SET field_1 = filed_1 + 100; |
在 Statement-based logging formate 下不會被 Replication |
--binlog-do-db=db_a; USE db_b; UPDATE db_a.table_a SET field_1 = filed_1 + 100; |
也就是說 在 statement-based logging format 下,指定 --binlog-do-db ,會受 USE 指令影響,
USE 與 --binlog-do-db 指定相同的 DB,才會被 Replication
但是在 Row-based 時,就不管 USE 哪個資料庫
只要是異動 --binlog-do-db 指定的資料庫,就會被 Replication
例如:
在 Row-based logging format 下會被 Replication |
--binlog-do-db=db_a; USE db_b; UPDATE db_a.table_a SET field_1 = filed_1 + 100; |
在 Row-based logging formate 下不會被 Replication |
--binlog-do-db=db_a; USE db_a; UPDATE db_b.table_a SET field_1 = filed_1 + 100; |
再來
如果在 Statement-base 下, USE 資料與 --binlog-do-db 指定的資料庫相同,且同時異動多個資料庫時,都會被 Replocation
例如:
在 Statement-based logging format 下會被 Replication |
--binlog-do-db=db_a; USE db_a; UPDATE db_a.table_a SET field_1 = 100, db_b.table_b SET field_2 = 50; |
但是如果是在 Row-based 下,上述指令中,只有 db_a.table_a 會被 Replication
當 Master Server 出問題時,要切換到 Slave Server ,可以使用 CHANGE MASTER TO 指令
要注意的是,使用 CHANGE MASTER TO / RESET SLAVE 指令時,必須先停止Slave Server 的 Replication,請使用 STOP SLAVE 指令
0 意見:
張貼留言