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

 

 
 
posted @ 2022-02-22 11:08  官萧何  阅读(948)  评论(0编辑  收藏  举报