升级步骤

更新时间:
复制 MD 格式

本章节介绍了PolarDB MySQL集群之间升级的操作步骤。

前置检查

检查是否已创建PolarDB服务关联角色

在升级之前,请先检查是否已创建PolarDB服务关联角色,以及是否已授予DTS访问云资源的权限

  • 检查是否已创建PolarDB服务关键角色

    1. 使用阿里云账号(主账号)前往RAM控制台身份管理>角色列表。

    2. 检查角色列表中,是否已存在名为AliyunServiceRoleForPolarDB的服务关联角色,如下:在搜索框中输入角色名称 AliyunServiceRoleForPolarDB 进行搜索,确认列表中存在该服务关联角色。

      • 若存在,请跳过当前检查步骤。

      • 若不存在,则继续执行以下步骤。

    3. 单击创建角色,在打开的创建角色页面中,单击右上角的创建服务关联角色

    4. 在打开的创建服务关联角色页面中,选择信任的云服务AliyunServiceRoleForPolarDB,并单击创建服务关联角色以完成创建。

  • 检查是否已授予DTS访问云资源的权限

    以下为您展示如何查看授权结果以及快速授权的方式。更多信息,请参见授予DTS访问云资源的权限

    查看授权结果

    1. 使用阿里云账号(主账号)前往RAM控制台身份管理>角色列表。

    2. 检查角色列表中,是否已存在名为AliyunDTSDefaultRole的角色,如下:在搜索框中输入 AliyunDTSDefaultRole,确认该角色是否存在于角色列表中。

      1. 若不存在,请前往快速授权

      2. 若存在,则继续执行以下步骤检查当前角色权限。

    3. 单击角色名称,查看AliyunDTSDefaultRole的详细信息。

      • 当角色AliyunDTSDefaultRole同时满足如下条件时,表示授权成功。

        • 权限管理中包含系统策略AliyunDTSRolePolicy

        • 信任策略中包含dts.aliyuncs.com

          即信任策略 JSON 中 PrincipalService 字段包含 dts.aliyuncs.comActionsts:AssumeRoleEffectAllow

      • 当角色AliyunDTSDefaultRole不满足上述条件时,表示授权失败,需要重新授权。您可以删除角色AliyunDTSDefaultRole,重新授权。

    快速授权

    使用阿里云账号(主账号)访问AliyunDTSDefaultRole快捷授权页面,在访问控制快速授权页面中,单击确认授权

    说明

删除源PolarDB MySQL集群中多余系统账号

避免迁移后目标PolarDB MySQL集群的系统账号被覆盖,源PolarDB MySQL集群中不允许同时存在rootaliyun_root账号。因此,在进行升级前,请先删除源PolarDB MySQL集群中多余的系统账号。

PolarDB MySQL各个版本的正确系统账号名如下:

数据库引擎版本

正确的系统账号名

MySQL 5.6

root

MySQL 5.7

aliyun_root

MySQL 8.0

root

在上述版本中,除相应的正确系统账号外,其他系统账号均需被删除。例如,PolarDB MySQL 5.7集群的正确系统账号为aliyun_root。若您在控制台中手动创建了root账号,则需将其删除。在删除之前,请确保您的业务中未使用root账号。

说明

系统账号可能是您手动创建的,也可能是系统创建并因版本升级而遗留的。在某些情况下,该账号可能不会在控制台中显示。

示例

以清理PolarDB MySQL 5.6集群中多余系统账号为例,具体删除步骤如下:

  1. 使用高权限账号连接数据库

  2. 找到所有的rootaliyun_root系统账号。

    SELECT * FROM mysql.user WHERE `user` IN ('root', 'aliyun_root');
  3. 删除多余的系统账号。PolarDB MySQL 5.6集群正确的系统账号是root,因此需要删除aliyun_root账号。

    DELETE FROM mysql.user WHERE `user` = 'aliyun_root' LIMIT n;

(可选)智能压测

在执行大版本升级之前,您可以使用该智能压测功能,模拟演练您的业务流量运行在目标版本的PolarDB集群上的场景,帮助您:

  • 验证您的集群规格是否需要扩容,以有效应对业务流量高峰;

  • 分析原版本和目标版本的PolarDB集群在SQL模板方面的执行性能差异等。

