自己实际操作踩坑:
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