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
⎛⎝官萧何⎠⎞一只快乐的爪哇程序猿;邮箱:1570608034@qq.com
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
2021-02-22 基于jquery 分页插件,前端分页、后端分页都可以 jquery.pagination.js