mysql5.7.10主从后续

主服mysql5.6.28,从服mysql5.7.10,其中主服是从5.5.15升级到5.6.28,升到5.6的原因上一篇已经说过了,都是uuid搞的鬼。

因为数据量庞大,用mysqldump导出sql再导入的办法不太可行,太慢,采用拷贝库文件的方法。

1、停掉主服,打包库目录和idata1,上传到从服。

2、备份从服的idata1文件,因为5.7的系统库默认引擎是innodb,不能简单覆盖idata1文件,然后再替换成从库的idata1文件。

3、从库解压主库传过来的库目录和idata1文件,重启从库,这时候系统库实际上是无法使用的,因为idata1文件被替换了。

4、将移过来的库,所有表引擎改成myisam,以释放idata1文件,然后恢复老的idata1文件,重启从服。

5、这个时候从库系统库也可以用了,移过来的库也ok了,唯一的问题是引擎全部变成myisam,这个不影响主从同步,如果是多主一从,还不能改回innodb,因为idata1文件只有一个,其他库移过来都会有冲突,也都要转成myisam引擎。

遇到的问题,datetime,timestamp等字段默认值,在mysql5.7版本里,不能设置成’0000-00-00’,必须设置成正确的时间范围,拿timestamp来说,如果时区设置是中国,最小默认时间戳是’1970-01-01 08:00:01’,注意那个1秒,少一秒都不行,所有设置了默认值,小于这个时间或者用触发器获取当前时间的,都要重新定义。

发表评论