上章講了mysql已經把數據搬遷完成,但目前看起來理論上數據是一致的,故先把主從做上把。目的先實現吧
環境(此處ip,密碼均是亂造的):
主:192.1.31.161 端口:3306 用戶:vnum 密碼:vnum@123
從:192.1.31.162 端口:3306
1.防火牆放出3306
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload #重啓firewall
firewall-cmd --list-ports #查看已經開放的端口
2.主
配置:
#vim /etc/my.cnf
[mysqld]
log-bin = mylog //master必寫
server-id = 1 //master必寫
創建賬戶://主服務器上創建賬戶
mysql> grant replication slave,reload,super on *.* to 'slave'@'%' identified by '123';
mysql> flush privileges;
%在工作環境當中換成slave的主機名稱或者IP地址 密碼採用複雜密碼
重啓服務:
#/etc/init.d/mysqld restart //rhel6
#systemctl restart mysqld //rhel7
注意:如果不成功刪除以前的binlog日誌
replication slave:
擁有此權限可以查看從服務器,從主服務器讀取二進制日誌。
super權限:
允許用戶使用修改全局變量的SET語句以及CHANGE MASTER語句
reload權限:
必須擁有reload權限,纔可以執行flush [tables | logs | privileges]
3.從
安裝軟件
配置:
#vim /etc/my.cnf
[mysqld]
server-id = 2
log-bin=s1log //1.雙主的時候必須寫 2.gtid方式的ab複製必須寫
啓動服務:
#/etc/init.d/mysqld start /rhel5/6
#systemctl restart mysqld //rhel7
指定主服務器信息:
先去主服務器查看日誌信息:
mysql > show master status \G
從服務器上指定:
mysql> CHANGE MASTER TO
MASTER_HOST='10.1.31.161', //主服務器IP
MASTER_USER='vnum', //主服務器用戶
MASTER_PASSWORD='vnum@123', //用戶密碼
MASTER_PORT=3306, //端口
MASTER_LOG_FILE='mylog.001', //binlog日誌文件名稱
MASTER_LOG_POS=154, //日誌位置
MASTER_CONNECT_RETRY=10; //如果同步失敗的嘗試次數
啓動slave服務:
mysql > start slave; //關閉:stop slave
mysql > show slave status;
測試:
登錄slave
mysql> show slave status \G
如果沒成功:刪除從的binlog重啓服務
錯誤分析:
Slave_IO_Running: Connecting
1.網絡不通
2.賬戶密碼錯誤
3.防火牆
4.mysql配置文件問題
5.連接服務器時語法
6.主服務器mysql權限
Slave_IO_Running: No
1.網絡不通
2.mysql配置文件問題
3.mysql權限