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
相关文章
|
6天前
|
SQL 缓存 监控
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
本文详细解析了数据库、缓存、异步处理和Web性能优化四大策略,系统性能优化必知必备,大厂面试高频。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
|
6天前
|
存储 NoSQL 分布式数据库
微服务架构下的数据库设计与优化策略####
本文深入探讨了在微服务架构下,如何进行高效的数据库设计与优化,以确保系统的可扩展性、低延迟与高并发处理能力。不同于传统单一数据库模式,微服务架构要求更细粒度的服务划分,这对数据库设计提出了新的挑战。本文将从数据库分片、复制、事务管理及性能调优等方面阐述最佳实践,旨在为开发者提供一套系统性的解决方案框架。 ####
|
7天前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
21 3
|
8天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
23 4
|
6天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
19 1
|
9天前
|
消息中间件 数据库 云计算
微服务架构下的数据库事务管理策略####
在微服务架构中,传统的单体应用被拆分为多个独立的服务单元,每个服务维护自己的数据库实例。这种设计提高了系统的可扩展性和灵活性,但同时也带来了分布式环境下事务管理的复杂性。本文探讨了微服务架构下数据库事务的挑战,并深入分析了几种主流的事务管理策略,包括Saga模式、两阶段提交(2PC)以及基于消息的最终一致性方案,旨在为开发者提供一套适应不同业务场景的事务处理框架。 ####
|
17天前
|
存储 Oracle 关系型数据库
Oracle数据库优化策略
【10月更文挑战第25天】Oracle数据库优化策略
17 5
|
15天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
81 1
|
17天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
59 2
|
20天前
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
80 4