将MySQL迁移至TeleDB 本页介绍天翼云TeleDB数据库如何将MySQL迁移至TeleDB。 支持的源和目标数据库 源数据库 目标数据库 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倍。 迁移过程中,不允许修改、删除连接源和目标数据库的用户的用户名、密码、权限,或修改源和目标数据库的端口号。 迁移过程中,不允许对源库需要迁移的表结构进行修改。 选择表级对象迁移时,增量迁移过程中不建议对表进行重命名操作。 增量迁移场景下,不支持源数据库进行恢复操作。 增量迁移场景下,不支持对无主键表进行同步。 准备工作 1. 创建源库DTS用户 > 如果仅做测试用,可以直接使用MySQL的root用户作为迁移用户。 > 如果需要MySQL的精准迁移权限,可按照如下配置操作: > > GRANT SELECT ON MySQL. TO '迁移账号'@'%'; > GRANT SELECT ON 待迁移的库. TO '迁移账号'@'%'; > GRANT REPLICATION CLIENT, REPLICATION SLAVE, SHOW VIEW, PROCESS ON . TO '迁移账号'@'%'; 2. 创建目标库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 sessionreplicationrole 'replica'的权限。可登录TeleDB控制台,将该参数设置并重启。 3. 设置源库参数 > 以MySQL 5.7为例: > 在配置文件中加入以下参数: [mysqld] serverid 1logbinmysqlbin