主192.168.56.20 和 從都新建數據庫db1 db2 db3(若是數據庫在用,須要上鎖後手動從主備份,而後在從恢復)
mysql> create database db1;
Query OK, 1 row affected (0.00 sec)mysql
mysql> create database db2;
Query OK, 1 row affected (0.00 sec)sql
mysql> create database db3;
Query OK, 1 row affected (0.01 sec)數據庫
主受權從的帳號vim
grant replication slave on . to 'repl'@'192.168.56.21' identified by 'repl';
flush privileges;
配置文件開啓bin-log
vim /etc/my.cnf
【mysql】
server-id=101 #每一個節點必須不同
log-bin=/var/lib/mysql/mysql-bin ide
重啓主服務
service mysqld restartrest
查看日誌文件和偏移量
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 120 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)日誌
從192.168.56.21
修改配置文件
vim /etc/my.cnf
server-id=109
重啓從節點服務
service mysqld restartcode
配置從庫
關閉複製功能
mysql> stop slave;
mysql>change master to master_host='192.168.56.20',master_user='repl',master_password='repl',master_log_file='mysql-bin.000001',master_log_pos=120;
啓動複製
Mysql>start slave;
檢查複製功能
mysql>show slave status\G
兩個進程須要yes才正常
Slave_IO_Running: Yes
Slave_SQL_Running: Yesorm
在主庫新建數據庫,而後去從庫看是否同步,同步表示正常。
create database hi_db;server
主從同步配置完畢,如今開始配置主主。
配置主配置文件192.168.56.20
vim /etc/my.cnf
【mysql】
server-id=101 #每一個節點必須不同
log-bin=/var/lib/mysql/mysql-bin
auto_increment_increment=2 #步進值auto_imcrement。通常有n臺主MySQL就填n
auto_increment_offset=1 #起始值。通常填第n臺主MySQL。此時爲第一臺主MySQL
#binlog-ignore=mysql #忽略mysql庫【我通常都不寫】
#binlog-ignore=information_schema #忽略information_schema庫【我通常都不寫】
#replicate-do-db=aa #要同步的數據庫,默認全部庫
重啓主節點服務
service mysqld restart
配置從配置文件192.168.56.21
vim /etc/my.cnf
server-id=109
log-bin=/var/lib/mysql/mysql-bin
auto_increment_increment=2 #步進值auto_imcrement。通常有n臺主MySQL就填n
auto_increment_offset=2 #起始值。通常填第n臺主MySQL。此時爲第2臺主MySQL
重啓從節點服務
service mysqld restart
在從節點建立主複製的帳號
grant replication slave on . to 'repl1'@'192.168.56.20' identified by 'repl1';
flush privileges;
查看二進制文件
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 420 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
在主執行
關閉複製功能
mysql> stop slave;
mysql>change master to master_host='192.168.56.21',master_user='repl1',master_password='repl1',master_log_file='mysql-bin.000001',master_log_pos=420;
啓動複製
Mysql>start slave;
檢查複製功能
mysql>show slave status\G
兩個進程須要yes才正常
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
而後分別在雙方建立數據庫,看看是否都同步。
一、主主複製配置文件中auto_increment_increment和auto_increment_offset只能保證主鍵不重複,卻不能保證主鍵有序。
二、當配置完成Slave_IO_Running、Slave_SQL_Running不全爲YES時,show slave status\G信息中有錯誤提示,可根據錯誤提示進行更正。 三、Slave_IO_Running、Slave_SQL_Running不全爲YES時,大多數問題都是數據不統一致使。 常見出錯點: 一、兩臺數據庫都存在db數據庫,而第一臺MySQL db中有tab1,第二臺MySQL db中沒有tab1,那確定不能成功。 二、已經獲取了數據的二進制日誌名和位置,又進行了數據操做,致使POS發生變動。在配置CHANGE MASTER時仍是用到以前的POS。 三、stop slave後,數據變動,再start slave。出錯。 終極更正法:從新執行一遍CHANGE MASTER就行了。