參考:https://blog.csdn.net/zyhlwzy/article/details/80569422
參考:https://blog.csdn.net/tanfengshang0872/article/details/121446436
自己實際操作踩坑:
1.添加用戶那里指定IP 可以不指定 使用 ‘%’ 代替 表示允許所有主機連接
2. 更改 query_cache_type 配置項導致重啟mysql失敗 具體原因未研究
3.注意指定主服務器sql語句的准確性
CHANGE MASTER TO MASTER_HOST='192.168.51.115', MASTER_USER='master', MASTER_PASSWORD='Root_2019', MASTER_LOG_FILE='mysql-bin.000008', MASTER_LOG_POS=156;
CHANGE MASTER TO MASTER_HOST='192.168.51.115', # 主mysql服務器ip
MASTER_USER='master', # 主mysql創建用於主從同步的用戶
MASTER_LOG_FILE='mysql-bin.000008', # 主mysql 使用 show master status; 語句查看
MASTER_LOG_POS=156; # 主mysql 使用 show master status; 語句查看
設置雙主互為主從:
CREATE USER 'slave'@'%' IDENTIFIED BY 'XM_zm2019'; # mysql8.0 不能加identified by grant replication slave,replication client on *.* to slave@'%'; FLUSH PRIVILEGES; show master status\G; # 指定主節點同步 change master to master_host='192.168.51.116',master_user='slave',master_password='XM_zm2019',master_port=3306,MASTER_LOG_FILE='binlog.000012', MASTER_LOG_POS=156; start slave; # 啟動slave 報錯時 reset slave; # show slave status\G; 查看狀態 報錯'Could not find first log file name in binary log index file' 刷新主庫二進制文件,命令:flush logs; # show slave status\G; 查看狀態 第一行為 Slave_IO_State: Waiting for master to send event 代表從節點配置成功 # 互為主節點my.cnf配置 # 服務器1 #設置主從相關配置====start log-bin=mysql-bin server_id=1111 # 需要同步的數據庫名稱 binlog-do-db=shop_ds_master binlog-do-db=shop_ds_master1 # 不需要同步的數據庫 binlog-ignore-db=information_schema binlog-ignore-db=performation_schema binlog-ignore-db=sys # 每次執行寫入就與磁盤同步 sync-binlog=1 relay-log=mysql-relay-bin #開啟中繼日志 log_slave_updates = on #從服務器將時間記錄到二進制日志中 auto_increment_increment=2 #自動增長的步長 auto_increment_offset=1 #自動增長的起始數值 #設置主從相關配置====end # 服務器2 #設置主從相關配置====start log-bin=mysql-bin server_id=2222 # 需要同步的數據庫名稱 binlog-do-db=shop_ds_master binlog-do-db=shop_ds_master1 auto_increment_increment=2 auto_increment_offset=2 #設置主從相關配置====end
踩坑:
主從運行一段時間出錯,然后主從失效解決方案:
1、臨時方案
# 停止從服務 stop slave; # 跳過報錯行數據同步 set GLOBAL SQL_SLAVE_SKIP_COUNTER=1; # 開始從服務 start slave; # 查看從服務狀態 查看 Last_SQL_Errno show slave status\G;
2.如果是由索引重復報錯 並且不影響業務 可以選擇配置忽略此項錯誤
slave_skip_errors = 1062
3.解除數據庫主從復制關系
reset slave all;
備注:my.cnf中的寫法:
slave_skip_errors=1062,1053
slave_skip_errors=all
slave_skip_errors=ddl_exist_errors
關閉開啟記錄binlog
# 關閉 SET SQL_LOG_BIN=0; # 開啟 SET SQL_LOG_BIN=1;
配置文件中
log-bin=mysql-bin
指定了binlog文件的名稱 mysql-bin.000001
