您好,欢迎访问一九零五行业门户网

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

接受新项目,主从数据库复制同步错误,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/*!*/;
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该如何权衡呢?

其它类似信息

推荐信息