lower_case_table_names参数与AWS RDS MySQL5.7 - 8.0升级

问题描述:

RDS MySQL 5.7版本的实例,设置了lower_case_table_names=1的参数。需要将RDS通过蓝绿部署或者原地升级的方式升级到RDS MySQL 8,但是遇到了“The parameter value for lower_case_table_names can't be changed for MySQL 8.0 DB instances.”报错

分析过程:

升级过程中,RDS MySQL 5.7参数组和RDS MySQL 8.0参数组的lower_case_table_names必须要设置为一致,且在升级为8.0之后,这个参数不可再修改。

仅有列名是大写的RDS MySQL 5.7可以成功升级为RDS MySQL 8.0, 只要DB名和表名均为小写,那么列名大写不会影响RDS的升级。

解决方案:

首先检查RDS MySQL 5.7内的所有table,看是否已经存在大小写区分的表

1. 如果RDS 内所有数据均为小写,那么可以先创建一个RDS MySQL 8 的自建参数组,修改所需要的参数设置,并将lower_case_table_names设置为1。而后选择原地升级,或者蓝绿部署的方式,均可以使用新建的MySQL 8自建参数组作为升级后的参数组,这样便可以保持lower_case_table_names一致。

由于default MySQL 8 参数组为lower_case_table_names为0的设置,因此在原地升级时,选择默认参数组为目标参数组,便会遇到“The parameter value for lower_case_table_names can't be changed for MySQL 8.0 DB instances.”报错。

2. 而如果RDS MySQL实例内,经过检查,已经存在大小写区分的表,那么会需要更多的修复过程:

2.1. 需要先将您的RDS MySQL 5.7参数组中,lower_case_table_names设置为0,而后重启数据库,并在库内删除您的大写的表,或者将大写的表改为小写。
2.2. 在将大写的表更改完成以后,可以将lower_case_table_names改回为1,再次重启数据库让参数生效。
2.3 而后,可以按照1中的步骤,使用自建MySQL 8.0参数组并设置lower_case_table_names为1,并选择蓝绿部署或者原地升级。
 

一些升级参考文档提供如下:

Amazon RDS for MySQL 5.7 到 8.0 升级前置检查 保驾护航 – Amazon RDS for MySQL 5.7 到 8.0 升级前置检查 | 亚马逊AWS官方博客

Amazon RDS for MySQL 5.7 到 8.0 升级指南 保驾护航 – Amazon RDS for MySQL 5.7 到 8.0 升级指南 | 亚马逊AWS官方博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值