数据库管理平台DMP

深信服数据库管理平台(DMP)提供MySQL、Oracle的RDS功能,支持全生命周期管理、自动MySQL主从切换、故障自愈、事务一致性备份、监控告警等,能够实现业务快速上线、资源快速分发、数据安全保护,提供SLA保障,使数据库运维复杂度大幅下降,帮助客户减少被动性救火工作,专注业务创新。
点击可切换产品版本
知道了
不再提醒
DMP 2.3.7
{{sendMatomoQuery("数据库管理平台DMP","MySQL DTS")}}

MySQL DTS

更新时间:2024-07-23

功能说明

DMP 2.1.7及以上版本的DTS支持MySQL数据库迁移,底层调用mydumper工具,完成数据的迁移,包括迁移对象结构、数据,支持全量迁移或全量+增量迁移,全量+增量意味着迁移过程中如果产生了业务数据,也是可以同步到目标库中的。

前提条件

  1. DMP能访问到目标端数据库,且目标数据库为由DMP部署出来的MySQL RDS
  1. 目标端和源端数据库服务器网络连通,如果有防火墙,则需要放通数据库端口(如3306)。
  2. 源端的MySQL数据库版本为5.65.78.0

注意事项

  1. MySQL迁移之前,尽量关闭源库长查询操作,否则可能导致迁移失败。
  2. 当前版本不会迁移触发器trigger
  3. 源库是MySQL5.6.10版本时,不支持进行增量迁移。
  4. 禁止在目标库配置文件/etc/my.cnf设置登录密码。
  5. 不支持跨大版本迁移,如MySQL5.7迁移至MySQL8.0,可以MySQL5.6迁移至5.7
  6. 不支持降版本迁移。
  7. 按库迁移单次任务最多可以选择50个库。

操作步骤

