数据传输服务(dts)下分多个具体功能:包括数据迁移(migration)、数据同步(replication)

数据迁移特点:

  • 支持跨账号迁移: 目前只支持MongoDB产品,MySQL、Redis等产品还未接入(可选【源接入类型】为“公网”以实现跨账号功能)
  • 支持整实例迁移
  • 迁移过程中目标库不能写

数据同步特点:

  • 只支持MySQL产品同步数据(也是通过将一端的库设为公网地址实现跨账号功能)
  • 不支持整实例迁移,需要人工手动迁移账号权限数据(如mysql.user表)
  • 同步过程中目标库可写,默认情况下是单向同步,在满足一定条件下可以实现源、目标库双同步(目标库也需要公网地址)

两者最后都会处于一个增量同步的状态,可根据实际情况决定是否手动结束。

数据迁移–从公网迁移到云数据库操作步骤:

一、 新的(目标)腾讯云MySQL实例

版本不低于源数据库实例

初始化字符集,需要和源数据库实例一致

二、 源数据库实例开启公网地址

迁移前最好刷新生成新的binlog文件,以便操作以后的增量数据的同步

1
2
3
4
5
#查看binlog文件
mysql> show binary logs;

#刷新生成新的binlog文件
mysql> flush logs;

三、 新建数据迁移任务

地址: https://console.cloud.tencent.com/dts/migration?rid=4&page=1&pagesize=20 选择整实例,全量+增量 数据一致性的全量检测需要super权限,腾讯云MySQL不提供此权限,所以选择不进行检测 因为是冷备导出导入,所以非增量同步的数据可以不考虑数据一致性 图片

图片

增量同步过程中目标库处于只读状态,必须整个迁移任务完成之后才可以通知业务方更改数据库地址

5G的数据大概需要15分钟完成同步(根据数据库实例的配置)

四、 迁移完成后

更改业务的数据库地址

源数据库实例是否需要关闭公网地址

五、 如果源数据库实例再出现增量数据

尽量避免这种情况,可以通过禁止源库更新,通知业务方变更新库的IP地址。

因为传输任务完成后,则无法再次使用此任务进行增量同步。如果此后源数据库实例再出现修改,需要获取源库相应的binlog文件,使用mysqlbinlog导入。

相关操作步骤如下:

1、 根据要恢复到的时间点,确认需要同步的binlog文件并下载到有mysql相关工具的机器上;

   如名为: mysql57_binlog_mysqlbin.001852

2、 根据迁移完成后的时间点(如'2021-06-17 12:01:00’),可以使用此时间点作为binlog文件的start-datetime,恢复操作如下

    mysqlbinlog mysql57_binlog_mysqlbin.001852 --start-datetime='2021-06-17 12:01:00' | mysql -uroot -h hostname -P port -p

数据同步操作

一、 源库增加权限

1
2
3
GRANT RELOAD,LOCK TABLES,REPLICATION CLIENT,REPLICATION SLAVE,SELECT ON *.* TO '迁移帐号'@'%' IDENTIFIED BY '迁移密码';
GRANT ALL PRIVILEGES ON `__tencentdb__`.* TO '迁移帐号'@'%';
FLUSH PRIVILEGES;

二、 购买数据同步服务

购买页面: https://buy.cloud.tencent.com/dts

三、 进入同步任务配置页面进行配置

配置基本和数据迁移的配置相同