tencent cloud

文档反馈

升级 MySQL5.7到 MySQL8.0

最后更新时间:2023-12-27 11:13:02
    云数据库 MySQL 支持通过控制台直接升级数据库版本,本文为您介绍通过控制台将实例数据库版本从 MySQL5.7升级至 MySQL8.0。

    操作场景

    MySQL8.0在性能和功能上有较大的提升和增强,在高并发、大数据量场景下的性能表现更为突出,能够提供更强大的系统性能和稳定性。 云数据库 MySQL 支持以下版本的数据库引擎升级:
    MySQL5.7到 MySQL8.0
    说明
    单节点云盘版的实例不支持升级引擎版本。
    升级过程中对现有业务的访问无影响。

    MySQL5.7升级8.0注意事项

    功能限制

    限制类别
    限制详情
    实例限制
    仅支持双节点、三节点本地盘实例进行数据库版本 MySQL5.7升级8.0操作。
    若主实例有多个只读实例,只读实例会跟随一起升级。
    若主实例存在灾备实例,需要先释放灾备实例,升级完成后再重新创建灾备实例。
    升级前,请确保实例状态为运行中,且没有其他正在执行或待执行的任务,如存在,请等待任务结束后再发起数据库版本升级任务。
    升级前会对实例进行兼容性检查,检查结果有效时长为24小时,超过24小时后需要重新检查,检查期间如增加只读实例或灾备实例也需要重新执行检查任务。
    升级限制
    不支持跨大版本升级。例如 MySQL5.6无法直接升级至 MySQL8.0,需要先升级到 MySQL5.7,再升级到 MySQL8.0。
    升级后不支持降级。
    说明:
    升级完成后,旧版本的备份集无法用于恢复新版本实例,如需进行克隆或回档操作,请选择实例升级后生成的备份集或时间点。旧版本的备份集支持下载后用于本地恢复操作。
    
    数据库限制
    数据库实例升级 MySQL8.0后,参数 sql_mode 中不支持的设置会重置为 MySQL8.0的默认值。
    若 RocksDB 存储引擎中使用了分区表,则不支持升级至 MySQL8.0,需要修改为 InnoDB 引擎或删除分区表才能进行升级。
    数据库实例中若存在 MySQL8.0预留关键字的表、视图、存储过程、触发器等会导致升级失败。
    数据库中的存储过程、触发器、视图或函数中若包含 Changes in MySQL8.0,则会导致升级失败。
    如果您使用了 MyISAM 或 Memory 引擎,则不支持升级,请先转换为 InnoDB 引擎。
    说明:
    如果您的数据库已是 InnoDB 引擎,但部分表仍是其他引擎,请使用 ALTER TABLE <表名> engine=InnoDB; 命令将表也转换为 InnoDB 引擎后,再进行升级。
    

    升级前准备

    请务必仔细对比升级前后版本的差异,建议新建一个 MySQL 8.0 版本实例进行语法测试,避免应用使用的低版本语法或特性在升级高版本后不支持。具体版本差异请参见 MySQL8.0和 MySQL5.7版本功能差异列表
    建议您克隆原实例,先使用克隆实例进行升级测试,确认各项功能正常后再升级原实例。
    升级前请检查最近一周是否有全量数据备份的成功记录,必要时请进行一次全量数据备份。
    在数据库升级过程中,云数据库 MySQL 服务会出现闪断,请您尽量在业务低峰期执行升级操作,或确保您的应用有自动重连机制。
    升级前请确保预留充足的磁盘可用空间。
    升级前请查看 保留关键字,您在创建自定义函数的过程中应避免使用这些保留关键字。
    为确保 MySQL 在新版本中的稳定性和性能,完成数据库版本升级后,云数据库 MySQL 不再支持查看和修改在 MySQL8.0中被废弃的 MySQL5.7的参数,详情可参考 Server and Status Variables and Options Added,Deprecated,or Removed in MySQL8.0。在数据库版本升级前,建议您备份相关参数的修改记录,以便后续操作和审计。

    操作步骤

    1. 登录 MySQL 控制台,在实例列表,选择需要升级的实例,在操作列选择更多 > 升级版本
    说明:
    您也可以单击实例 ID 进入实例详情页,在数据库版本后单击升级版本
    
    
    
    2. 在数据库版本升级窗口,完成如下配置,阅读并勾选数据库版本升级规则,单击升级检查
    
    参数
    说明
    数据校验延迟阈值
    输入数据同步过程中的数据校验延迟阈值,可输入为1-10的整数,延迟阈值设置越小,可能导致升级完成时间越长
    切换时间
    维护时间内:选择维护时间内,会在实例升级完成后的下一个维护时间内发起切换,设置维护时间请参见 设置实例维护时间
    升级完成时:选择升级完成时,会在实例数据搬迁完成时立即进行版本切换。
    数据库版本
    默认选中 MySQL8.0。
    3. 升级检查过程中,系统会拉起检查任务,检查待升级的实例下是否满足无灾备实例、参数配置符合规范要求,检查完成且符合升级条件后,单击升级。
    3.1 检查实例下是否有灾备实例,若主实例存在灾备实例,则检查不通过,需要先释放灾备实例,升级完成后再重新创建灾备实例。
    3.2 检查参数配置是否符合规范要求,由系统自动检查判定,如不符合规范要求,可根据检查框内的错误信息对应调整。
    说明:
    升级检查任务执行成功后,请在24小时内执行升级,超时需重新检查。
    4. 执行升级后,返回实例列表,在左侧导航栏单击任务列表,可以查看该实例数据库版本的升级任务进度和详情。
    5. 在任务列表找到刚才数据库版本升级的任务,可查询任务执行进度,单击其操作列的任务详情,可显示更多升级相关的信息。
    6. 当实例状态由配置变更中变为运行中时,即完成数据库版本的升级。
    说明:
    若升级的切换时间选择维护时间内,则实例升级完成后还未到下一个维护时间时,实例状态会显示待切换,如您需立即切换,可在实例列表的操作列单击立即切换,切换会有秒级别闪断,请确保业务具备重连机制。

    附录:MySQL8.0对比 MySQL5.7的优势

    MySQL8.0引入了300+项新特性,包括不可见索引、降序索引、函数索引、公用表表达式、窗口函数、快速加列、隐式主键等,这些功能可以使开发更加灵活和高效。
    MySQL8.0对性能进行了改进,引入了直方图、HASH JOIN、并行查询、JSON 列等性能增强的功能,提升了数据库的查询性能和响应时间,使数据库能够更快地处理大规模数据和复杂的查询。
    MySQL8.0支持 caching_sha2_password 认证插件,提高了安全性。
    MySQL8.0Optimizer 优化器功能增强。
    MySQL8.0复制性能增强。
    MySQL8.0支持创建多值索引、派生条件下推优化。
    MySQL8.0支持读取 MySQL 授权表。
    MySQL8.0支持资源分配控制。

    热点问题

    升级前,云数据库 MySQL 是否会自动进行数据备份?

    云数据库 MySQL 每天实时双机热备,基于数据备份+日志备份(binlog)可支持7日内-1830日内无损恢复。

    云数据库可以从 MySQL8.0降级到 MySQL5.7吗?

    不支持降级。如您需要 MySQL5.7版本,可以先销毁/退货 MySQL8.0实例,再重新购买 MySQL5.7实例,给您造成的不便,敬请谅解。

    升级期间,是否会出现主备延迟问题?

    主实例升级会有数据对比,有可能产生主备延迟。

    版本升级完毕时会涉及实例切换,会影响云数据库 MySQL 实例的正常使用吗?

    实例的正常升级流程不会影响您的使用,但实例连接会有秒级闪断,建议程序有自动重连功能,并选择实例可维护时间内做切换。

    云数据库 MySQL 版本升级需要多长时间?在哪里可以查看升级进度?

    数据库的升级时间和您当前数据库中的数据量的大小以及数据复制等有关,因此无法给出具体升级所需时间。 云数据库 MySQL 版本升级会涉及到数据搬迁,通常需要较长时间,请您耐心等待,期间您的业务不受影响,可以访问。
    在任务列表可以查看任务执行进度和任务详情,您可关注任务执行进度了解升级情况。

    为什么实例一直是“升级待切换”的状态?

    有可能是您切换时间选择的是维护时间内切换,实例在升级完成后,将在维护时间内进行切换操作。 如您需立即切换,可在实例列表的操作列单击立即切换,切换会有秒级别闪断,请确保业务具备重连机制。
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持