Master-Master互爲主備html
1:按照主從配置步驟將MasterB配置成MasterA的從庫;mysql
參考我這篇文章:http://www.cnblogs.com/xiaoit/p/3977843.htmlsql
2:確保MasterB沒有寫入,經過show master status命令在MasterB上獲得其同步點,再將MasterA配置成MasterB的從庫。數據庫
一般,爲了簡化邏輯,其中一個Master會設置爲只讀,正常只經過另一個Master進行讀寫。 若要兩邊都寫,爲了不自增id衝突,通常會設置奇偶錯開,即一臺的自增ID均爲奇數,另外一臺均爲偶數。spa
這裏假設你已經按照我第一篇文章作了主從。htm
配置實例:blog
1:在Master B(Slave)的配置文件中添加ip
port = 3307 log_bin = /var/lib/mysql/mysql-binlog
binlog_do_db = testSM
2:在MasterA(Master)的配置文件中添加文檔
prot=3306
master-host = 10.4.5.9 master-user = gechong1 master-password = gechong1 master-port = 3307 master-connect-retry = 5 replicate-do-db = testSM
3:在Master B(Slave)上建立複製帳號gechong1get
GRANT REPLICATION SLAVE ON *.* TO gechong1@'%' IDENTIFIED BY 'gechong1';
4:兩邊都重啓服務登錄數據庫
在Master A(Master)上查看
mysql> show master status; +---------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +---------------------+----------+--------------+------------------+ | mysql-binlog.000002 | 106 | test | | +---------------------+----------+--------------+------------------+ 1 row in set (0.00 sec) mysql> show slave status \G *************************** 1. row *************************** Slave_IO_State: Connecting to master Master_Host: 10.4.5.9 Master_User: gechong1 Master_Port: 3306 Connect_Retry: 5 Master_Log_File: Read_Master_Log_Pos: 4 Relay_Log_File: mysqld-relay-bin.000001 Relay_Log_Pos: 4 Relay_Master_Log_File: Slave_IO_Running: No Slave_SQL_Running: Yes Replicate_Do_DB: test Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 0 Relay_Log_Space: 106 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: NULL Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 2013 Last_IO_Error: error connecting to master 'gechong1@10.4.5.9:3306' - retry-time: 5 retries: 86400 Last_SQL_Errno: 0 Last_SQL_Error: 1 row in set (0.00 sec)
在MasterB(Slave)上查看
mysql> show slave status \G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 10.4.14.168 Master_User: gechong Master_Port: 3306 Connect_Retry: 5 Master_Log_File: mysql-binlog.000002 Read_Master_Log_Pos: 106 Relay_Log_File: mysqld-relay-bin.000006 Relay_Log_Pos: 254 Relay_Master_Log_File: mysql-binlog.000002 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: test Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 106 Relay_Log_Space: 558 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0 Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: 1 row in set (0.00 sec) mysql> show master status; +---------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +---------------------+----------+--------------+------------------+ | mysql-binlog.000001 | 327 | | | +---------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)
能夠看到 Master A:Slave_IO_Running: No
能夠參照第一篇文檔,從新配置參數便可。