本章节罗列了部分RDS MySQL一键升级至PolarDB MySQL版的常见问题。
Q:迁移评估中的检查项校验失败,需要如何处理?
分类
检查项
检查项校验失败的处理方法
源实例基本信息校验
源实例运行状态
源RDS实例的运行状态需要处于正常运行中。
源实例读写状态
源RDS实例的运行状态需要处于正常运行中,可读可写。
源实例账号模式
如果源RDS实例处于高安全模式(数据库代理模式),需要创建一个具有高权限账号(具体请参见创建数据库和账号),或者切换到高性能模式(参见切换到高性能模式),才能进行一键升级。
PolarDB服务关联角色
账号下已创建PolarDB服务关联角色。
您可以参考检查是否已创建PolarDB服务关联角色操作,或通过OpenAPI创建。
迁移任务依赖校验
DTS服务权限
您的阿里云账号需要已授予DTS访问云资源的权限。
您可以参考授予DTS访问云资源的权限操作。
源实例是否是空库
源RDS实例没有创建数据库。您需要在实例中创建数据库后才能进行迁移。
源实例表引擎校验
仅表存储引擎类型为InnoDB或X-Engine的源RDS实例支持一键升级功能。
源实例触发器校验
源RDS实例创建了触发器,请先删除触发器,否则将导致迁移中断。
您可以在迁移流程结束后,在目标PolarDB集群手动创建触发器。
源实例无主键表校验
源RDS实例存在没有主键的表,同步数据后可能会导致目标数据库中出现重复数据。
您可以通过在源RDS实例上通过高权限账号连接数据库,并执行如下SQL,查询没有主键的表:
SELECT t1.table_schema, t1.table_name FROM information_schema.TABLES t1 LEFT OUTER JOIN information_schema.TABLE_CONSTRAINTS t2 ON t1.table_schema = t2.TABLE_SCHEMA AND t1.table_name = t2.TABLE_NAME AND t2.CONSTRAINT_NAME IN ("PRIMARY") WHERE t2.table_name IS NULL AND t1.table_type = "BASE TABLE" AND t1.TABLE_SCHEMA NOT IN ("information_schema", "performance_schema", "mysql", "sys") 。
您可以为查询出来的表添加主键。
如果您确认重复记录不影响,则可以忽略此项评估结果,在一键升级过程中出现该提示的时候选择继续升级。
源实例重点信息校验
源实例root账号校验
为了兼容RDS MySQL和PolarDB两者的系统账号体系,避免迁移后目标PolarDB的系统账号被覆盖,源RDS实例中不允许同时存在root和aliyun_root账号。具体可参考删除源RDS实例中多余系统账号。
Q:一键升级RDS MySQL至PolarDB MySQL版和一键克隆RDS MySQL至PolarDB MySQL版两者有什么区别?
A:两者间的区别如下表:
对比项
一键升级RDS MySQL至PolarDB MySQL版
是否支持迁移或同步增量数据
支持
不支持
是否影响源RDS操作
不影响
不影响
源和目标的MySQL版本能否不同
可以不同
可以不同
Q:升级后的PolarDB MySQL版节点规格需要和源RDS MySQL的实例规格保持一致吗?
A:不一定,您可以按需选择PolarDB MySQL版的规格,建议不低于源RDS实例规格。
Q:升级前是否需要先购买PolarDB MySQL版集群?
A:您无需提前购买PolarDB MySQL版集群,升级过程中既会购买并创建一个与源RDS实例数据相同的PolarDB集群。
Q:从RDS迁移会影响源RDS实例吗?
A:不会影响源RDS实例的正常运行。
Q:平滑迁移对源RDS实例性能有影响吗?
A:迁移不会影响源RDS实例上的使用操作,但数据迁移涉及查询操作,会消耗源RDS实例一部分的查询性能。
Q:平滑迁移对业务有影响吗?
A:平滑迁移能够保证迁移过程不丢失数据,停机(即暂停业务,不产生增量数据,而非停用数据库)时间小于10分钟,如果有需要还可以进行回滚。
Q:取消迁移会有什么影响?
A:取消迁移会有如下影响:
会切断源集群到目标集群的同步链路,源集群和目标集群不再关联。
目标集群恢复可读可写状态,且不会自动释放。若不再需要使用该集群,请尽快释放,避免产生额外费用。
手动取消迁移时可以选择是否关闭集群的Binlog,自动取消迁移时不会关闭Binlog。
说明关闭Binlog会带来少量的写入性能提升,Binlog关闭后,已有的Binlog文件会一直保留。您可以先缩短Binlog文件的保存时长,等待不需要的文件自动删除后,再关闭Binlog。关闭Binlog后集群会自动重启,重启任务会在5分钟之内完成,重启时服务闪断时间在40秒左右。具体时间与数据量和表数量相关,建议您在业务低谷期进行操作并确保应用程序具备重连机制。
Q:升级完成后,将业务切换到PolarDB,应用程序端的连接地址是否需要修改?
A:您可以在迁移切换时选择带地址切换(应用程序不用改连接配置),系统会自动交换RDS和PolarDB上的连接地址,您无需在应用程序端修改任何配置即可自动连接到PolarDB。
Q:迁移升级过程中如果目标端集群高权限账号缺乏部分权限,迁移升级过程中能否修改账号权限?
A:迁移升级过程中不能修改账号权限。目标端集群的高权限账号的权限将从源实例同步,如果迁移升级后缺少部分默认权限,可以在控制台-账号管理页面重置高权限账号的权限。
Q:迁移时选择了带地址切换(应用程序不用改连接配置),迁移完成后-为什么PolarDB集群仍然使用新的连接地址?
A:仅当源RDS和目标PolarDB集群同时存在的连接地址才支持相互切换,默认情况下仅私网主地址支持带地址切换。如需切换其他连接地址,您需在切换前创建好对应的连接地址,否则不会切换。关于如何为PolarDB集群和RDS实例创建连接地址,请参见管理连接地址和设置连接地址。
Q:源RDS实例中还包含只读实例,若选择带地址切换(应用程序不用改连接配置),只读实例的连接地址能否一并切换?
A:选择带地址切换(应用程序不用改连接配置)时,若PolarDB存在对应的集群地址或自定义地址,可以与源RDS中的只读实例连接地址切换。
Q:业务成功切换后,为什么连接不上PolarDB数据库或连接成功但只支持读操作无法执行写入操作?
A:切换域名后,可能会存在DNS解析缓存问题,在缓存过期时间内可能会出现连接不上数据库或数据库只支持读操作无法执行写入操作等情况,建议您刷新一下服务器的DNS缓存。
Q:一键升级到PolarDB前,能否先进行兼容性测试并简单评估迁移工作量?
A:您可以先通过一键克隆RDS MySQL至PolarDB MySQL版功能克隆一份数据到PolarDB进行兼容性测试和评估迁移工作量,测试没有问题后再参照本文操作一键升级至PolarDB。
Q:迁移切换后,为什么在PolarDB控制台上看不见完成迁移按钮?
A:若您已经执行过完成迁移操作,该按钮将会消失,避免您重复执行相同操作。
Q:一键升级至PolarDB后,还需要在目标PolarDB集群中创建与源RDS实例相同的账号和密码吗?
A:不需要。升级后PolarDB集群将包含源RDS实例的账号密码、数据库、IP白名单和必要的参数等信息。
Q:源RDS实例已开启了SSL,如何再迁移至PolarDB集群?
A:已开启了SSL的RDS实例支持一键升级至PolarDB集群,您可以通过物理迁移或逻辑迁移的方式进行迁移。
说明如果RDS实例的连接地址开启了SSL,并且您选择带地址切换并切换该地址,请确保PolarDB集群对应的连接地址已开启SSL。
Q:源RDS实例已开启了TDE,如何再迁移至PolarDB集群?
A:已开启TDE的RDS实例支持一键升级至PolarDB集群,您可以通过物理迁移或逻辑迁移的方式进行迁移。
Q:一键升级是否支持跨版本升级?如将RDS MySQL 5.6升级至PolarDB MySQL版 8.0版本?
A:一键升级中的逻辑迁移(DTS数据同步)方式支持跨版本升级。
Q:若在一键升级至PolarDB MySQL版前,源RDS实例已开启了DTS数据同步任务,升级时是否会影响该任务?
A:不会。通过一键升级进行迁移时,会先从RDS复制一份全量数据至一个新的PolarDB集群,然后将增量数据保持同步至该PolarDB集群。源RDS上DTS数据同步任务的数据源仍然是源RDS,数据迁移至PolarDB并不会影响源RDS上的运行和操作。
在迁移切换后,源RDS变成只读,若其作为DTS数据同步任务的数据目标端,将无法写入。您需要将DTS数据同步任务的数据目标端修改成新PolarDB集群;若其作为DTS数据同步任务的数据源,也建议在迁移切换后尽快将DTS数据同步任务的数据源修改成新PolarDB集群。
目前仅支持通过OpenAPI修改DTS任务的源或目标库实例,具体请参见修改DTS任务的源或目标库实例。