主從伺服器要求版本一緻,至少大版本一緻; 示範主庫ip:192.168.3.104 示範從庫ip:192.168.3.103
一.主從配置
1.修改主伺服器(104)master
[[email protected] ~]# vim /etc/my.cnf
#在mysqld下面加入以下内容
[mysqld]
log-bin=mysql-bin #啟用二進制日志
server-id=104 #伺服器唯一ID,預設是1,一般取IP最後一段
replicate-do-db=jeesite #要同步的資料庫
binlog-ignore-db=mysql #要忽略的資料庫
binlog-ignore-db=test #要忽略的資料庫
expire_logs_days=7 #自動清理 7 天前的log檔案,可根據需要修改
2.修改從伺服器(103)slave
[[email protected] ~]# vim /etc/my.cnf
[mysqld]
log-bin=mysql-bin #啟用二進制日志
server-id=103 #伺服器唯一ID,預設是1,一般取IP最後一段
replicate-do-db=jeesite #需要同步的資料庫
3.重新開機2台伺服器
4.在主庫(104)上建立一個從庫用來讀取資料的賬号,并檢視主庫的二進制日志名和偏移量
mysql> GRANT REPLICATION SLAVE ON *.* to 'mySql_103'@'192.168.3.103' identified by 'mySql_103';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 | 606 | | mysql,test | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
5.在從庫(103)上執行以下指令
#填入主庫的ip/二進制檔案名/偏移量,填入主庫上開給從庫的賬戶及密碼
mysql> CHANGE MASTER TO
-> MASTER_HOST='192.168.3.104',
-> MASTER_USER='mySql_103',
-> MASTER_PASSWORD='mySql_103',
-> MASTER_LOG_FILE='mysql-bin.000002',
-> MASTER_LOG_POS=606;
Query OK, 0 rows affected, 2 warnings (0.01 sec)
#啟動從庫
mysql> start slave;
Query OK, 0 rows affected (0.01 sec)
#檢視是否配置成功(Slave_IO_Running與Slave_SQL_Running為YES說明配置成功)
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.3.104
Master_User: mySql_103
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000002
Read_Master_Log_Pos: 606
Relay_Log_File: localhost-relay-bin.000002
Relay_Log_Pos: 320
Relay_Master_Log_File: mysql-bin.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: jeesite
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
1.mysql複制介紹
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL4lFVNVTW65EMNpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZwpmL4kTNwMDM1EjMzEzMwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
标題
2.删除某個時間點之前的日志,示例(從服務執行)
mysql>purge binary logs before '2018-07-19 12:00:00';
3.停止主從(從服務執行)
mysql>stop slave;
4.删除從服務配置(從服務執行)
mysql>reset slave;
5.重置主服務配置(主服務執行)
mysql>reset master;
RESET MASTER将删除所有的二進制日志,建立一個.000001的空日志。RESET MASTER并不會影響SLAVE伺服器上的工作狀态,是以盲目的執行這個指令會導緻slave找不到master的binlog,造成同步失敗。
建議在主服務配置中加入以下配置
跳過指定類型的常見錯誤
slave-skip-errors=1062,1053,1146
不允許資料截斷,如果從庫類型大于主庫類型,是可以複制的,反過了,就不行了,從庫報複制錯誤,複制終止。
slave_type_conversions=ALL_NON_LOSSY
至此,主從配置完成, 轉載自:https://www.cnblogs.com/zhoujie/p/mysql1.html
二.主主配置(将上述主從反過來再配置一遍即可)
1.修改104伺服器(上述主庫,現是從庫)的配置
[[email protected] ~]# vim /etc/my.cnf
auto_increment_increment=2 #步進值auto_imcrement。一般有n台主MySQL就填n
auto_increment_offset=1 #起始值。一般填第n台主MySQL。此時為第一台主MySQL
2.修改103伺服器(上述從庫,現是主庫)的配置
[[email protected] ~]# vim /etc/my.cnf
auto_increment_increment=2 #步進值auto_imcrement。一般有n台主MySQL就填n
auto_increment_offset=2 #起始值。一般填第n台主MySQL。此時為第二台主MySQL
3. 重新開機2台伺服器
4.在103伺服器(上述從庫,現是主庫)上建立一個從庫用來讀取資料的賬号,并檢視主庫的二進制日志名和偏移量
mysql>GRANT REPLICATION SLAVE ON *.* to [email protected]'192.168.3.104' identified by 'mySql_104';
Query OK, 0 rows affected, 1 warning (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000004 | 5031 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.01 sec)
5. 在從庫104伺服器(上述主庫,現是從庫)上執行以下指令
mysql> CHANGE MASTER TO
-> MASTER_HOST='192.168.3.103',
-> MASTER_USER='mySql_104',
-> MASTER_PASSWORD='mySql_104',
-> MASTER_LOG_FILE='mysql-bin.000004',
-> MASTER_LOG_POS=5031;
Query OK, 0 rows affected, 2 warnings (0.02 sec)
mysql> start slave;
Query OK, 0 rows affected (0.02 sec)
在104上執行
mysql>show slave status\G
在103上執行
mysql>show slave status\G
主主配置完成 轉載位址:https://www.cnblogs.com/phpstudy2015-6/p/6485819.html
注意事項
1、主主複制配置檔案中auto_increment_increment和auto_increment_offset隻能保證主鍵不重複,卻不能保證主鍵有序。
2、當配置完成Slave_IO_Running、Slave_SQL_Running不全為YES時,show slave status\G資訊中有錯誤提示,可根據錯誤提示進行更正。
3、Slave_IO_Running、Slave_SQL_Running不全為YES時,大多數問題都是資料不統一導緻。
常見出錯點:
1、兩台資料庫都存在db資料庫,而第一台MySQL db中有tab1,第二台MySQL db中沒有tab1,那肯定不能成功。
2、已經擷取了資料的二進制日志名和位置,又進行了資料操作,導緻POS發生變更。在配置CHANGE MASTER時還是用到之前的POS。
3、stop slave後,資料變更,再start slave。出錯。
終極更正法:重新執行一遍CHANGE MASTER就好了。