PolarDB MySQL数据库升级策略

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 背景数据库的可用性对于客户是至关重要的,根据CAP理论,分布式和一致性、可用性只能二选一,所以在云原生数据库(依赖多副本)或者分布式TP系统中,大多都选择牺牲一些一致性来保证分布式和可用性,足以看出可用性的地位是及其重要的,所以任何数据库内核都会针对可用性做很多特性改进,比如热备、双活多活、异地灾备、增强一致性协议和主从复制能力、甚至增强备份恢复能力等等。我们了解,影响可用性的无外乎几种场景,如严

背景

数据库的可用性对于客户是至关重要的,根据CAP理论,分布式和一致性、可用性只能二选一,所以在云原生数据库(依赖多副本)或者分布式TP系统中,大多都选择牺牲一些一致性来保证分布式和可用性,足以看出可用性的地位是及其重要的,所以任何数据库内核都会针对可用性做很多特性改进,比如热备、双活多活、异地灾备、增强一致性协议和主从复制能力、甚至增强备份恢复能力等等。

我们了解,影响可用性的无外乎几种场景,如严重的HANG、CRASH和功能的BUGs导致的不可用,数据库的运维升级、数据库相关依赖的基础组件BUGs或者升级,硬件故障或者硬件升级,灾难恢复时间长,主备切换时间长,备份恢复时间长等等。本文重点要说的是针对升级造成的不可用的原因、背后的原理以及采取的策略。升级之所以重要的原因是因为,客户通常由于碰到严重BUGs问题不可用后,不得不升级数据库版本导致的二次不可用。虽然可以在主动运维时间去升级,但是他们仍旧希望降低该时间或者能够了解升级黑盒背后的故事。因此,解决缩短升级时间也是数据库内核非常重要的技术方向。

商业数据库DB2架构和Rolling Update升级策略

说到升级技术和方案,那不得不依赖于各个数据库内核的原理和技术架构。比如这里先来说下DB2的purescale和PolarDB MySQL的架构来更好的理解他们之间的差异。这两个数据库都是共享存储,DB2 purescale目前支持行级多写架构。

在DB2 purescale的架构下,如何升级的呢。假如两个member节点的rolling update如何做?两个Member从GA生成到FP1上。

可以看到DB2的计算节点是可以支持两个版本同时存在,顺利在不影响客户应用的情况下,达到逐步升级的过程。

AWS RDS升级策略

RDS通常是MySQL的托管服务,通常提供备节点和只读节点来进行服务。我们先来通过AWS的RDS for MySQL了解RDS的升级过程。

 

该过程展示了如何利用只读实例来做滚动升级。

PolarDB架构和升级策略

PolarDB也是共享存储模式,支持一写15读,多租户多写、热备已经上线,行级多写在开发中,所以这里架构和升级策略暂时还是基于一写多读的架构。

由于PolarDB MySQL 100%兼容官方MySQL,并且增加了物理复制能力,日志的物理复制技术+PolarDB中三种角色PRIMARY、REPLICA和STANDBY,那么为集群升级带来的很大的不同。下面我们就介绍下PolarDB MySQL中的热升级、冷升级和大版本升级。

我们知道对于单机MySQL或者主备MySQL模式下,采用binlog同步机制的方式进行复制,天然可以支持跨版本和跨数据源类型,因此采用AWS RDS的升级策略,只要做到管控无缝切换,客户在升级小版本和大版本时基本上可以达到闪断而降低对业务的影响。闪断这个名字也是云数据库的发明的名字,即客户端重连既可以恢复正常业务,而非一直等待实例启动才能恢复业务。

然而对于PolarDB MySQL的架构而言,采用了物理复制+共享存储和一写多读的架构,那就意味着升级过程变得比较复杂。这里有几个痛点和传统MySQL单机有不同:

  • 升级中必须考虑物理复制+一写多读架构造成的升级影响,物理复制无法进行双向复制,只能由PRIMARY节点来进行写入。
  • 升级策略根据MySQL的版本中是否影响元数据(DD) 、Information Schema表(IS)、Performance Schema表(PS)和Server层系统表(Server System Table)来决定是否采用闪断或者中断模式。

热升级策略

热升级策略解决同版本中的小版本升级,也就是升级过程用户应用程序只需要闪断。整个顺序是按照STANDBY-REPLICA-PRIMARY的顺序。为什么按照这个顺序?其实也很好理解,由于元数据等信息并没有改变,升级过程并不需要修改Page信息而导致必须先升级PRIMARY。

Standby:

RO:

RW: 

搭建复制关系

冷升级策略

冷升级策略是由于大版本修改元数据信息、IS、PS等无法通过升级版本后,通过执行SQL的方式来同步,通过热升级会破坏物理复制机制而采取的升级策略,由于升级顺序是按照PRIMARY-REPLICA-STANDBY的顺序,因此会中断业务。冷升级由于很好理解,这里就列出步骤:

  • 检查 REPLICA和STANDBY同步延迟正常
  • 对于 REPLICA和STANDBY节点,停止物理复制线程
  • 对于 PRIMARY节点,停止服务,替换二进制,启动后,进行系统升级,升级完成后启动检查版本和角色
  • 升级所有REPLICA节点,替换二进制,启动后,查看版本和角色
  • 升级STANDBY节点,替换二进制,启动后,查看版本和角色,追加物理复制

