Mysql主從配置操作

1- 兩個mysql服務器

主(master): 騰訊雲mysql version: 5.7.18
從(slave): 本地虛擬機mysql version: 5.7.21

2-配置master

1. 創建用戶:    
CREATE USER  '用戶名'@'%'  IDENTIFIED BY '密碼';
2. 賦予權限:   
GRANT REPLICATION SLAVE ON *.* TO  '用戶名'@'%' identified by '密碼';
3 導出所有數據(該命令在不用進入mysql)
mysqldump -h ip -P 端口 -uroot -p'密碼'  --set-gtid-purged=OFF --all-databases >文件名.sql

3-配置slave

1.數據導入從庫:
mysql -uroot -p‘密碼’ < 文件名.sql
2.從庫指向主庫:
CHANGE MASTER TO MASTER_HOST = '主庫IP', MASTER_USER = '同步用戶', MASTER_PASSWORD = '主庫密碼', MASTER_PORT = 主庫端口, MASTER_LOG_FILE='主庫binlog', MASTER_LOG_POS=主庫pos點;

注意: MASTER_LOG_FILEMASTER_LOG_POS 的值在2-3導出的文件中查找,
或者: 執行完2-3命令, 在master數據庫, mysql的help_topic表中查找

3: 開啓從庫的GTID(注意順序):
		set global gtid_mode='OFF_PERMISSIVE';
		set global gtid_mode='ON_PERMISSIVE';
		set global enforce_gtid_consistency=ON;
		set global gtid_mode='ON'  
6、啓動從庫
start slave;

4-查看主從狀態

master正常狀態:
在這裏插入圖片描述
slave正常狀態:
在這裏插入圖片描述

5-我在配置過程中出現的bug: Slave_IO_Running:NO, 查看slave的mysql錯誤日誌

1: Slave I/O for channel ‘’: The replication receiver thread cannot start because the master has GTID_MODE = ON and this server has GTID_MODE = OFF. Error_code: 1593

對slave進行操作:
執行:
		show global variables like 'gtid_mode';
發現     
		gtid_mode = off
需要重新執行:
		stop slave;
		set global gtid_mode='OFF_PERMISSIVE';
		set global gtid_mode='ON_PERMISSIVE';
		set global gtid_mode='ON' ;
		start slave;

2:緊接着又出現: Slave I/O for channel ‘’: Got fatal error 1236 from master when reading data from binary log: ‘Could not find first log file name in binary log index file’, Error_code: 1236

master上執行2個sql

   flush logs;
   show master status\G;

在這裏插入圖片描述

slave執行3個sql

stop slave;
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000006',MASTER_LOG_POS=190; (這兩個變量的值來源於master)
start slave;

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章