智能压测详细操作步骤请参见流量回放与压测

步骤一:从PolarDB升级迁移

通过该步骤,您将创建一个与源PolarDB MySQL集群数据相同的集群,源PolarDB MySQL集群的增量数据会实时同步至该集群。

说明
  • 使用DTS迁移时,全量数据初始化时将占用源库和目标库一定的读写资源,可能会导致数据库的负载上升,您可按需调整迁移速率

  1. 登录PolarDB控制台

  2. 在集群列表页上方,单击创建新集群,进入集群购买页面。

  3. 计费类型选择包年包月按量付费Serverless

    • 包年包月:在创建集群时支付计算节点的费用,而存储空间会根据实际数据量按小时计费,并从账户中按小时扣除。

    • 按量付费:无需预先支付费用,计算节点和存储空间(根据实际数据量)均按小时计费,并从账户中按小时扣除。

    • Serverless:无需预先支付费用,计算节点、存储空间、数据库代理等资源在集群使用过程中基于实际需求动态弹性扩缩,并根据扩缩的实际用量来计费。

  4. 根据实际使用场景,设置以下参数。

    说明

    以下表格中未详细介绍的参数, 请参考购买集群

    参数

    说明

    创建方式

    选择PolarDB升级迁移

    地域

    选择源PolarDB MySQL集群所在地域。

    PolarDB版本

    PolarDB MySQL集群的版本。您可以选择5.6、5.78.0。

    PolarDB集群

    选择源PolarDB MySQL集群。

    数据库引擎

    目标集群的数据库引擎版本。

      说明
      • 版本之间升级时,您可以选择与源集群相同的版本,也可以选择跨版本。

      • 架构之间升级时,必须选择MySQL 8.0

    产品版本

    与原集群的产品版本保持一致,无需选择。

    系列

    目标集群的系列。

    说明
    • 版本之间升级时,选择集群版【推荐】

    • 架构之间升级时,选择多主集群(Limitless)

    CPU架构

    与原集群的CPU架构保持一致,无需选择。

    节点个数

    与原集群的节点个数保持一致,无需选择。

    当前选择规格

    目标集群的节点规格。

    数据库代理类型

    与原集群的数据库代理规格保持一致,无需选择。

  5. 在右上角检查集群配置信息,设置购买时长(针对包年包月集群)、购买数量是否自动续费

  6. 阅读并勾选服务协议。单击立即购买

  7. 支付页面,确认未支付订单信息和支付方式,单击订购

    说明
    • 支付成功后,需要等待10~15分钟创建集群,之后您就可以在集群列表中看到新创建的集群。

    • 当集群中的节点状态为创建中时,整个集群可能仍未创建完成,此时集群不可用。只有当集群状态为运行中时,集群才可以正常使用。

    • 请确认已选中正确的地域,否则无法看到您创建的集群。

    • 若预检查失败,目标实例将保持创建中状态,升级流程无法自动推进。请根据错误信息处理预检查失败项后,单击继续升级按钮以推进流程。此时创建时长可能超过 15 分钟,属正常现象。

  8. 集群创建成功后,单击集群ID进入集群基本信息页。

  9. 基本信息页的PolarDB升级功能区域,确认目标PolarDB集群的复制延迟小于60秒即可进行操作。

    说明
    • 已存在DTS双向同步的集群无法进行一键升级,可能会出现数据不一致问题

    • 集群创建后,DTS开始从源PolarDB集群同步数据,您需要在30天内完成升级,超过30天将自动关闭升级功能。

    • 您可以在该区域选择放弃升级,放弃升级后的影响请参见常见问题

    • 若状态显示为预检查失败,请根据错误信息进行处理。

      例如,如果源PolarDB集群中创建了触发器,则预检查会失败并报错“PolarDB集群存在触发器”。请先删除PolarDB的触发器,再单击继续升级,或单击放弃升级后手动在DTS控制台页面创建迁移任务。具体可参见源库存在触发器时如何配置同步或迁移作业

    • 架构升级时,目标集群默认的写入点为MasterID=1RW节点,为确保DTS数据同步任务的正常运行,在升级完成之前,始终保持在该RW节点进行写入。

