一、master:(虛擬機cenOS7上)java
a:ip:192.168.35.129
mysql
b:修改 my.cnf
sql
# 爲了區分不一樣的mysql程序(只要mysql程序的數惟一) server-id=2 # master的執行語句記錄位置(slaver主要就是複製這上面的sql語句進行同步) log-bin=master-bin
c:訪問用戶及權限
centos
重啓: #:service mysql restart 添加slaver的權限 # mysql -u root -p # grant replication slave on *.* to 'sl'@'192.168.35.1' identified by '1234'; # flush privileges;
d:查看狀態tcp
#:show master status; 以下: mysql> show master status; +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | master-bin.00001 | 154 | | | | +------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.01 sec)
f:防火牆(centos7使用的是firewall)
ide
一、查看firewall是否打開了 3306端口 #:firewall-cmd --list-all 二、打開端口 #:firewall-cmd --add-port=3306/tcp --pernament
二、slaver (window上)
ui
a:ip:192.168.35.1
centos7
b:修改 my.cnf
spa
# 爲了區分不一樣的mysql程序(只要mysql之間的數惟一) server-id=3
c:開啓slaverrest
一、修改master mysql> CHANGE MASTER TO MASTER_HOST='192.168.35.129', MASTER_USER='sl',MASTER_PASSWORD='123', MASTER_LOG_FILE='master-bin.000001',MASTER_LOG_POS=0; (最後這一個是slaver從master日誌第幾行開始執行,通常出問題了都會在問題解決後,修改這一行) 二、開啓 mysql> start slave; 三、開啓狀態 mysql> show slave status\G;
(ps:紅色的兩個參數最重要,正常工做須要這兩個都是YES)
三、錯誤處理
問題:
在master添加一個庫:create database temp; 而這個時候slave早就有了這個表。slave就會關閉同步。以下
處理:(在slave中)
一、關閉 slave mysql > stop slave; 二、刪除temp庫 mysql > drop database temp; 三、修改存放的master信息(主要是 MASTER_LOG_POS,就是上圖的 Exec_Master_Log_Pos.) mysql> CHANGE MASTER TO MASTER_HOST='192.168.35.129', MASTER_USER='fxl',MASTER_PASSWORD='123', MASTER_LOG_FILE='mater-bin.000015',MASTER_LOG_POS=456; 四、啓動 mysql> start slave; 五、查看 mysql> show slave status\G; (若是 Slave_IO_Running和Slave_SQL_Running都是YES,也就正常了)
一、主主同步就是相互主從同步的關係。
二、主鍵處理須要將自增數分開<奇偶>(最好是使用uuid)
auto-increment-increment = 2 //每次增加2 auto-increment-offset = 2 //設置自動增加的字段的偏移量,即初始值爲2