准备配置

最近更新时间:2020-07-29 11:23:40

注意事项

  • 如果源数据库没有主键或唯一约束,且所有字段没有唯一性,可能会导致目标数据库中出现重复数据。
  • DTS在执行全量数据迁移时将占用源库和目标库一定的读写资源,可能会加重数据库压力。因此您需要在执行数据迁移前评估源库和目标库的性能,建议您在业务低峰期进行数据迁移。
  • 迁移期间,避免在目的数据库进行写入操作,否则可能引起数据不一致;
  • 对于迁移失败的任务,DTS会触发自动恢复。在您将业务切换至目标实例前,请务必先结束或释放该任务,避免该任务被自动恢复后,导致源端数据覆盖目标实例的数据;
  • 预检查中如果源库日志模式检查失败,源数据库修改binlog_format、binlog_row_image后请注意重启数据库,否则可能引起数据不一致。
  • 数据迁移期间注意不要手动删除binlog文件,否则可能引起迁移失败;
  • 数据迁移期间,避免会话级别修改binlog_format为ROW以外的其他模式,避免会话级别修改binlog_row_image为FULL以外的其他模式,否则可能引起迁移失败;
  • 如需迁移前后进行数据一致性校验,源数据库迁移账号需要具备SUPER权限;

准备配置

a、当您使用大陆机房的DTS服务时,需要根据源实例将下面相对应的外网IP段添加至安全组中,保障DTS服务能顺利访问到源实例.

120.92.71.0/24 

120.92.128.0/24

b、当您使用台湾机房的DTS服务时,需要根据源实例将下面相对应的外网IP网段添加至安全组中,保障DTS服务能顺利访问到源实例.

104.250.42.0

同时需要根据目标实例讲下面对应的IP网段添加至目标实例的安全组中,保障DTS服务能顺利访问到目标实例。

100.73.11.0

c、源库权限: 源库账号需要具备SELECT, RELOAD, LOCK TABLES,REPLICATION SLAVE, REPLICATION CLIENT, SHOW VIEW, EXECUTE,PROCESS, EVENT权限

授权语句:

GRANT SELECT, RELOAD, LOCK TABLES,REPLICATION SLAVE, REPLICATION CLIENT, SHOW VIEW, EXECUTE,PROCESS, EVENT on *.* TO 'user'@'host' IDENTIFIED BY 'password';

如果需要一致性校验:

源库账号需要具备CREATE,DROP,UPDATE,INSERT,SUPER 权限

授权语句

GRANT SELECT, RELOAD, LOCK TABLES,REPLICATION SLAVE, REPLICATION CLIENT, SHOW VIEW, EXECUTE,PROCESS, EVENT, CREATE, DROP, UPDATE, INSERT, SUPER on *.* TO 'user'@'host' IDENTIFIED BY 'password';

查看当前用户的权限:

查看当前用户:

mysql> select CURRENT_USER();
+----------------+
| CURRENT_USER() |
+----------------+
| [email protected] |
+----------------+
1 row in set (0.00 sec)

查看该用户权限:

mysql> show grants for [email protected]'localhost';

预检查项

源库连接性检查

  • 检查数据传输服务器是否能连通源数据库
  • 检查失败解决方案:请检查源数据库IP地址、端口、账户、密码是否正确,防火墙是否设置正确

目的库连接性检查

  • 检查数据传输服务器是否能连通目的数据库
  • 检查失败解决方案:请检查目标数据库账户、密码是否正确

源库版本检查

  • 检查源数据库的版本号
  • 检查失败解决方案:当前DTS支持迁移源数据库版本为MySQL5.5、MySQL5.6、MySQL5.7

源库权限检查

  • 检查源数据库的帐号权限是否满足迁移要求
  • 检查失败解决方案:DTS源数据库账户需具有Super权限

目的库权限检查

  • 检查目的数据库的帐号权限是否满足迁移要求
  • 检查失败解决方案:DTS目标数据库账户需具有读写权限

同名对象存在性检查

  • 检查目的库是否存在跟待迁移对象同名的结构对象
  • 检查失败解决方案:请修改迁移对象或者修改目的库名(是否可以指定目的库名和表名)

源端同名对象存在性检查

  • 检查源库schema的所有对象是否都存在
  • 检查失败解决方案:请修改迁移对象,确保迁移对象存在

源库server_id检查

  • 检查源数据库是否设置server_id大于1
  • 检查失败解决方案:源库server_id设置错误,请修改server_id大于1,修改命令为 set global server_id = xx

源库binlog开启检查

  • 检查源数据库是否开启binlog
  • 检查失败解决方案:源库未开启binlog, 请添加如下配置至源库 MySQL 配置文件my.cnf,并重启;log-bin=[自定义binlog文件名]

源库日志模式检查

  • 检查源数据库的日志模式是否合法
  • 检查失败解决方案:请设置源库binlog为row格式,修改命令为set global binlog_format=ROW;

约束完整性检查

  • 检查迁移表依赖的外键父表是否迁移
  • 检查失败解决方案:请将迁移表依赖的父表与迁移表一并迁移

存储引擎检查

  • 检查迁移表是否有不支持的存储引擎
  • 检查失败解决方案:请修改迁移对象,迁移对象支持MyISAM和INNODB引擎

系统变量检查

  • 检查源库和目的库中的关键系统变量是否一致
  • 检查失败解决方案:请将参数$v1, $v2 修改一致 (注意 data字段样例 {variablelist: “lower_case_table_names”})

检查MySQL密码格式

  • 检查MySQL是否使用老的密码格式
  • 检查失败解决方案:不支持老密码格式的数据库迁移

检查源库字符集

  • 检查迁移表是否有不支持的字符集
  • 检查失败解决方案:请修改迁移对象的字符集修改为utf8、gbk、latin1、utfmb4 中的一种

提醒:DTS数据迁移任务分为冷备数据导出和增量数据同步两步。其中,冷备数据导出以及迁移后的数据对比过程会对源库负载产生一定的影响,建议在业务低峰期或在备库上做数据库迁移。

金山云,开启您的云计算之旅

免费注册