MySQL主从故障处理--session 级别参数复制错误

php中文网
发布: 2016-06-07 17:28:28
原创
1061人浏览过

接受新项目,主从数据库复制同步错误,Error Code 1292 (invalid datatype),查看服务器SQL_MODE 发现为空。这就奇怪啦,默认情

接受新项目,主从数据库复制同步错误,error code  1292 (invalid datatype)

报错SQL:update wave set IS_WAVED = 0,LEVEL = 1,SOURCE_TB_NAME = null,SOURCE_ID = null,UPDATE_TIME = '2013-03-10 02:13:36.0' where PLAYER_ID = 80406 and TYPE = 0;

时间格式肯定不对,

查看服务器SQL_MODE 发现为空。这就奇怪啦,默认情况下MySQL会将其转换为正确格式;

查看master该条记录情况,没有发生变化,由于Myisam存储引擎的原因,在该SQL执行错误时没有进行回滚删除binlog内容,(以后还是用Innodb吧!!)

mysqlbinlog解析binlog

mysqlbinlog --start-datetime="2013-04-11 08:37:56" --stop-datetime="2013-04-11 08:45:56" localhost-bin.001882 > /tmp/1.txt

发现该类似的语句全部执行成功,为什么唯独这个错误的 时间格式没有转换呢?

在binlog中发现以下线索:

SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;

燕雀Logo
燕雀Logo

为用户提供LOGO免费设计在线生成服务

燕雀Logo 101
查看详情 燕雀Logo

SET @@session.sql_mode=2097152/*!*/;

可以确定的错以上是由某工具或框架设定的。

下面我们看看这个session中 sql_mode的值;

set sql_mode=2097152;

mysql> show variables like '%sql_mode%';

+---------------+---------------------+
| Variable_name | Value |
+---------------+---------------------+
| sql_mode | STRICT_TRANS_TABLES |
+---------------+---------------------+

在session中 sql_mode 被设置为 STRICT_TRANS_TABLES (具体解释可参考:)

这个时候就可以让slave 跳过这些session设置就可以啦。

治本的办法是改动程序,但对于一个已经三年的项目,且没有固定人员负责的项目,DBA该如何权衡呢?

linux

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号