实现主从复制的相关配置,参考:MySQL 8.0主从(Master-Slave)配置
部分命令
- 查询主数据库状态:
show master status\G;
- 查询从数据状态:
show slave status\G;
- 开启/停止从数据库复制:
start/stop slave;
- sql_slave_skip_counter
-- 在Slave跳过一个 Update_rows event 复制
set global sql_slave_skip_counter=1;
start slave;
sql_slave_skip_counter 参数的取值范围:[0, 4294967295]
sql_slave_skip_counter参数用于复制过程中从库可以自动跳过N个events。该参数不会立即生效,它从下一个start slave开始生效。
注意: MySQL 8.0.22 开始,start slave已经被start replica取代,此版本已弃用start slave。在8.0.22以前版本使用start slave
- slave-skip-errors
slave-skip-errors的作用就是用来定义复制过程中从库可以自动跳过的错误号,当复制过程中遇到定义的错误号,就可以自动跳过,直接执行后面的SQL语句。
slave-skip-errors=[err_code1,err_code2,…|all|ddl_exist_errors]
参数值:
- OFF: 默认值
- [list of error codes]
- all:忽略所有错误消息并继续运行。无法保证数据的完整性
- ddl_exist_errors:等价于错误代码列表 (1007,1008,1050,1051,1054,1060,1061,1068,1094,1146)
常见错误号:
1007:数据库已存在,创建数据库失败
1008:数据库不存在,删除数据库失败
1050:数据表已存在,创建数据表失败
1051:数据表不存在,删除数据表失败
1054:字段不存在,或程序文件跟数据库有冲突
1060:字段重复,导致无法插入
1061:重复键名
1068:定义了多个主键
1094:位置线程ID
1146:数据表缺失,请恢复数据库
1053:复制过程中主服务器宕机
1062:主键冲突 Duplicate entry ‘%s’ for key %d
实现:
在/etc/mysql.cnf(MySQL配置文件)中添加slave-skip-errors=1062,1061
,然后重启数据库或重新加载配置文件;
查看当前参数值:
show variables like 'slave_skip_errors';