一次mysql数据库迁移导出导入后数据库存储过程丢失问题(已解决)

  • Post author:
  • Post category:mysql




一次


mysql


数据库迁移导出导入后数据库存储过程丢失问题


(


已解决


)

mysql版本5.7

最近公司项目在进行批量的数据库小版本升级,升级过程均为mysqldump全库后导入导新库中,批量导出导入完成一批数据库后,发现存在一个mysql数据库没有导入成功,并且发现原库中的存储过程也不在新库中。

最初怀疑是用户库导出有误(因为存储过程是与数据库账号绑定的),于是进行了第二次数据库迁移,同样,在mysqldump完成后,开始数据库导入,发现有数据库导入报错:


ERROR 1543 (HY000) at line 54437: ENDS is either invalid or before STARTS

错误提示为ends的时间在starts时间之前。表明mysqldump出的sql文件中的sql语句存在结束时间在开始时间之前,由于同时进行了多个mysql数据库集群的迁移,其它数据库集群均正常,所以mysqldump导出数据库的命令是正确的,怀疑是出问题mysql数据库原库的问题,通过调查分析mysql的配置参数,发现有mysql实际使用人员曾经通过在线设置的方式修改了mysql配置:


SET GLOBAL event_scheduler = ON;

经查阅资料,event_scheduler是MySQL定时器的开关,类似于windows操作系统的定时任务的概念,指定某个时间点执行一次定时任务,或者每隔一段时间循环执行定时任务,推测是由于该参数的开启导致mysqldump出的sql文件中存在结束时间在开始时间之前的情况。

之后临时将旧mysql数据库的event_scheduler参数设置为OFF重新进行数据库导出与导入,结果顺利完成数据库迁移,迁移完成后,再次将新库中的event_scheduler参数设置为ON。


待测试内容:event_scheduler参数设置为ON进行mysqldump导出无报错,如果设置新库event_scheduler参数设置为ON,测试数据库导入是否存在问题?


另外需要注意的一点是对于mysql主从复制的mysql集群event_scheduler参数设置为ON只可在主库中进行设置,若从库也设置event_scheduler参数为ON,则会导致主从数据库数据不一致,主从数据同步失效。


-------------------------------------------------------------------------------------------------------------



版权声明:本文为qq770935324原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。