aws mysql 升级_aws RDS 版本升级最佳实践的探讨
这篇文章其实在草稿箱中存在了挺长的一段时间,去年10月就已经开始写了,但是由于工作上的其他事情的干扰,一直还没写完。所以你可以看到我画的图中,now其实是指2018年10月(OCT)。
趁着休假,把这个文章终于写完了。
1. aws RDS 的升级周期说明:
根据亚马逊的文档 Amazon RDS FAQs 上的说明,aws RDS的大版本,至少能支持3年,小版本至少会支持1年。
根据和aws的交流得知,一般社区基本版本发布约5个月之后,aws会发布基于aws的RDS。
因此,aws的RDS升级周期是,待社区版本发布后,约5个月,aws发布对应的版本,每个大版本至少支持3年,每个小版本至少支持1年。
2. aws RDS的版本过期的后果:
根据亚马逊的文档 Amazon RDS FAQs 上的说明,当某个大版本或者小版本,过了亚马逊的服务支持期,亚马逊会提前提醒客户(大版本提前6个月提醒,小版本提前3个月提醒),在提醒期过后,aws会强制自动升级 数据库 到最新的版本(即使客户选择的是关闭了自动小版本升级)。升级的过程,应用程序无法连接数据库,造成业务影响。
注1:无论大版本,还是小版本,一旦过了亚马逊的服务支持期,都会面临强制升级的过程。
注2:小版本的升级过程,会包含备份,升级,再次备份。经验值是第一次备份和最后一次备份,不影响业务正常访问,升级数据库的过程,影响业务正常访问。整个升级的过程,大约30分钟,其中影响业务访问的时间为3分半钟。但具体的业务影响时间,以实际测试为准。
注3:小版本在提醒期的deadline来之前的一周,已经不能对数据库做任何modify的操作,包括搭建replica或者更改维护窗口。但是可以从备份的snapshot还原出来一个数据库,用于测试升级的时长。
注4:小版本升级步骤是先升级从库,再升级主库。
3. 内部升级步骤解析:
即:
a). 在升级前,做一次快照,注意这个快照的时间,和数据库的大小的有关。
b). 进行slow shutdown,即set global innodb_fast_shutdown=0然后进行shutdown。由于设置了slow shutdown,因此dirty buffer会刷到磁盘上+insert buffer 也会刷到磁盘上(即system tablespace,ibdata1中)+full purge(即清理无用的undo页)
c). 将 mysql 挂载到新的存储引擎下,并且禁止远程网络访问;
d). 运行mysql_upgrade程序,升级数据字典。
e). 运行RDS特殊的一些脚本,以便升级RDS封装的表和存储过程。
f). 重启实例,开放网络远程连接。
注1,在某些情况下,mysql_upgrade这个步骤会物理的重建表,表的大小会影响升级时间,所以实际升级的时间,需要以测试为准。如 MySQL 5.6.4 升级到5.7版本,因为 5.6.4 版本中的TIME, DATETIME, 和TIMESTAMP类型的存储有改变,升级的时候,需要重建表。
注2,由于大版本不能跨大版本升级,如升级MySQL 5.5.46到5.7.19,不能直接升级,需要先将5.5.46升级到5.6,如5.6.37,再升级到5.7.19。因此业务受影响的时间,是两次升级的时间。而不是一次。故不做大版本的交替升级。如分成5.5 升级 5.7,5.4升级5.6。
4.升级路线:
5.升级最佳实践:
5.1. 大版本升级:
a). 先创建2个replica实例;
b). 升级其中一个实例到高版本,此时,还保持着主从的同步关系;
c) .创建dms实例,配置好源和目标的endpoint,和创建好task,注意创建task时选择changes only,并且取消 Start task on create的勾勾。
d). 业务中断开始,将新建的replica实例提升为主库;
d). 点击dms的task中的start ,等待其完成全量数据库的对比,开始准备同步增量数据;
e). 切换应用连接到高版本的数据库;
注1,从5.6.4以下的版本升级到5.6.4之后,需要alter table table_name force,重建表,才能使用online ddl的方式create index。
注2,大版本升级,需要验证应用程序的性能,需要抓取至少一周的SQL,进行sql replay看性能的变化。
注3,升级之后,为了减少物理读,尽快的将更多的数据加载到内存,可以用mysqldump做prewarm
注4,减少downtime,其中一个步骤是dms点击task的start进行全量数据的校对,如果加大主库的IOPS,有助于提高该步骤的速度。(该步骤是业务停机操作的,因此减少该步骤的时间,等于减少停业务时间)。
5.2. 小版本升级:
方法一:
a). 先创建replica实例,或直接使用现有的replica实例;
b). 升级replica实例到高版本,此时,还保持着主从的同步关系;
c). 业务中断开始,将高版本的replica实例提升为主库;
d). 切换应用连接到高版本的数据库。应用的连接串配置,可以提前配置好,重启应用即可;
方法二:
a). 先升级replica实例到高版本,这是所有aws升级到必要前提,即必须先升级从库;
b). 中断业务和数据库之间的连接,开始升级主库;
c). 将主库升级到高版本;
d). 恢复应用连接;
注1,方法一是aws推荐的方案,但是方案二,对于小系统也是非常合适的。
注2,方法一的应用影响时间,是提升从库为主库的时间+应用重启的时间。根据我们的某个数据库的测试,提升的时间,大约是3分钟02秒。加上应用重启时间,也大约是3分半钟。
注3,方法二,我们的某个数据库测试数据是,整体的升级时间大约是34分钟(因为包含了升级前数据库做backup和升级完成后做backup,这都是升级过程中,aws自己做的),而这34分钟,并不是应用都不可用,在做数据库backup时,数据库还是可以用的,真正业务不能连数据库的时间,是3分32秒。
注4,两个方法,服务不可用的时间都差不多,都是大约3分半钟,但是方法一有个风险,就是如果是因为需要强制升级小版本,已经快到升级的维护时间,且已经是deadline的维护时间,那么虽然我们没有去动主库,单丝玩意失败需要切换回主库,单丝强制升级的时间又到了,触发强制升级,那么此时就是一个不可控的状态了。因此我们还是选择了方法二。
注5,最终应该选择哪个方法,还是要依赖实际做升级测试的演练情况而定。
6.总结:
(1). 根据上面的所述,规定今后MySQL的新安装版本的为5.7.23;
(2). 在一年内,对于之前MySQL 5.5版本,小版本统一过渡到5.5.61,MySQL 5.6版本,小版本统一过渡到5.6.41。这个可以避免MySQL的小版本因为不被支持导致强制升级,并且这2个版本的下一次强制升级时间,至少是在2019年9月之后。(pg类似指导思路);
(3). 在一年内,对于之前的MySQL 5.5版本升级到5.6版本;在两年内,对于MySQL 5.6版本,升级到5.7版本;在两到三年内,统一到MySQL 8.0版本。解决由于多版本共存,导致运维难度增加的问题。(pg类似指导思路);
(4). 后续的版本升级,将会按照1年一升小版本,3年一升大版本的进度推进,以符合aws RDS的版本支持规则。
aws mysql 升级_aws RDS 版本升级最佳实践的探讨相关推荐
- aws mysql 升级_AWS最新核心武器:升级主数据库转换工具
[IT168 资讯]如今,AWS不仅在公有云市场中是领军地位,在数据库市场市场中,特别是Oracle商店中同样赢得客户认可.4月16日,AWS公共云提供商在这场战斗中有一个新的武器 :一个升级的主数据 ...
- 升级遗留代码的最佳实践
云栖号资讯:[点击查看更多行业资讯] 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 在传统企业甚至互联网企业中往往存在大量的遗留代码,这些遗留代码大多都能够正常工作,有的可能还运行着 ...
- (新零售)商户网格化运营 - 阿里云RDS PostgreSQL最佳实践
原文地址 背景 伟大的马老师说: "纯电商时代很快会结束,未来的十年.二十年,没有电子商务这一说,只有新零售这一说,也就是说线上线下和物流必须结合在一起,才能诞生真正的新零售" 线 ...
- 时间、空间、对象 海量极速多维检索 - 阿里云RDS PostgreSQL最佳实践
标签 PostgreSQL , 时间 , 空间 , 对象属性 , 多维度检索 , 海量 , 空间索引 , 数据分区 , 块级索引BRIN , 多级索引 , GIN倒排索引 , JSON索引 , 多列索 ...
- jumbo 安装mysql,RAC 和 Oracle Clusterware 最佳实践和初学者指南「ID 1526083.1」
In this Document Applies to: Oracle Database - Enterprise Edition - Version 10.2.0.1 to 11.2.0.3 [Re ...
- 关于Python环境下WindowsMac 升级pip的方法最佳实践(附pip常用命令)
升级pip的最佳实践 升级pip有很多种方法,以下列举我使用的两种方法,并对它们的优缺点进行总结: Mac电脑中操作 使用pip install --user --upgrade pip命令升级pip ...
- 海明距离mysql查询_海量数据,海明距离高效检索(smlar) - 阿里云RDS PosgreSQL最佳实践-阿里云开发者社区...
标签 PostgreSQL , 海明距离 , smlar , GiST索引 背景 SimHash的应用 通过上面的步骤,我们可以利用SimHash算法为每一个网页生成一个向量指纹,那么问题来了,如何判 ...
- aws mysql迁移_AWS Data Migration Service-AWS数据库迁移服务-AWS中国区域
AWS Database Migration Service 可帮助您快速并安全地将数据库迁移至 AWS.源数据库在迁移过程中可继续正常运行,从而最大程度地减少依赖该数据库的应用程序的停机时间.AWS ...
- aws mysql 费用_AWS 免费一年套餐详解
分类 服务 免费内容和计量 意义 计算与联网 Amazon EC2 在云中提供可调整的计算能力的 服务器. 为期一年,每月 750 小时 Linux 或者 Windows 微型实例的试用时间 从你的账 ...
最新文章
- Possible MySQL server UUID duplication for server
- 基于ZYNQ的机器视觉应用实例
- 黑马程序员--网络编程
- Java基本语法(14)--for循环结构
- 漆桂林 | 人工智能的浪潮中,知识图谱何去何从?
- 《构建高性能Web站点》观后感
- hibernate 映射表_Hibernate多对多映射-连接表
- java面试的计算机网络_Java面试总结之计算机网络(二)
- internet信息服务(IIS)管理器 在哪里?
- swagger的使用
- matlab对excel数据求均值,matlab对excel数据的处理,判断时间是否相同,求均值
- 统计自然语言处理---信息论基础
- 利用格拉布斯准则,剔除异常数据
- JAVA结构化处理开源库SPL
- 系统之家 Win10_21H1 x64位 游戏专业版系统下载 2021.06
- 《老梁四大名著情商课》笔记- 刚上班,别做林黛玉,也别做孙悟空
- TIA西门子博途V17安装教程及注意事项
- Qt图表绘制(QtCharts)-绘制简单的盒须图[箱形图](12)
- 浅述单目3D目标检测
- 跨过顺丰的中通能终成霸主吗?