步骤二:地址补齐(可选)

PolarDB大版本升级支持带地址切换,您可保留数据库原连接地址,无需应用程序修改任何连接配置即可切换至新的PolarDB。需要注意,仅当源PolarDB和目标PolarDB集群同时存在的连接地址才支持相互切换,默认情况下目标端仅创建私网主地址和私网集群地址,如果源端包含2个以上的连接地址,您需在切换前在目标端创建好对应的连接地址,否则不会切换。关于如何为PolarDB集群创建连接地址,请参见管理连接地址

说明
  • 在目标端集群会变成运行中后,才可进行地址补齐操作。此外您还可以根据业务需要,进行地址属性配置、集群参数配置、只读节点补齐等操作。

  • 使用带地址切换交换私网地址前,请确保源PolarDB和目标端PolarDB集群属于同一个VPC,否则切换后原有服务将无法连接。

步骤三:升级切换

目标PolarDB集群的复制延迟小于60秒时,即可进行升级切换操作。

  1. 登录PolarDB控制台

  2. 找到目标集群,单击集群ID。

  3. 基本信息页面的PolarDB升级功能区域,单击升级切换

    说明
    • 一般情况下,升级在5分钟之内即可完成。

    • 该操作将交换源PolarDB集群和目标PolarDB集群的读写状态,即将源PolarDB集群修改为只读,将目标PolarDB集群修改为可读可写。同时,DTS会更换数据复制方向,即将目标PolarDB集群的新增数据同步到源PolarDB集群。

  4. 升级切换对话框中,选择带地址切换(应用程序不用改连接配置)不带地址切换(应用程序需要改为新的PolarDB连接配置)。对话框中展示了PolarDB连接地址目标链接地址的映射关系。

    • 若您选择带地址切换(应用程序不用改连接配置),操作步骤如下:

      1. 选中带地址切换(应用程序不用改连接配置)。系统会自动交换源PolarDB和目标PolarDB上的连接地址,您无需在应用程序端修改任何配置即可自动连接到目标PolarDB集群。

        重要
        • 选择带地址切换(应用程序不用改连接配置)前,请务必阅读带地址切换注意事项

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

      2. 单击确定。

    • 若您选择不带地址切换(应用程序需要改为新的PolarDB连接配置),操作步骤如下:

      1. 勾选不带地址切换(应用程序需要改为新的PolarDB连接配置)。

      2. 单击确定。

      3. 刷新页面,当目标PolarDB读写状态显示为读写后,尽快修改应用中的数据库连接地址。

说明
  • 升级切换完成后,如果您发现数据存在异常等问题,可以进行回滚操作,快速恢复至升级前的状态也可以选择升级回滚

  • 架构升级完成并切换完成后,为避免DTS数据同步任务异常,请务必不要修改目标多主集群(Limitless)的写入点。

步骤四:源实例DTS任务切换(可选)

说明

若源实例存在关联的DTS链路(非一键迁移DTS链路),您可使用此功能修改(替换)DTS同步或迁移任务的源或目标库实例,平滑切换关联业务,实现原理和注意事项参考修改DTS任务的源或目标库实例

  1. 进入PolarDB控制台

  2. 找到目标集群,单击集群的ID。

  3. 基本信息页面的PolarDB迁移功能中,单击源实例DTS任务切换

  4. 切换业务DTS数据库对话框中,选择源实例DTS任务(正向切换)目标实例DTS任务(切换回滚)

    重要

    切换前,请先检查源实例和目标实例同步数据的DTS状态,详细DTS状态查询,请参见DTS状态查询

    源实例DTS任务(正向切换)

    若您选择源实例DTS任务(正向切换),操作步骤如下:此时显示DTS任务列表,包含DTS任务名同步状态源库实例目标库实例等列。

    1. 请选择您需要迁移切换数据库实例的DTS任务。

    2. 单击提交正向切换

    目标实例DTS任务(切换回滚)

    若您选择目标实例DTS任务(切换回滚),操作步骤如下:

    操作界面与源实例DTS任务(正向切换)页签类似,此处显示需要切换回滚的DTS任务列表。

    1. 请选择您需要迁移切换数据库实例的DTS任务。

    2. 单击提交切换回滚

