MySQL 系统库同步实践
本文介绍了 CloudCanal 实现 MySQL到 MySQL 系统库迁移同步的能力,帮助企业快速完成 MySQL 数据库权限数据迁移。
注意与限制
-
某些系统库表只读,对端写入这类系统表时会抛异常,如 information_schema 库的所有表 和 performance_schema 库中除了 setup_instruments 以外的所有表(setup_instruments最多只支持 select/update),故目前不支持这类库表迁移。
-
MySQL 8 版本以下的系统表中存在 非法的时间值,如 0000-00-00 00:00:00,同步到目标端时会 转成合法的时间。如:Timestamp:0000-00-00 00:00:00 转成 1970-01-01 00:00:01;Datetime:0000-00-00 00:00:00 转成 0001-01-01 00:00:00(虽然 MySQL 官网中声明的范围是从 1000-01-01 00:00:00 起,但实测是从 0001-01-01 00:00:00 起)。
-
Datetime 类型数据问题。
对于 1901-01-01 00:00:00 之前的数据,在增量同步过程中,如果时区是 Asia/Shanghai,对端会多出来额外的 5 分 43 秒。这是因为在 1901 年及其以前,时区不是标准化,对于 Asia/Shanghai 时区,UTC 的局部平均时间偏移是 +08:05:43,所以会多出来额外的 5 分 43 秒。其他时区也有类似的问题,具体可以从 https://www.timeanddate.com/time/zone/china/shanghai 网站查询。 -
不建议且不支持跨版本同步 mysql.help_category、mysql.help_keyword、mysql.help_topic、mysql.help_relation 这四张表。