概述

本章节介绍了PolarDB for MySQL集群之间的升级方案、前提条件、使用限制和收费规则等内容。

前提条件

PolarDB for MySQL集群系列为集群版。

升级方案

PolarDB for MySQL支持不同版本之间的升级,升级后的PolarDB for MySQL集群包含源PolarDB for MySQL集群的账号信息、数据库信息、IP白名单和必要的参数。

PolarDB for MySQL 5.6升级至PolarDB for MySQL 5.7,PolarDB for MySQL 5.6升级至PolarDB for MySQL 8.0.1等。

优势

  • 可保留数据库原来的连接地址,无需修改应用程序的任何连接配置即可切换至目标版本。

  • 升级完全免费。

  • 升级过程数据0丢失。

  • 支持增量迁移,停机时间小于10分钟。

  • 支持在线热升级,升级过程仅闪断一次。

  • 支持回滚操作,升级失败可以在10分钟内恢复。

注意事项

  • 如果源PolarDB for MySQL集群创建了触发器,请确认触发器是否会导致源和目标库的数据不一致。

    • 如果确认不会导致数据不一致,可以在升级任务预检查报错存在触发器时,单击继续升级并跳过触发器检查;

    • 如果有数据不一致风险,可以先删除触发器,再单击继续升级,或者单击取消升级后手动在DTS控制台页面创建迁移任务。具体可参见源库存在触发器时如何配置同步作业

  • 如果PolarDB for MySQL集群的连接地址开启了SSL,并且您选择带地址切换来切换该地址,请确保目标PolarDB for MySQL集群对应的连接地址已开启SSL。

  • 不支持为已加入全球数据库网络(GDN)的PolarDB for MySQL集群执行版本升级操作。

使用限制

类型

说明

源库限制

  • 带宽要求:源库所属的服务器需具备足够出口带宽,否则将影响升级速率。

  • 待迁移的表需具备主键或唯一约束,且字段具有唯一性,否则可能会导致目标数据库中出现重复数据。

  • 如需进行增量迁移,需开启Binlog日志,并且需要将控制台上的loose_polar_log_bin参数设置为ON。否则预检查阶段提示报错,且无法成功启动升级任务。

    说明

    当前DTS同步任务为全量迁移和增量迁移任务,DTS要求源数据库的本地Binlog日志至少保留7天以上(您可在全量迁移完成后将Binlog保存时间设置为24小时以上),否则DTS可能因无法获取Binlog而导致任务失败,极端情况下甚至可能会导致数据不一致或丢失。由于您所设置的Binlog日志保存时间低于DTS要求的时间进而导致的问题,不在DTS的SLA保障范围内。

  • 源库的操作限制:

    在库表结构迁移和全量迁移阶段,请勿执行库或表结构变更的DDL操作,否则数据迁移任务会失败。

SQL语句限制

  • 支持的DML操作如下:

    • INSERT

    • UPDATE

    • DELETE

  • 支持的DDL操作如下:

    • ALTER TABLE、ALTER VIEW

    • CREATE FUNCTION、CREATE INDEX、CREATE PROCEDURE、CREATE TABLE、CREATE VIEW

    • DROP INDEX、DROP TABLE

    • RENAME TABLE

    • TRUNCATE TABLE

    说明

    仅正向任务(源库同步至目标库)支持同步DDL操作,反向任务(目标库同步至源库)将自动过滤DDL操作。故在执行升级切换操作后,由于增量数据会通过反向任务从目标PolarDB同步至源PolarDB,请勿在目标PolarDB上执行DDL操作。

其他限制

  • 执行数据迁移前需评估源库和目标库的性能,同时建议业务低峰期执行数据迁移。否则全量数据迁移时DTS占用源和目标库一定读写资源,可能会导致数据库的负载上升。

  • 由于全量数据迁移会并发执行INSERT操作,导致目标数据库的表产生碎片,因此全量迁移完成后目标数据库的表存储空间会比源实例的表存储空间大。

  • 请确认DTS对数据类型为FLOAT或DOUBLE的列的迁移精度是否符合业务预期。DTS会通过ROUND(COLUMN,PRECISION)来读取这两类列的值。如果没有明确定义其精度,DTS对FLOAT的默认迁移精度为38位,对DOUBLE的默认迁移精度为308位。

  • DTS会尝试恢复七天之内迁移失败任务。因此业务切换至目标实例前,请务必结束或释放该任务,或者将DTS访问目标实例账号的写权限用revoke命令回收掉。避免该任务被自动恢复后,源端数据覆盖目标实例的数据。

其他注意事项

DTS会在源库定时执CREATE DATABASE IF NOT EXISTS `test`命令以推进Binlog位点。

费用说明

PolarDB for MySQL集群之间升级完全免费,仅收取新建计算节点的费用,新建计算节点计费规则请参见按量付费计费规则包年包月计费规则

带地址切换

PolarDB for MySQL集群之间的升级支持带地址切换,系统会自动交换源PolarDB for MySQL集群和目标PolarDB for MySQL集群上的连接地址。连接地址对应关系图如下所示:从PolarDB升级

使用带地址切换功能时,需要注意以下几点:

  • 带地址切换只会切换源PolarDB for MySQL集群和目标PolarDB for MySQL集群的域名,Vswitch和Vip等配置不会切换。

  • 仅当源PolarDB for MySQL集群和目标PolarDB for MySQL集群同时存在连接地址才支持相互切换,默认情况下仅私网主地址支持带地址切换。

  • 带地址切换时,源PolarDB for MySQL集群和目标PolarDB for MySQL集群的主地址一定会切换,可以选择不切换或切换多组。

  • 如需切换其他连接地址,您需在切换前创建好对应的连接地址,否则不会切换。关于如何为PolarDB集群创建连接地址,请参见申请集群地址和主地址

  • 带地址切换不会切换端口,请确保源PolarDB for MySQL集群和目标PolarDB for MySQL集群的连接端口一致(PolarDB默认使用的端口号为3306),如需修改端口,请参见修改连接地址和端口

  • 切换域名后,可能会存在DNS解析缓存问题,在缓存过期时间内可能会出现连接不上数据库或数据库只支持读操作而无法执行写入操作等情况,建议您刷新一下服务器的DNS缓存。

阿里云首页 云原生关系型数据库 PolarDB 相关技术圈