本章节介绍了PolarDB MySQL版集群之间升级的常见问题。
升级评估中的检查项校验失败,需要如何处理?
分类
检查项
检查项校验失败的处理方法
源实例基本信息校验
源实例运行状态
源PolarDB集群的运行状态需要处于正常运行中。
源实例读写状态
源PolarDB集群的运行状态需要处于正常运行中,可读可写。
PolarDB服务关联角色
账号下已创建PolarDB服务关联角色。
您可以参考检查是否已创建PolarDB服务关联角色操作,或通过OpenAPI创建。
迁移任务依赖校验
DTS服务权限
您的阿里云账号需要已授予DTS访问云资源的权限。
您可以参考授予DTS访问云资源的权限操作。
源实例binlog校验
大版本升级前,源PolarDB集群需要开启Binlog。具体请参考开启Binlog。
源实例是否是空库
源PolarDB集群没有创建数据库。您需要在集群中创建数据库后才能进行升级。
源实例触发器校验
源PolarDB集群创建了触发器,请先删除触发器,否则将导致升级中断。
您可以在升级流程结束后,在目标PolarDB集群手动创建触发器。
源实例无主键表校验
源PolarDB集群存在没有主键的表,同步数据后可能会导致目标数据库中出现重复数据。
您可以通过在源PolarDB集群上通过高权限账号连接数据库,并执行如下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账号校验
为了避免迁移后目标PolarDB集群的系统账号被覆盖,源PolarDB集群中不允许同时存在root和aliyun_root账号。因此,在进行升级前,请先删除源集群中多余的系统账号。具体可参考删除源PolarDB MySQL版集群中多余系统账号。
Q:目标PolarDB MySQL版集群的节点规格需要和源集群的节点规格保持一致吗?
A:不一定,您可以按需选择目标PolarDB MySQL版集群的规格,建议不低于源集群的规格。
Q:升级前,是否需要提前购买集群?
A:不需要,升级过程中会创建并购买一个与源PolarDB MySQL版集群数据相同的集群。
Q:升级会影响源集群正常运行吗?
A:不会。
Q:同步数据对源集群性能有影响吗?
A:同步数据涉及查询操作,会消耗源集群部分查询性能。
Q:同步数据对业务有影响吗?
A:同步数据能够保证同步过程不丢失数据,停机(即暂停业务,不产生增量数据,而非停用数据库)时间小于10分钟,如果有需要还可以进行回滚。
Q:取消升级会有什么影响?
A:取消升级会有如下影响:
会切断源集群到目标集群的同步链路,导致源集群和目标集群不再关联。
目标集群恢复可读可写状态,且不会自动释放。若不再需要使用该集群,请尽快释放,避免产生额外费用。
手动取消升级时可以选择是否关闭集群的Binlog,自动取消升级时不会关闭Binlog。
说明关闭Binlog会带来少量的写入性能提升,Binlog关闭后,已有的Binlog文件会一直保留。您可以先缩短Binlog文件的保存时长,等待不需要的文件自动删除后,再关闭Binlog。关闭Binlog后集群会自动重启,重启任务会在5分钟之内完成,重启时服务闪断时间在40秒左右。具体时间与数据量和表数量相关,建议您在业务低谷期进行操作并确保应用程序具备重连机制。
Q:升级完成后,将业务切换至目标集群,应用程序端的连接地址是否需要修改?
A:您可以在升级切换时选择带地址切换(应用程序不用改连接配置),系统会自动交换源集群和目标集群的连接地址,而无需在应用程序端修改任何配置即可自动连接到目标集群。
Q:升级时选择了带地址切换(应用程序不用改连接配置),升级完成后,为什么目标集群仍然使用新的连接地址?
A:仅当源集群和目标集群同时存在的连接地址才支持相互交换,默认情况下,仅私网主地址支持带地址切换。如需切换其他连接地址,您需要在切换前创建好对应的连接地址,否则不会切换。创建集群连接地址详情请参见申请集群地址和主地址。
Q:业务切换成功后,为什么连接不上PolarDB数据库,或连接成功但只支持读操作而无法执行写入操作?
A:切换域名后,可能会存在DNS解析缓存问题,在缓存过期时间内可能会出现连接不上数据库或数据库只支持读操作而无法执行写入操作等情况,建议您刷新一下服务器的DNS缓存。
Q:升级切换后,为什么在PolarDB控制台上看不见完成升级按钮?
A:若您已经执行过完成升级操作,为了避免您重复执行该操作,此按钮将会被隐藏。
Q:升级成功后,还需要在目标集群中创建与源集群相同的账号和密码吗?
A:不需要,升级后的集群中将包含源集群的账号密码、数据库、IP白名单和必要的参数信息。
Q:源集群开启了SSL,能否执行版本升级操作?
A:能,已开启SSL的集群支持升级。
说明如果您选择升级的集群的连接地址开启了SSL,请确保目标集群对应的连接地址已开启SSL。
Q:源集群开启了TDE,能否执行版本升级操作?
A:能,已开启TDE的集群支持升级。
Q:源集群开启了SSL,能否升级至多主集群(库表)?
A:能,但升级后的多主集群(库表)不支持开启SSL。
Q:源PolarDB MySQL版集群开启了TDE,能否升级至多主集群(库表)?
Q:能,但升级后的多主集群(库表)不支持开启TDE。
Q:若在大版本升级前,源PolarDB MySQL版集群已开启了DTS数据同步任务,升级时是否会影响该任务?
A:不会。通过大版本升级进行迁移时,会先从源集群复制一份全量数据至一个新的PolarDB MySQL版集群,然后将增量数据保持同步至该新集群。源集群上DTS数据同步任务的数据源仍然是其自身,数据迁移至新的PolarDB MySQL版集群并不会影响源集群上的运行和操作。
在迁移切换后,源PolarDB变成只读。若其作为DTS数据同步任务的数据目标端,将无法写入。您需要将DTS数据同步任务的数据目标端修改成新PolarDB集群;若其作为DTS数据同步任务的数据源,也建议在迁移切换后尽快将DTS数据同步任务的数据源修改成新PolarDB集群。
目前仅支持通过OpenAPI修改DTS任务的源或目标库实例,具体请参见修改DTS任务的源或目标库实例。