阿里云RDS实例平滑升级步骤-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

阿里云RDS实例平滑升级步骤

2016-02-26 14:29:07 11817 2

一、为何需要升级


1、初期业务量小,RDS配置买低了


2、产品需求增多了,初期设计的表结构要有所变化


二、为何需要平滑


直接在阿里云选择给RDS更改配置会造成一段时间整库不可用,执行增删改sql语句也会造成锁表的情况。这些都会直接影响前台用户的使用,如果数据量少可能瞬间就改完了,但是数据量大的话就无法容忍了。所以终极目标就是在绝对保证用户无感知的前提下,把RDS升级工作完成。


三、升级准备


1、评估现有的RDS实例配置

升级的数据源必须是现有RDS实例的主库,因为全量同步后是需要用主库的binlog做增量同步的。如果现有主库压力已经很大,就必须选择已经相对业务量小的时候去做,以免对现有主库造成冲击。

2、购买一个按时计费的RDS实例

这个实例必须大于等于现有RDS主实例的配置,如果业务量很大读写繁重的话,建议给这个临时RDS主实例下再创建个只读实例。

3、按照现有RDS实例去配置临时RDS实例的白名单

一定要把临时主RDS实例的库建好,读写账号及白名单都配置好以后再去创建它的只读实例,否则极容易出现主从库的白名单不一致的问题。


四、升级步骤


1、创建一个DTS迁移任务,数据源是现有RDS主实例(只需要给只读账号就可以了)目标是新创建的临时RDS实例(必须给具有写权限的账号),一定把全量和增量迁移都勾选上。

2、输入账号密码后选择你需要迁移的表(不需要升级的表可以不选)会进行迁移前的检查工作,这个RDS到RDS一般都不会有什么问题。

3、再校验通过后不要着急点开始迁移,这时候navicat连到临时RDS库看下应该有了刚刚选择的几张表,只不过都是空表没有内容的。然后就可以执行增字段,修改索引等sql语句了。

4、如果通过校验后没有发现空表就直接点开始迁移。整个迁移工作分成3部分,创建表结构、全量同步、增量同步。可以在创建表结构的时候暂停迁移任务,把已经创建的表删掉重新手工创建符合自己要求的表,然后再继续开始迁移也是可以的。

5、都修改好了确认无误后,再去DTS页面上开始迁移就可以了。这个要看数据量的多少以及RDS配置的高低。给个参考值,6G内存、3000IOPS的RDS实例,同步6000万行数据不到30G的库文件大小大概不到1小时能全部迁移完。

6、全量迁移任务完成后,DTS会自动继续做增量同步,正常的增量同步大概会显示延迟1-5秒之间。这时需要修改线上程序代码,把连接原有RDS实例的地方修改为连接临时RDS实例,注意如果是仅仅迁移部分表的话,程序里还需要配置哪些表读老库哪些表读中转库。

7、程序修改好后千万别着急上线,因为代码部署在N台服务器上,发布程序不可能同时生效的。所以这时候应该去修改临时RDS实例表里的主键ID,根据业务繁忙程度和同步线上代码的时间增加一定数量级的自增ID。

8、最后更新线上代码,把所有服务都迁移到读写临时临时RDS上,然后观察两边RDS读写是否正常。不出意外的话线上程序都更新完毕后,旧RDS实例的那些表就不会再有变化了。

9、确认临时RDS实例正常工作后,终止DTS迁移任务,修改老RDS实例上的表名为表名_old以备校验查询。

10、再次创建一个新的DTS迁移任务,这次数据源是临时RDS实例目标是原来的RDS实例。因为临时RDS里的表、字段、索引都已经符合要求了,这次就无需再写任何sql语句,只需要确认空间够用,表名不要重复就ok了。

11、待DTS任务达到增量同步1-5秒延迟的时候,再次修改原有RDS实例里的自增ID,然后再把线上程序恢复成之前读写原有RDS实例的配置。再次发布代码后,确认读写正常,停止这个DTS迁移任务就算整体完工了。


五、注意事项


1、一定要找业务低峰时进行操作

2、DTS迁移任务的时候要时刻注意IOPS的压力

3、如果有主从RDS实例千万注意,主库是多线程写的,而从库是单线程同步的。所以DTS主库迁移成功了,从库要追很久才能同步。

4、严格按照顺序操作,每步都要想好确定无误了再做下一步。

5、千万别忘记更新程序后,把DTS迁移任务结束。如果不结束的话,很可能造成不可估量的严重后果!
取消 提交回答
全部回答(2)
  • 胜哥
    2016-02-29 17:52:40
    好复杂
    0 0
  • 51干警网
    2016-02-26 16:21:33
    您的帖子很精彩!希望很快能再分享您的下一帖!
    0 0
添加回答
相关问答

1

回答

RDS变更实例规格请求参数

2018-04-18 21:57:05 440浏览量 回答数 1

1

回答

RDS变更实例规格示例

2018-03-22 13:29:21 487浏览量 回答数 1

1

回答

RDS变更实例规格返回参数

2018-03-19 23:22:50 461浏览量 回答数 1

0

回答

变更RDS实例规格

2017-10-18 17:33:14 1507浏览量 回答数 0

1

回答

【RDS】RDS MySQL如何使用utf8mb4字符集存储emoji表情?

2022-01-14 15:02:34 1004浏览量 回答数 1

1

回答

RDS MySQL迁移至PolarDB MySQL中其他限制的说明是什么?

2021-12-14 15:52:42 111浏览量 回答数 1

1

回答

RDS MySQL同步至PolarDB MySQL集群中支持的同步架构是什么?

2021-12-12 22:38:14 107浏览量 回答数 1

0

回答

RDS MySQL同步至阿里云消息队列Kafka版中注意事项的说明是什么?

2021-12-12 23:28:55 231浏览量 回答数 0

1

回答

RDS mysql数据库用户名填写完 并没有提示我输入密码

2017-01-17 15:15:01 2595浏览量 回答数 1

0

回答

RDSmysql数据库不能用identity作为数据库名如何解决

2015-03-27 18:27:42 4296浏览量 回答数 0
+关注
0
文章
8
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载