MySQL主从不一致的几种故障总结分析、解决和预防
mysql 解决 分析 总结 几种 主从 一致 预防
2023-09-11 14:19:38 时间
(1).主从不一致故障,从库宕机,从库启动后重复写入数据报错
解决与预防:
relay_log_info_repository=TABLE
(InnoDB)
参数解释说明:
若relay_log_info_repository为FILE,当设置为0,交由OS刷新磁盘,受参数sync_relay_log_info的影响,默认为10000次刷新到磁盘;
若relay_log_info_repository为TABLE,且为INNODB存储,则无论为任何值,则都每次event都会更新表。
relay_log_info_repository=table可以避免relay.info更新不及时,SLAVE 重启后导致的主从复制数据重复插入报错问题。
修改步骤:
1. stop slave;
2. set global relay_log_info_repository=’TABLE’;
或在my.cnf中设置:
relay_log_info_repository = TABLE
(2).主从不一致故障,主库宕机
解决与预防:
方法1:主库启动后,binlog补全即可
方法2:Innodb_flush_log_at_trx_commit=1
Innodb_flush_log_at_trx_commit参数值说明如下:
0 - 每一秒将修改记录同步到日志(磁盘)中,commit的时候不同步
1 - 每次事务commit都将修改记录同步到日志(磁盘)中
2 - 每次事务commit都将修改写入到操作系统cache中,然后每一秒将修改记录同步写入到日志(磁盘)中
方法3:应用程序双写
方法4:应用程序写日志
方法5:MySQL半同步(semi sync)
(3).主从不一致故障,从库数据被修改
通常报错总结如下:
ERROR:1032
从库找不到要删除的数据
ERROR:1062
从库插入数据,发生唯一性冲突
ERROR:1452
无法在外键的表插入或更新参考主键没有的数据
解决与预防:
1.设置用户权限
2.设置从库只读权限
set global read_only=true
解决与预防:
relay_log_info_repository=TABLE
(InnoDB)
参数解释说明:
若relay_log_info_repository为FILE,当设置为0,交由OS刷新磁盘,受参数sync_relay_log_info的影响,默认为10000次刷新到磁盘;
若relay_log_info_repository为TABLE,且为INNODB存储,则无论为任何值,则都每次event都会更新表。
relay_log_info_repository=table可以避免relay.info更新不及时,SLAVE 重启后导致的主从复制数据重复插入报错问题。
修改步骤:
1. stop slave;
2. set global relay_log_info_repository=’TABLE’;
或在my.cnf中设置:
relay_log_info_repository = TABLE
(2).主从不一致故障,主库宕机
解决与预防:
方法1:主库启动后,binlog补全即可
方法2:Innodb_flush_log_at_trx_commit=1
Innodb_flush_log_at_trx_commit参数值说明如下:
0 - 每一秒将修改记录同步到日志(磁盘)中,commit的时候不同步
1 - 每次事务commit都将修改记录同步到日志(磁盘)中
2 - 每次事务commit都将修改写入到操作系统cache中,然后每一秒将修改记录同步写入到日志(磁盘)中
方法3:应用程序双写
方法4:应用程序写日志
方法5:MySQL半同步(semi sync)
(3).主从不一致故障,从库数据被修改
通常报错总结如下:
ERROR:1032
从库找不到要删除的数据
ERROR:1062
从库插入数据,发生唯一性冲突
ERROR:1452
无法在外键的表插入或更新参考主键没有的数据
解决与预防:
1.设置用户权限
2.设置从库只读权限
set global read_only=true
相关文章
- mycat 链接mysql提示ERROR 3009 (HY000): java.lang.IllegalArgumentExceptio解决方式
- [PHP] ubuntu 16.04系统下解决MySQL 5.7版本的root用户重置密码问题
- Mysql授权允许远程访问解决Navicat for MySQL连接mysql提示客户端不支持服务器请求的身份验证协议;考虑升级MySQL客户端
- 【MySQL】解决mysql的 1594 错误
- 【MySql】MySQL Replication Fatal Error 1236
- VS Code First使用Mysql数据库详解
- mysql误删root用户或者忘记root密码解决方法
- MYSQL错误解决:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
- mysql 数据库导入导出
- MySQL高可用性之Keepalived+Mysql(双主热备)
- MySQL触发器简介
- 总结--解决 mysql 中文乱码
- MySQL内核月报 2014.11-MySQL· 5.7改进·Recovery改进
- 你还在 Docker 中跑 MySQL?
- 解决MySQL Server Logs不能正常查看的问题
- atitit.sql server2008导出导入数据库大的表格文件... oracle mysql
- Starting MySQL ERROR! Couldn‘t find MySQL server (/usr/local/mysql/bin/mysqld_safe)
- mysql报错 1142 - SELECT command denied to user ‘dev‘@‘localhost‘ for table ‘user‘ (已解决)
- MySQL Study之--Mysql无法启动“mysql.host”
- 000-mysql小技巧
- python web py入门(11)- 双重查询访问MYSQL数据库出错
- mysql分组GROUP BY常用sql
- 【Deepin 20系统】解决“phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接。您应该检查配置文件中的主机、用户名和密码,并确认这些信息与 MySQL 服务器管理员所给出的信”
- Mysql安装多台mysql
- MySQL出现“Lost connection to MySQL server during query”问题分析与解决
- MySQL 查看binlog日志方法