MySQL 8.0主從(Master-Slave)配置 雙主 互為主從 實現


參考: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

 

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM