支持的源和目标数据库
源数据库 | 目标数据库 |
---|---|
MySQL 5.7/8.0 | TeleDB |
支持的迁移范围
结构迁移 | 支持表、主键索引、唯一索引、普通索引的同步。 |
---|---|
DML | INSERT、UPDATE、DELETE |
DDL | 不支持 |
数据库账号及权限
数据库 | 所需权限 | 参考赋权语句 |
---|---|---|
源库 | (1) 对MySQL库的查询权限 (2) 对待迁移库的查询权限 (3) 部分全局权限REPLICATION CLIENTREPLICATION SLAVESHOW VIEWPROCESS (4) 如果是整实例迁移,需要对所有数据库的查询权限 |
GRANT SELECT ON MySQL.* TO '迁移账号'@'%'; GRANT SELECT ON 待迁移的库.* TO '迁移账号'@'%'; GRANT REPLICATION CLIENT, REPLICATION SLAVE, SHOW VIEW, PROCESS ON*.* TO '迁移账号'@'%'; |
目标库 | 存在结构 具有模式所在库的CONNECT权限、 模式所在库上的CREATE权限、 对象所在模式的USAGE权限、 对象所在模式上的CREATE权限 不存在结构 迁移库表的INSERT, UPDATE, DELETE, DDL 权限 |
-- 创建同步用户 (dts)CREATE USER dts WITH PASSWORD 'xxx'; grant usage on schema public to dts; grant ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO dts; grant CREATE on DATABASE public to dts;grant CREATE on schema public to dts; |
操作须知
DTS迁移过程一般包含四个阶段:预检查阶段、结构迁移阶段、全量阶段、增量阶段。为了确保迁移各个阶段的平顺,在创建迁移任务前,请务必阅读以下使用须知:
- 如迁移对象为表级别,则单次迁移任务仅支持迁移最多10000张表。当超出数量限制,任务会在提交后会请求报错。如果遇到这种情形,建议您拆分待迁移的表,分批配置成多个任务,或者配置为整库迁移。
- 源数据库GTID状态建议为开启状态,源数据库实例没有开启GTID的情况下DTS不支持主备HA切换,因为DTS任务会因为位点不续接而中断导致无法恢复。
- 目标库若已存在行数据,DTS在增量迁移过程中源库相同主键的数据将覆盖目标库已存在的数据,因此在迁移前需要用户自行判断数据是否需要清除,建议用户在迁移前自行清空目标库。
- MySQL源数据库的binlog日志必须打开,且binlog日志格式必须为Row格式。
- 在磁盘空间允许的情况下,建议源数据库binlog保存时间越长越好,建议为7天。否则DTS在增量迁移时可能因无法获取Binlog而导致任务失败。由于您所设置的Binlog日志保存时间低于DTS要求的时间进而导致的问题,不在DTS的SLA保障范围内。
- 目标库关联TELEDB实例必须有足够的磁盘空间,建议至少为待迁移数据量的2.5倍。
- 迁移过程中,不允许修改、删除连接源和目标数据库的用户的用户名、密码、权限,或修改源和目标数据库的端口号。
- 迁移过程中,不允许对源库需要迁移的表结构进行修改。
- 选择表级对象迁移时,增量迁移过程中不建议对表进行重命名操作。
- 增量迁移场景下,不支持源数据库进行恢复操作。
- 增量迁移场景下,不支持对无主键表进行同步。
准备工作
- 创建源库DTS用户
如果仅做测试用,可以直接使用MySQL的root用户作为迁移用户。
如果需要MySQL的精准迁移权限,可按照如下配置操作:
GRANT SELECT ON MySQL.* TO '迁移账号'@'%'; GRANT SELECT ON 待迁移的库.* TO '迁移账号'@'%'; GRANT REPLICATION CLIENT, REPLICATION SLAVE, SHOW VIEW, PROCESS ON . TO '迁移账号'@'%';
- 创建目标库DTS用户
如果仅做测试用,可以直接使用TeleDB的root用户作为迁移用户。
如果需要TeleDB的精准迁移权限,可按照如下配置操作:
CREATE USER dts WITH PASSWORD 'xxx';
grant usage on schema public to dts; grant ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO dts; grant CREATE on DATABASE public to dts; grant CREATE on schema public to dts;
如果要做增量迁移且迁移的表包含外键,那么除了上述权限外,还要保证该用户具有在会话级别执行SET session_replication_role = 'replica'的权限。可登录TeleDB控制台,将该参数设置并重启。
- 设置源库参数
以MySQL 5.7为例:
在配置文件中加入以下参数:
[mysqld]
server-id = 1log_bin=mysql_bin # 开启binlog并设置格式
binlog_format=row
binlog_row_image=full
expire_logs_days=7 # binlog日志保留时间
gtid-mode = on # 开启gtid
enforce-gtid-consistency = 1
default-time_zone = '+8:00' # 设置时区,解决CST夏令时的问题
max_connections = 1000 # 设置最大连接数
- 重启MySQL。
- 确认待迁移对象中是否包含触发器。
如果将触发器作为结构的一部分,在DTS的调度逻辑上,触发器会先于全量迁移被迁移到TeleDB。这样可能会影响到全量迁移,导致数据不一致。
建议将触发器放到全量迁移之后,再新建一个迁移任务进行迁移。
- 数据及业务信息统计
如果为非测试任务,需要在迁移之前统计业务以及迁移信息,方便进行迁移任务规划。
- 资源信息:
源库规格信息,例:4C8G + 500G + SSD
目标库磁盘信息:例:4C8G + 500G + SSD
网络情况:例:为测试环境纯内网传输,无复杂的网络拓补结构
- 数据信息:
总数据量,例如30GB
总库表数量:例:40个库,8000张表,2000个视图,5个触发器
每日新增数据量级,例:一天的binlog日志新增大概100GB
是否所有表都有主键,建议迁移前完善主键,提高性能,方便运维。
注意如果存在无主键的表,则增量阶段源端对应表的增、删、改操作不会同步至目标端,可能导致数据不一致,请谨慎评估。
- 业务类
规划迁移批次,例:规划分3次进行迁移,迁移时间每天晚上20:00-06:00,日期为2023-09-18至2023-09-20。
注意实际迁移操作请与数据库全量备份操作错开,以免交叉影响,否则可能会导致备份失败,同时影响迁移效率。
数据迁移是否可停业务,例:能/不能
增量迁移情况,例:开启增量迁移,持续时间5天
可停业务时间长度,例:服务停机时间预计48小时
业务中是否存在百万级别的大事务,例:存在,涉及对表CLOUD.LOGS进行大事务操作,存在一个存储过程用不带where条件的delete语句定期清理该表。
操作步骤
-
进入迁移页面单击TeleDB-DCP数据库管理平台左上角,可跳转到DTS管理服务页面。
-
数据页面列表实例开通后,存在待配置状态实例,单击操作列的 实例配置 ,进入配置页面。
-
配置源库及目标库信息
- 进入实例配置第一个步骤的配置源库及目标库信息页面,填入源库与目标库的相关配置信息,包括数据库类型、IP地址端口、数据库账号、数据库密码等信息。TeleDB的连接信息可以从TeleDB管理控制台看到,选择协调节点的主节点信息进行连接。在测试环境下,源库所在主机可通过连接网线到测试样品内网,并指定IP地址后,填写相应信息。
- 完成上述信息的填写后,单击源数据库和目标数据库的检测联通性并进行下一步按钮进行数据库连接测试,检查数据库能否正常连接。
- 进入实例配置第一个步骤的配置源库及目标库信息页面,填入源库与目标库的相关配置信息,包括数据库类型、IP地址端口、数据库账号、数据库密码等信息。TeleDB的连接信息可以从TeleDB管理控制台看到,选择协调节点的主节点信息进行连接。在测试环境下,源库所在主机可通过连接网线到测试样品内网,并指定IP地址后,填写相应信息。
-
配置迁移对象及高级配置
源库和目标库连通性测试成功后,进入实例配置第二个步骤的配置迁移对象及高级配置页面,在“源库对象”中展开库后,选择要迁移的源库对象,选中后单击“>”按钮,将待迁移对象移动到“已选择对象”中。
-
预检查并启动。
完成迁移对象和高级配置后,单击 下一步预检查 ,进入实例配置第三个步骤的预检查****并启动页面。预检查会检查如下列表信息,并给出检查结果,用户可以依据检查结果进行下一步操作。
检查项 检查内容 待迁移表主键检查 检查待迁移表是否都存在主键。 存储引擎检查 检查源库中待迁移表的存储引擎是否满足要求。 源库binlog存在性检查 查看源库的binlog文件是否被误删除。 源库binlog影像类型检查 查看源库的binlog_row_image参数是不是FULL。 源库binlog是否开启检查 查看源库的log_bin参数是不是ON。 源库binlog模式检查 查看源库的binlog_format参数是不是ROW。 源库binlog保留时间检查 检查源库的binlog保留时间是否满足要求 源库和目标库字符集一致性检查 检查源库和目标库的字符集是否一致。 源库用户权限检查 检查源库用于DTS任务的用户是否具有相应的权限。 源库连通性检查 检查数据传输服务能否连通源数据库。 目标库用户权限检查 检查目标库用于DTS任务的用户是否具有相应的权限。 目标库连通性检查 检查数据传输服务器能否连通目标数据库。 约束完整性检查 检查待迁移对象中所有表的约束外键所属对象是否被选中。
如果预检查通过,可单击【预检查】页面底部的“启动迁移”按钮,开始迁移任务。也可以直接单击 “数据迁移”页签,返回数据迁移列表。注意,如果预检查中有错误项,数据迁移将无法开始;如果有警告项,数据迁移任务可以运行,但可能会出现一些问题。
直接返回迁移列表,迁移任务将处于未启动状态。
勾选实例,然后单击 开始任务 ,直到数据迁移实例完成(没有增量迁移),或者处于增量迁移状态。运行到增量迁移后,如果显示未运行,稍等一会会进入增量运行中。