目前PolarDB MySQL的小版本为了能够让客户平滑的使用,已经不采用冷升级的方式,而从设计新功能角度已经考虑了热升级的方式。而目前的8.0.1版本(基于MySQL 8.0.13)升级到8.0.2版本(基于MySQL 8.0.18)版本,由于官方元数据等信息变化必须采取冷升级的方式。另外还有一些GDN集群的场景,升级过程也会遇到冷升级的情况。

大版本升级策略

PolarDB MySQL由于目前支持5.6版本(基于MySQL 5.6)、5.7版本(基于MySQL 5.7)和8.0.x版本(基于MySQL 8.0.x),很多新的功能在8.0.x,因此需要从5.6和5.7版本升级到最新的8.0.x版本,因此提供了一键式升级的方式。虽然是大版本升级,但是仍然能提供用户应用程序闪断的机制,通过内部的管控流程来减少用户升级带来的影响。

升级支持方式

  • PolarDB MySQL引擎5.6升级至PolarDB MySQL引擎5.7。
  • PolarDB MySQL引擎5.6升级至PolarDB MySQL引擎8.0。
  • PolarDB MySQL引擎5.7升级至PolarDB MySQL引擎8.0。

升级优势

  • 可保留数据库原来的连接地址,无需修改应用程序的任何连接配置即可切换至目标版本。
  • 升级完全免费。
  • 升级过程数据0丢失。
  • 支持增量迁移,停机时间小于10分钟。
  • 支持在线热升级,升级过程仅闪断一次。
  • 支持回滚操作,升级失败可以在10分钟内恢复。

和上面原地升级的方式不同,PolarDB MySQL引擎集群之间升级是免费,但需要收取新建计算节点的费用。而PolarDB MySQL引擎集群之间的升级支持带地址切换,系统会自动交换源PolarDB MySQL引擎集群和目标PolarDB MySQL引擎集群上的连接地址。

 

一键式大版本升级主要依赖于DTS服务和Binlog同步机制,因此可以支持更大更灵活的方式。

结论  

总之,不管何种升级策略,数据库内核的目标都是要做到无论由于故障实例crash、主动运维和升级,都能够做到最小限度的影响应用,甚至通过更多的技术如热备、多写、共享内存池、高可用集群、事务保留、SCC、Voting disk等技术做到真正的云Zero Downtime。

参考链接

Performing rolling updates in a Db2 high availability disaster recovery (HADR) environment》

《PolarDB · 新品介绍 · 深入了解阿里云新一代产品 PolarDB》

《PolarDB 自研数据库的数据安全保障和容灾体系建设》

《PolarDB 容灾体系建设之一:集群实例内HA切换》

《Voting Disk:PolarDB的高可用容灾方案》

《Rds MySQL内核版本管理》

以最短的停机时间对 Amazon Aurora MySQL 执行主要版本升级

升级 Amazon RDS for MySQL 和 Amazon RDS for MariaDB 的最佳实践

《PolarDB for MySQL引擎大版本一键升级》

一键升级RDS MySQL至PolarDB MySQL引擎

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
9天前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
43 6
|
6天前
|
关系型数据库 MySQL 分布式数据库
零基础教你用云数据库PolarDB搭建企业网站,完成就送桌面收纳桶!
零基础教你用云数据库PolarDB搭建企业网站,完成就送桌面收纳桶,邀请好友完成更有机会获得​小米Watch S3、小米体重称​等诸多好礼!
零基础教你用云数据库PolarDB搭建企业网站,完成就送桌面收纳桶!
|
7天前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
38 3
Mysql(4)—数据库索引
|
9天前
|
SQL Ubuntu 关系型数据库
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
本文为MySQL学习笔记,介绍了数据库的基本概念,包括行、列、主键等,并解释了C/S和B/S架构以及SQL语言的分类。接着,指导如何在Windows和Ubuntu系统上安装MySQL,并提供了启动、停止和重启服务的命令。文章还涵盖了Navicat的使用,包括安装、登录和新建表格等步骤。最后,介绍了MySQL中的数据类型和字段约束,如主键、外键、非空和唯一等。
27 3
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
|
14天前
|
缓存 算法 关系型数据库
Mysql(3)—数据库相关概念及工作原理
数据库是一个以某种有组织的方式存储的数据集合。它通常包括一个或多个不同的主题领域或用途的数据表。
38 5
Mysql(3)—数据库相关概念及工作原理
|
2天前
|
存储 缓存 监控
数据库优化技术:提升性能与效率的关键策略
【10月更文挑战第15天】数据库优化技术:提升性能与效率的关键策略
23 8
|
1天前
|
存储 关系型数据库 MySQL
如何在MySQL中创建数据库?
【10月更文挑战第16天】如何在MySQL中创建数据库?
|
5天前
|
SQL Oracle 关系型数据库
安装最新 MySQL 8.0 数据库(教学用)
安装最新 MySQL 8.0 数据库(教学用)
34 4
|
3天前
|
存储 SQL 关系型数据库
【入门级教程】MySQL:从零开始的数据库之旅
本教程面向零基础用户,采用通俗易懂的语言和丰富的示例,帮助你快速掌握MySQL的基础知识和操作技巧。内容涵盖SQL语言基础(SELECT、INSERT、UPDATE、DELETE等常用语句)、使用索引提高查询效率、存储过程等。适合学生、开发者及数据库爱好者。
11 0
【入门级教程】MySQL:从零开始的数据库之旅
|
6天前
|
存储 关系型数据库 MySQL
PACS系统 中 dicom 文件在mysql 8.0 数据库中的 存储和读取(pydicom 库使用)
PACS系统 中 dicom 文件在mysql 8.0 数据库中的 存储和读取(pydicom 库使用)
13 2