本文介绍如何通过数据迁传输服务(Data Transmission Service,简称DTS)实现将MySQL 5.6版本的RDS实例升级到MySQL 5.7版本。
前提条件
因为MySQL 5.6与MySQL 5.7版本支持的特性不同,所以如果使用了MySQL 5.6支持但是MySQL5.7不支持的语法或者特性,则需要手动调整代码实现,详细特性见表 1。
因为升级操作是通过2个RDS MySQL实例间进行数据同步实现的,所以会需要创建同等或以上规格实例。
下面以深圳地域实例为例,完成MySQL版本升级。
创建RDS MySQL 5.7实例
配置DTS
DTS是一个阿里云提供的数据传输服务,支持同构或异构数据源之间的数据迁移,同时提供了库表列三级映射、数据过滤等多种ETL特性,DTS详细介绍请参见什么是数据传输服务DTS。
同步其它配置
当前已经完成了数据同步,现需要将原实例中的其它配置迁移到新实例上来。
释放原实例
待业务平稳运行一段时间(如几天)后,可以将DTS双向同步链路释放,同时释放原实例。
常见问题
问题:如下图所示,当原RDS MySQL 5.6实例(A1-1)下拥有一个自建MySQL 5.7实例(A1-2)时,如何升级?

说明
- A1-1:待升级的RDS MySQL 5.6实例,为master节点。
- A1-2:ECS实例,搭载有自建的MySQL 5.7版本数据库,为slave节点。
- B1:新创建的RDS MySQL 5.7实例,为升级后的master节点。
操作思路:
- 按照前文的步骤将A1-1与B1建立双向的DTS链路。等B1实例的数据追平A1-1实例,停止向A1-1实例写入数据,等待3-5分钟。
- 将A1-2设置为B1的slave节点。在A1-2实例上进行操作,有两种方式:
- 通过master_log_pos和master_log_file的方式。
- 通过GTID的方式。
- 通过master_log_pos和master_log_file的方式
- 在A1-2实例上执行如下命令:
stop slave; reset slave all;
- 在B1实例上执行如下命令,并记录下File和Position的值:
show master status;
- 回到A1-2实例上,执行如下命令:
change master to master_host='rm-wz9******.mysql.rds.aliyuncs.com', master_user='userName', master_password='yourPassword',master_log_file='mysql-bin.******',master_log_pos=******; start slave;
其中,master_log_file和master_log_pos的值为上一步的File和Position的值。
- 在A1-2实例上执行如下命令:
- GTID方式
- 在A1-2实例上执行如下命令:
stop slave; reset slave all; reset master;
- 在B1实例上执行如下命令,并记录Executed_Gtid_Set的值:
show master status;
- 在A1-2实例上执行如下命令:
change master to master_host='rm-wz9*******.mysql.rds.aliyuncs.com', master_user='userName', master_password='Password'; set global GTID_PURGED='037*****-****-****-****-************:*-****7'; start slave
其中,GTID_PURGED的值来源于Executed_Gtid_Set。
- 在A1-2实例上执行如下命令:
问题:MySQL 5.6与MySQL 5.7存在特性或功能上的差异,有哪些是需要额外注意的?
因为MySQL版本的差异,部分MySQL 5.6支持的功能或者场景,在升级MySQL 5.7后需要调整代码来实现。详细差异见下表:
特性、语法 | MySQL 5.6 | MySQL 5.7 |
---|---|---|
GTID模式下面的create as select语法 | 支持 | 不支持 |
GTID模式下在事务中使用临时表的语法 | 支持 | 不支持 |
多源复制功能 | 支持 | 不支持 |
select for update wait或select from update语法 | 支持 | 不支持 |
update non_affected_rows insert语法 | 支持 | 不支持 |
select statement timeout | 支持 | 不支持 |
select ENGINE_NO_CACHE 特性 | 支持 | 不支持 |
不可见索引 | 支持 | 不支持 |
RocksDB引擎 | 支持 | 不支持 |