master 172.16.0.137
slave 172.16.0.147
1、主從都安裝 MySQL-5.6.29版本
2、主從修改配置參數
gtid_mode=on
log_slave_updates=1 #表示從庫(級聯鏈式環節中既做主也做從的節點)既記錄relay log還要記錄binlog
enforce_gtid_consistency=1 或者=ON #強制GTID的一致性
server-id = 1 主庫
server-id = 2 從庫
關閉服務:mysqladmin -uroot -p shutdown
啓動服務:/etc/init.d/mysqld start
3、主庫
mysql> grant replication slave on *.* to '10bak'@'172.16.0.%' identified by '123456';
flush privileges;
4、從庫
mysql> change master to master_host='172.16.0.137',master_user='10bak',master_password='123456',MASTER_PORT=3306,master_auto_position=1;
flush privileges;
start slave; 啓動從庫
show slave status; 查看從庫
5、賦予權限 (主從)
grant all privileges on *.* to root@'%' identified by '123456'; #賦予root 所有權限
6、建數據庫,導入數據
create database xxx;
use xxx;
source /xxx/xxx.sql;
此時主從數據同步
7、設置從庫只讀模式
mysql> show global variables like "%read_only%"; 查看只讀
mysql> flush tables with read lock; #加鎖 (設置後主從不同步,在業務只讀表上才使用,一般需要同步的不設置)
mysql> set global read_only=1; #設置後處於只讀模式
該設置只是針對普通用戶而言,root用戶還是可以進行讀寫
設置一般用戶的權限:
1、從庫:GRANT select ON *.* TO 'abc'@'%' IDENTIFIED BY '123456' 此時ABC只能select權限
用戶abc從任何主機連接到MySQL 值具有查詢功能
2、mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456'
//賦予任何主機訪問數據的權限
報錯解決:
1062 主鍵衝突 從庫插入數據 主庫也插入了同樣數據 造成不同步
1、找到從庫數據刪除掉
2、跳過數據 如果需要跳過的 數據較多則重建同名表 在主庫備份表數據,在source進從庫的同名表 最後修改表名