文档

方案概述

更新时间:

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

升级方案概述

PolarDB MySQL版支持不同版本之间以及不同架构之间的大版本升级,整个过程中将自动为您创建目标版本的PolarDB集群,并从源集群同步数据。升级后的PolarDB MySQL版集群包含源PolarDB MySQL版集群的账号信息、数据库信息、IP白名单和必要的参数。

  • 版本之间升级。

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

  • 架构之间升级。

    PolarDB MySQL版集群版升级至PolarDB MySQL版多主集群(库表)。

  • 固定规格集群升级至Serverless集群。

具体的升级操作请参见升级步骤

升级方案优势

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

  • 升级链路免费。

  • 升级过程数据0丢失。

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

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

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

前提条件

PolarDB 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

其他限制

  • 不支持迁移新增库。如需迁移新增库,请前往DTS控制台,并修改同步对象,将新增库配置到正反向同步任务中。

  • 执行数据迁移前需评估源库和目标库的性能,同时建议业务低峰期执行数据迁移。否则全量数据迁移时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位点。

注意事项

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

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

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

  • 版本之间升级时,如果源集群的连接地址开启了SSL,并且您选择带地址切换来切换该地址,请确保目标集群对应的连接地址已开启SSL。

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

  • 架构之间升级时,由于PolarDB MySQL版多主集群(库表)的连接地址不支持开启SSL,如果源集群的连接地址开启了SSL,则在升级至多主集群(库表)时,不支持使用带地址切换。

  • 升级过程中,全量数据初始化时将占用源库和目标库一定的读写资源,可能会导致数据库的负载上升。

  • 升级过程中,全量数据初始化时会并发执行INSERT操作,导致目标数据库的表产生碎片,因此全量初始化完成后目标集群的表空间比源集群的表空间大。

  • 升级过程中,请勿手动释放DTS任务。

  • 全量数据同步需要一定时间,耗时与数据量大小有关,在此期间,目标端状态为创建中,请耐心等待。

  • 如果待升级的PolarDB集群是已有数据传输服务(DTS)的源集群或目标集群,则升级后需要将该DTS任务的源或目标集群修改为升级后的PolarDB集群。如数据同步任务、数据迁移任务以及数据订阅任务等。具体请参见修改DTS任务对象

收费规则

  • 大版本升级过程中,整个升级过程不收取额外费用,即:

    • 不收取DTS迁移和同步任务的费用。

    • 若目标PolarDB集群为按量付费集群时,目标集群在整个升级过程中不计费,而是在如下操作后才开始正常按量计费:

      • 完成升级后;

        说明
        • 升级完成以中断源集群和目标集群的同步链路为准。

        • 升级必须要在30天内完成。

      • 停止升级后(包括预校验失败时放弃迁移,以及迁移过程中取消升级)。

        此时目标集群已创建,但升级停止,若您不需要使用目标集群,请及时释放

    • 若目标PolarDB集群为Serverless集群,目标集群的状态变为运行中后,即开始计费。

    • 若目标PolarDB集群为包年包月集群,则在创建目标PolarDB集群时预支付对应的费用。

  • 对于源集群为包年包月的集群,执行完大版本升级后,若您不需要再使用源集群,则可以申请转单优惠退款,以节省资源和成本。

带地址切换

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

  • 版本之间升级连接地址对应关系图如下:

    从PolarDB升级

  • 架构之间升级(集群版升级至多主集群(库表))连接地址对应关系图如下:

    image

    架构升级支持用户指定源集群和目标集群切换的地址。如源集群的主地址与目标集群的集群地址进行切换、源集群的主地址与目标集群的自定义地址进行切换、源集群的集群地址与目标集群的自定义地址进行切换等。连接地址内部映射关系图如下:image

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

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

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

  • 版本之间升级选择带地址切换时,源集群和目标集群的主地址一定会切换,可以选择不切换或切换多组。

  • 架构之间升级选择带地址切换时,您可以选择源集群和目标集群的切换地址,可以选择不切换或切换多组。

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

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

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

升级评估

为了保证升级链路的顺利和更好的升级体验,PolarDB提供了升级评估功能,您可以校验在开始升级前,对实例状态、升级任务依赖、源实例属性信息等前提条件进行预校验,提前发现影响升级进度的前置条件并处理,以降低升级过程中的处理成本和资源成本。

具体操作说明,请参见升级评估