文档简介:
使用限制
数据库复制服务在使用上有一些固定的限制,用来提高数据迁移的稳定性和安全性。在进行正式的数据迁移之前,请先阅读以确保各数据库引擎已满足使用限制条件。
MySQL->RDS for MySQL迁移场景
在线迁移对环境有一些特定的要求,请确保环境配置满足以下条件。该类型的要求系统会自动检查,并给出处理建议。
MySQL数据库在线迁移 环境要求
类型名称 |
使用限制(DRS自动检查) |
数据库权限设置 |
l全量迁移权限要求: − 源数据库帐户需要具备如下权限:SELECT、SHOW VIEW、EVENT。 − 目标数据库帐号必须拥有如下权限:SELECT、CREATE、ALTER、DROP、DELETE、INSERT、UPDATE、INDEX、EVENT、CREATE VIEW、CREATE ROUTINE、TRIGGER、WITH GRANT OPTION。 l全量+增量迁移权限要求: − 源数据库帐户需要具备如下权限:SELECT、SHOW VIEW、EVENT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。 − 目标数据库帐号必须拥有如下权限:SELECT、CREATE、ALTER、DROP、DELETE、INSERT、UPDATE、INDEX、EVENT、CREATE VIEW、CREATE ROUTINE、TRIGGER、WITH GRANT OPTION。 l用户迁移权限要求: 用户迁移时,当源数据库为非阿里云数据库时,帐户需要有mysql.user的SELECT权限,源数据库为阿里云数据库,则帐户需要同时具有mysql.user和mysql.user_view的SELECT权限。目标数据库帐户需要有mysql库的SELECT,INSERT,UPDATE,DELETE权限。 |
迁移对象约束 |
l支持数据库、表、视图、索引、约束、函数、存储过程、触发器和事件的迁移。 l不支持系统库的迁移以及事件状态的迁移。 l不支持非Myisam、InnoDB表的迁移。 |
源数据库要求 |
l源数据库中的库名不能包含:'<`>/\以及非ASCII字符。 l源数据库中的表名、视图名不能包含:'<>/\以及非ASCII字符 lMySQL源数据库的binlog日志必须打开,且binlog日志格式必须为Row格式。 l在磁盘空间允许的情况下,建议源数据库binlog保存时间越长越好,建议为3天。 l建议将expire_log_day参数设置在合理的范围,确保恢复时断点处的binlog尚未过期,以保证服务中断后的顺利恢复。 l增量迁移时,必须设置MySQL源数据库的server_id。如果源数据库版本小于或等于MySQL5.6,server_id的取值范围在2-4294967296之间;如果源数据库版本大于或等于MySQL5.7,server_id的取值范围在1-4294967296之间。 lMySQL源数据库建议开启skip-name-resolve,减少连接超时的可能性。 l源数据库GTID状态建议为开启状态。 l源库不支持阿里云RDS的只读副本。 |
目标数据库要求 |
l不支持从高版本迁移到低版本。 l建议MySQL目标库的binlog日志格式为Row格式,否则增量迁移可能出错。 l目标数据库实例的运行状态必须正常。 l目标数据库实例必须有足够的磁盘空间。 l除了MySQL系统数据库之外,目标数据库不能包含与源数据库同名的数据库。 l建议目标库的事务隔离级别至少保证在已提交读。 lDRS迁移时会有大量数据写入目标库,目标库max_allowed_packet 参数过小会导致无法写入,建议将目标库max_allowed_packet参数值设置大一点,使其大于100MB。 |
针对一些无法预知或人为因素及环境突变导致迁移失败的情况,数据复制服务提供以下常见的操作限制,供您在迁移过程中参考。
MySQL数据库在线迁移 操作要求
类型名称 |
操作限制(需要人为配合) |
注意事项 |
l上表中的环境要求均不允许在迁移过程中修改,直至迁移结束。 l基于以下原因,建议您结合定时启动功能,选定业务低峰期开始运行迁移任务。 − 全量迁移会对源数据库有一定的访问压力。 − 迁移无主键表时,为了确保数据一致性,会存在3s以内的单表级锁定。 − 正在迁移的数据被其他事务锁死,导致读数据超时。 l相互关联的数据对象要确保同时迁移,避免迁移因关联对象缺失,导致迁移失败。常见的关联关系:视图引用表、视图引用视图、存储过程/函数/触发器引用视图/表、主外键关联表等。 l由于MySQL本身限制,若源库的一次性EVENT设定的触发时间在迁移开始前,该EVENT不会迁移到目标库。 l多对一场景下,创建迁移任务时,目标库读写设置需要跟已有任务设置为一致。 l增量迁移会过滤创建用户、删除用户及修改用户权限的DDL操作。 |
操作须知 |
l全量迁移过程中,不建议对源数据库的表进行修改、删除等DDL操作。 l在结束迁移任务时,将进行所选事件(event)和触发器(trigger)的迁移。请确保任务结束前,不要断开源和目标数据库的网络连通性,并在结束任务时关注迁移日志上报的状态,达到数据库完整迁移效果。 l迁移过程中,不允许修改、删除连接源和目标数据库的用户的用户名、密码、权限,或修改源和目标数据库的端口号。 l增量迁移场景下,不支持源数据库进行恢复到某个备份点的操作(PITR)。 l增量迁移过程中,若源库存在分布式事务,可能会导致迁移失败。 l由于无主键表缺乏行的唯一性标志,在网络不稳定情况下,迁移后,可能存在目标与源库数据不一致的情况。 l为了保持数据一致性,不允许对正在迁移中的目标数据库进行修改操作(包括但不限于DDL、DML操作)。 l增量迁移阶段,支持断点续传功能,在主机系统崩溃的情况下,对于非事务性的无主键的表可能会出现重复插入数据的情况。 l迁移过程中,不允许源库写入binlog格式为statement的数据。 l迁移过程中,不允许源库执行清除binlog的操作。 l选择表级对象迁移时,增量迁移过程中不建议对表进行重命名操作。 |
Microsoft SQL Server->RDS for Microsoft SQL Server迁移场景
在线迁移对环境有一些特定的要求,请确保环境配置满足以下条件。该类型的要求系统会自动检查,并给出处理建议。
SQL Server数据库在线迁移 环境要求
类型名称 |
使用限制(DRS自动检查) |
数据库权限设置 |
l全量迁移权限要求: − 源数据库权限:需要具备db_datareader、db_owner中的任何一种权限。 − 目标数据库权限:需要具备dbcreator或者CREATE ANY DATABASE的权限。 |
迁移对象约束 |
l当前版本暂不支持迁移如下数据库对象: − 程序集(Assemblies) − service broker − 全文索引 − 全文目录 − 空间索引 − hash索引 − xml索引 − 列存储索引 − 序列 − 分布式 schema − 分布式函数 − CLR存储过程 − CLR 标量函数 − CLR表值函数 − 内部表 − 聚合函数 − 系统 − 加密的数据库对象(视图、存储过程、触发器、函数) l当前版本暂不支持迁移如下数据类型: − sql_variant |
源数据库要求 |
l源数据库库名只能包含如下字符:字母、数字、下划线和中划线,库名长度不能超过64个字符。 l源数据库中的表名、视图名和触发器名不能包含如下字符:'<>"。 l不支持迁移源数据库中开启TDE(Transparent Data Encryption)加密的数据库。若不需要迁移TDE加密的库,请在对象选择中去掉;若需要迁移TDE加密的库,请先将TDE关闭。 l 源数据库若开启客户端配置中的“强制协议加密(Force Protocol Encrypton)”,必须同时开启“信任服务器证书(trust server certificate)”,如下图所示: 查看客户端属性
l源数据库模式必须设置为FULL模式。 l源数据库必须开启SQL Server Agent代理服务。 l源库中不允许存在被禁用的表的聚簇索引,否则会导致迁移失败。 l源库中不允许存在名称为cdc的用户名或shema。 |
目标数据库要求 |
l目标数据库实例必须有足够的磁盘空间。 l不支持目标数据库主备切换。 l仅支持从低版本迁移到高版本。 |
针对一些无法预知或人为因素及环境突变导致迁移失败的情况,数据复制服务提供以下常见的操作限制,供您在迁移过程中参考。
SQL Server数据库在线迁移 操作要求
类型名称 |
操作限制(需要人为配合) |
注意事项 |
l上表中的环境要求均不允许在迁移过程中修改,直至迁移结束。 l基于以下原因,建议您结合定时启动功能,选定业务低峰期开始运行迁移任务。 − 全量迁移会对源数据库有一定的访问压力。 − 迁移无主键表时,为了确保数据一致性,会存在3s以内的单表级锁定。 − 正在迁移的数据被其他事务锁死,导致读数据超时。 l相互关联的数据对象要确保同时迁移,避免迁移因关联对象缺失,导致迁移失败。常见的关联关系:视图引用表、视图引用视图、存储过程/函数/触发器引用视图/表、主外键关联表等。 l创建迁移实例后,必须确保迁移实例能够连通源数据库。 l目标数据库实例的运行状态必须正常。 l迁移过程中触发器为禁用状态,在迁移任务结束时,系统自动将触发器的状态恢复为原有状态。 |
操作须知 |
l不支持源数据库主备切换。 l当RDS实例异常引发目标数据库发生主备切换时,会导致迁移失败,该情况下的迁移任务不可恢复。 l迁移过程中,不允许修改、删除连接源和目标数据库的用户的用户名、密码、权限,或修改源和目标数据库的端口号。 l为保障数据一致性,对于只进行全量迁移的任务,在数据迁移期间请勿在源数据库SQL Server中写入新的数据。 l支持断点续传功能,但是对于无主键的表可能会出现重复插入数据的情况。 |