说明
  • 源实例DTS任务(正向切换)适用迁移切换后将源实例的DTS任务切换到目标实例,在迁移切换后,完成迁移前的DTS任务操作。

  • 目标实例DTS任务(切换回滚)适用于切换回滚后将目标实例的DTS任务切换回源实例,在切换回滚后,取消迁移前操作。

步骤五:完成升级

完成步骤一:从PolarDB升级后,您需要在30天内完成升级操作。

重要
  • 请确保在单击完成升级前,数据已完成迁移,并且后续不再使用数据同步功能。

  • 由于该操作会中断源PolarDB集群和目标PolarDB集群间的数据同步任务,且不再提供升级回滚功能,建议您使用一段时间目标PolarDB集群,确认正常后再执行完成升级操作。

  1. 登录PolarDB控制台

  2. 找到目标集群,单击集群ID。

  3. 基本信息页面的PolarDB升级功能区域,单击完成升级

  4. 完成升级对话框中,您可以选择是否关闭PolarDB集群的Binlog,并单击确定

    说明
    • 单击确定后,系统将在2分钟之内中断同步关系,升级状态将显示为关闭同步

    • 如果您选择了关闭Binlog,PolarDB集群会自动重启使新配置生效。

    • 如果不再需要源PolarDB集群,可以选择释放源PolarDB集群。释放集群详情请参见释放集群

    • 如果您执行的是架构升级操作,在完成升级对话框中单击确定后,目标集群的写入点将恢复至初始状态,即数据库将随机指定RW节点为写入点。

查看数据同步任务详情(可选)

在版本升级的过程中,若升级报错或出现其他异常时,您可以前往对应的DTS数据同步任务详情页查看数据同步任务的详细信息。

  1. 登录PolarDB控制台

  2. 找到目标集群,单击集群ID。

  3. 基本信息页面的PolarDB升级功能区域,单击DTS数据同步任务的任务名称,进入DTS控制台的数据同步任务列表。

  4. 在数据同步任务列表中,找到对应的数据同步任务,您可以查看同步任务详情和同步任务日志等。

  5. 在升级过程中,如果需求有调整(如源PolarDB集群有新增库时,需要将新增加的库也纳入同步对象),您可以单击修改同步对象来重新配置。

升级回滚(可选)

在完成升级之前,如果您发现数据存在异常等问题,可以执行升级回滚操作,将集群快速恢复至升级前的状态(源PolarDB集群为可读可写,目标PolarDB集群为只读,同时会将源PolarDB集群的数据同步至目标PolarDB集群)。升级回滚完成后,如果需要继续执行大版本升级操作,您可以直接从步骤三:升级切换操作开始执行。

  1. 登录PolarDB控制台

  2. 找到目标集群,单击集群ID。

  3. 基本信息页面的PolarDB升级功能区域,单击升级回滚

  4. 在开始回切对话框中,选择带地址回切(应用程序不用改连接配置)不带地址回切(应用程序需要改为源实例连接配置)

    • 若您选择带地址回切(应用程序不用改连接配置),操作步骤如下:

      1. 选中带地址回切(应用程序不用改连接配置),系统会自动交换源PolarDB集群和目标PolarDB集群上的连接地址,你无需在应用程序端修改任何配置即可自动回切到源PolarDB集群。

      2. 单击确定

        此时,源PolarDB集群为可读可写,目标PolarDB集群为只读,同时会将源PolarDB集群的数据同步到目标PolarDB集群。

        说明

        执行架构升级回滚操作时,您可以根据需要选择回滚地址。

    • 若您选择不带地址回切(应用程序需要改为源集群连接配置),操作步骤如下:

      1. 选中不带地址回切(应用程序需要改为源集群连接配置),在升级切换完成后,您需要尽快修改应用程序端的数据库连接池地址。

      2. 单击确定,此时,源PolarDB集群为可读可写,目标PolarDB集群为只读,同时会将源PolarDB集群的数据同步至目标PolarDB集群。

      3. 刷新页面,当源PolarDB集群的状态显示为读写后,请尽快修改应用程序中的数据库连接地址为源PolarDB集群的连接地址。