详情可以参考《数据库迁移场景》章节。

  1. 进入[数据库/数据库工具/数据库迁移(DTS]页面,点击<新建迁移任务>按钮,根据需要选择“全量迁移”或者“全量+增量迁移”。

选项说明如下:

表46迁移选项说明

选项

说明

迁移类型

- 全量迁移:完整迁移源数据库的所选数据库表和及其完整数据,适用于能够接受较长停机时间的业务迁移、备份等场景

- 全量+增量迁移:除迁移初始全量数据外,还将实时同步增量数据至目标数据库,适用于业务连续性要求较高的业务迁移、备份等场景

设置迁移数据库

- 填写源库 IP、数据库端口,迁移用户和密码,选择目标端数据库

- 连通性测试通过后,点击<下一步>

设置迁移参数

 - 源数据库环境:根据实际情况选择

- 迁移范围:默认“整个实例”,可选按数据库迁移(最多选 50 个库)

- 迁移对象:表是默认必选项,用户、函数与存储过程、视图、事件可选项,公有云 RDS 默认不选择事件

- 并发数:加大并发可提升迁移速度,但可能对源端性能有影响

- SSL 安全连接”:是否启用 SSL 安全连接

- 迁移后数据校验:迁移后对库、表进行存在性以及内容校验,会延迟迁移时间,根据数量不同而时间不同

并发数

加大并发可提升迁移速度,但可能对源端性能有影响

迁移服务(DTS-VM)配置

用于执行迁移任务的工具,包括数据导出与导入、日志抽取与重放等;不会占用迁移配额,将占用少量计算和存储资源,网络要与源库、目标库、DMP 连通,默认迁移完成后将自动删除该云主机并释放对应的资源

  1. 点击<确定>按钮确认配置信息,自动创建DTSVM和进行预检查。

表47预检查项说明

检查项

说明

迁移实例检测

目标库实例状态检测:保证数据库处于正常运行的状态;不通过解决方案:重新选择正常运行的目标库,或者解决数据库异常。

正在迁移实例冲突检测

检测当前迁移实例是否与正在迁移的其他迁移任务产生冲突;不通过解决方案:等待冲突的迁移实例迁移结束,再执行当前迁移。

数据库连通性检测

目标库数据库连通性检测:目标库是RDS,正常情况连通性正常;目标库连通性不通过解决方案:按照连通性错误提示,检查用户密码和端口是否正常。

源数据库连通性检测

确保目标库可以通过客户端远程连接源库服务端;源库连通性不通过解决方案:按照连通性错误提示,检查用户密码和端口是否正常。

用户权限检测

检测当前源库迁移用户是否具有如下权限;警告选项:确保迁移用户拥有更多数据库权限,如果缺少,请手动进行grant

数据库架构检测

源数据库架构检测:主从或者单机结构;目标数据库架构检测:主从或者单机结构。

数据库版本检测

源库版本低于5.6,禁止迁移;目标库版本低于5.6,禁止迁移;不支持从高版本到低版本进行迁移。

数据库字符集检测

禁止不同字符集数据库之间进行迁移;不通过解决方案:更改目标库字符集[character_set_server=源库字符集]

存储引擎检测

默认存储引擎检测:检测源库和目标库的默认存储引擎default_storage_engine;警告选项:更改默认存储引擎[default_storage_engine=源库默认存储引擎]

默认临时存储引擎检测

检测源库和目标库的默认存储引擎default_tmp_storage_engine;警告选项:更改默认存储引擎[default_tmp_storage_engine=源库默认临时存储引擎]

InnoDB严格检查模式

测试目标库是否开启innodb_strict_mode;警告选项:更改参数[innodb_strict_mode=ON]

系统信息检测

表名大小写检测:检测源库和目标库表名大小写敏感是否一致lower_case_table_names;不通过解决方案:[lower_case_table_names=源库值]

迁移对象检测

计算每个schema的迁移数据行数,并显示。

SQL_MODE检测

检测源库和目标库的SQL_MODE约束参数是否一致;不通过:将目标库SQL_MODE参数设置与源库一致。

时区检测

对比time_zone时区参数是否一致;警告选项如果time_zone参数设置为SYSTEM,则对比system_time_zone参数;警告选项;如果源库tiem_zone参数设置未非标准时区,则自动安装扩展时区包。

源库信息检测

主从同步并发参数检测:主从迁移时,禁止slave_parallel_workers;不通过解决方案:目标库设置参数[slave_parallel_workers=0]

event列表检测

如果源库开启event_scheduler则目标库必须开启此参数;不通过解决方案:目标库设置参数[event_scheduler=ON]

目标库信息检测

检测目标库是否存在自建user;如果存在,给予警告,确保目标库是初始数据库;检测目标库是否存在自建database;如果存在,给予警告,确保目标库是初始数据库。

日志检测

binlog日志自动清理时间:建议expire_logs_days时间设置3天以上。

源库参数log_slave_updates检测

当数据库是主从时,建议开启log_slave_updates;不通过解决方案:开启参数[log_slave_update=on]

目标库参数log_slave_updates检测

当数据库是主从时,建议开启log_slave_updates;不通过解决方案:开启参数[log_slave_update=on]

server_id检测

server_id:数据库server_id 确保源库和目标库不一致;不通过解决方案:修改目标库server_id,并重启数据库服务;

server_uuid: 数据库server_uuid确保源库和目标库不一致;(克隆的机器server_uuid可能一致)

GTID检测

源库GTID_MODE检测:确保开启GTID_MODE。不通过:开启GTID_MODE=ON

源库enforce_gtid_consistency检测:确保开启enforce_gtid_consistency。不通过:开启enforce_gtid_consistency=ON

目标库库GTID_MODE检测:确保开启GTID_MODE。不通过:开启GTID_MODE=ON

目标库enforce_gtid_consistency检测:确保开启enforce_gtid_consistency。不通过:开启enforce_gtid_consistency=ON

binlog检测

源库log_bin检测:确保开启log_bin;不通过:开启log_bin=on

源库binlog_format检测:建议binlog_format=ROW,否则提示警告。源库binlog_row_image检测:确保binlog_row_image=FULL;不通过:更改参数[binlog_row_image=FULL]

目标库log_bin检测:确保开启log_bin;不通过:开启log_bin=on

目标库binlog_format检测:建议binlog_format=ROW,否则提示警告。目标库binlog_row_image检测:确保binlog_row_image=FULL;不通过:更改参数[binlog_row_image=FULL]

事务隔离性检测

检测源库和目标库事务隔离性是否一致;不通过:设置目标库隔离性为源库隔离性。

迁移用户建议使用 root (或者拥有最大权限的用户);若使用普通用户,如下为迁移所需的最小权限:dtsuser 为示例用户,可以替换成其他用户名

MySQL5.7 全量迁移用户权限

mysql> create user dtsuser@'%' identified by 'dtspassword';

mysql> grant select,event,show view,lock tables,replication slave,replication client,reload on *.* to dtsuser@'%';

MySQL5.7 全量+增量迁移用户权限

mysql> create user dtsuser@'%' identified by 'dtspassword';

mysql> grant select,event,show view,lock tables,replication slave,replication client,reload on *.* to dtsuser@'%';

MySQL8.0 全量迁移用户权限

mysql> create user dtsuser@'%' identified with mysql_native_password by 'dtspassword';

mysql> grant select,event,show view,lock tables,replication slave,replication client,reload,backup_admin on *.* to dtsuser@'%';

MySQL8.0 全量+增量迁移用户权限

mysql> create user dtsuser@'%' identified with mysql_native_password by 'dtspassword';

mysql> grant select,event,show view,lock tables,replication slave,replication client,reload,backup_admin on *.* to dtsuser@'%';

  1. 进入[数据库/数据库工具/数据库迁移(DTS]界面,找到相应的迁移任务,点击任务名称,进入[任务详情]页面,根据预检查告警,调整源库或目标库配置,并重新检查。预检查通过后,点击<开始迁移>按钮。
  2. 此步骤仅限增量迁移。在数据库迁移列表页面,迁移进度显示为无延迟的状态下, 点击<完成>来结束迁移过程,后续主库的数据不会再同步到备库中。
  3. 在任务中心观察迁移任务的进度,当任务完成后进度状态为“已完成”。