取消升级(可选)

  1. 登录PolarDB控制台

  2. 找到目标集群,单击集群ID。

  3. 基本信息页面的PolarDB升级功能区域,单击取消升级

  4. 取消升级页面的对话框中,单击确定。对话框中说明取消升级将中断源集群与目标实例间的数据同步,您可根据需要勾选关闭目标实例的Binlog选项。

说明

取消升级后,新建的目标 PolarDB 集群不会自动释放,也不会自动退款。系统仅会切断源集群与目标集群之间的 DTS 同步链路,目标集群将恢复为独立的正常集群并继续计费。您需要手动释放该集群以停止计费(按量付费集群),或自行处理包年包月集群。

常见问题

在进行大版本升级时,如果源PolarDB集群中已创建触发器,这是否会对升级任务产生影响?

会。如果源PolarDB集群中创建了触发器,则在升级步骤一(从PolarDB升级迁移)中出现预检查失败状态。您需要先删除触发器,在进行大版本升级。升级完成后,可在目标PolarDB集群中手动创建触发器。

如何查询源PolarDB集群中的触发器?

您可以查询information_schema.triggers表来查看源PolarDB集群中的触发器。

SELECT * FROM information_schema.triggers;

如何删除源PolarDB集群中的触发器?

您可以通过以下SQL语句生成删除触发器的相关SQL语句。

重要

在释放触发器之前,请仔细核对触发器对您业务的潜在影响,并对相关触发器进行备份。在完成大版本升级后,在目标PolarDB集群中手动创建相应的触发器。

SELECT TRIGGER_SCHEMA,concat('DROP TRIGGER ',TRIGGER_SCHEMA,'.',TRIGGER_NAME,';') FROM information_schema.triggers;

返回示例如下,您可以复制并执行以下SQL语句以删除相应的触发器。其中,TRIGGER_SCHEMA为触发器所属库名。

+----------------+-------------------------------------------------------------+
| TRIGGER_SCHEMA | concat('DROP TRIGGER ',TRIGGER_SCHEMA,'.',TRIGGER_NAME,';') |
+----------------+-------------------------------------------------------------+
| test_triggers  | DROP TRIGGER test_triggers.xxx_insert;                      |
| test_triggers  | DROP TRIGGER test_triggers.xxx_update;                      |
| test_triggers  | DROP TRIGGER test_triggers.xxx_delete;                      |
+----------------+-------------------------------------------------------------+

PolarDB 大版本升级过程中自动创建的 DTS 全量同步任务是否支持暂停和恢复?

不支持暂停。升级过程中自动创建的 DTS 全量同步任务是升级流程的关键组成部分。手动暂停会导致升级流程中断、数据不一致或任务失败。

若您担心 DTS 同步任务对源集群性能产生影响,可以选择取消整个升级计划,但无法实现暂停后恢复继续同步。

PolarDB MySQL 5.7 标准版能否通过一键升级功能直接升级到 8.0 企业版?

不支持。PolarDB MySQL 5.7 标准版无法通过一键升级功能直接升级至 8.0 企业版。不同系列(标准版与企业版)之间不支持跨系列升级。

如果您需要从标准版迁移至企业版,请新建一个 8.0 企业版集群,并通过 DTS 将数据从标准版集群迁移至新的企业版集群。具体操作请参见PolarDB MySQL版间迁移

PolarDB MySQL 集群是否支持单独升级只读节点的大版本?

不支持。PolarDB MySQL 集群不支持单独升级只读节点的大版本(例如仅将只读节点从 5.7 升级到 8.0,而主节点保持 5.7)。整个集群(包括主节点和所有只读节点)必须运行在同一内核大版本下,否则会导致存储格式不兼容、日志解析错误或复制中断。

如需升级,请执行整个集群的大版本升级操作。