2.0 解析系列 | 如丝般顺滑!一线运维人员谈如何实现数据库的平滑在线升级

简介: OB君:9月21日,OceanBase 2.0 在云栖大会上重磅发布。我们将在接下来的时间里为大家持续推出 “OceanBase 2.0 技术解析系列” 文章,分别从 可运维性、分布式架构、数据可用性、性价比及兼容性 五个方面对OceanBase 2.0的产品新特性及其背后的技术原理进行深入的解析。

OB君:9月21日,OceanBase 2.0 在云栖大会上重磅发布。我们将在接下来的时间里为大家持续推出 “OceanBase 2.0 技术解析系列” 文章,分别从 可运维性、分布式架构、数据可用性、性价比及兼容性 五个方面对OceanBase 2.0的产品新特性及其背后的技术原理进行深入的解析。今天我们就重点聊聊OceanBase 2.0在线升级的那些事。更多内容欢迎持续关注本系列!

_

本文作者:游愚

现任蚂蚁金服OceanBase DBA团队高级运维工程师,2016年加入OceanBase DBA团队,从事OceanBase数据库运维与运维系统建设工作。

原文:

OceanBase 2.0在性能,成本和可用性上带来了一系列的新特性,而对于数据库的一线运维人员,或许对可运维性和运维风险这两方面更加关心。面对OceanBase 2.0新版本的美好特性,运维人员如何安全无风险的对OceanBase数据库进行升级?如何防止升级引入新问题对生产系统造成故障?

OceanBase(以下简称为OB)作为一款金融场景的分布式数据库,升级必须能做到平滑,可灰度,可回滚,为业务提供24小时不间断的服务。得益于分布式架构,一个OB数据库实例由多个可用区(zone)同时提供服务(通常为3个或5个)。

在数据库升级过程中,OceanBase 2.0版本支持不同的可用区使用新旧两个数据库版本同时提供服务,新旧版本可互相兼容。多个可用区可以轮转升级,做到升级过程对应用透明无感知,可运维性大大提升。

轮转升级

OceanBase 2.0集群升级可采用多个可用区轮转升级的方式,也就是对可用区逐一进行升级。

升级某个可用区前,首先将该可用区置为停止服务。此时副本的主将自动切换到其他可用区, 该可用区的数据副本将不承担业务读写流量。此时对该可用区下的OB进程进行升级和重启操作,不会影响到应用的db读写。待该可用区升级完成后,重新将其置为提供服务状态。此时该可用区将重新承担业务流量。之后以此过程再依次升级剩余可用区。整个升级过程应用无感知,应用无需配合db端做任何的停写停服务操作。

灰度切流验证

对升级较敏感的核心业务,OceanBase 2.0版本提供了灰度切流验证新版本的能力。灰度切流是指将业务流量按百分比逐步切换到新版本上。OceanBase允许用户数据的多个副本使用新旧两个OB版本。运维人员进行数据库升级时(例如从OceanBase 1.0升级到2.0),可以选择OB集群中的一部分可用区升级到新版本,之后将主副本逐步切换到新版本的可用区上,以验证新版本OB的功能和性能。一旦发现问题,可以立即回切到旧版本的可用区。保证应用持续可用,升级安全可靠。

除此之外,OceanBase 2.0的DB Replay功能也可以用于新版本的验证,运维人员可以搭建新版本的OB集群并将旧版本OB的读写流量回放到新版本的测试集群上,提前验证新版本。大大降低了运维人员做数据库升级的风险,这个功能我们也会在后续的文章中深入讲解。

新旧版本兼容

为了保证同一个OB集群可以新旧多个版本同时运行,OceanBase 2.0在内部实现上保证新旧版本的兼容和可回退。同时兼容了OceanBase 1.0的协议与数据格式,从1.0到2.0版本的升级同样也能做到如小版本升级一样平滑。

新版本如果对RPC行为进行了修改,如何与旧版本的OB进行通信呢? 实际上OB新版本会保留旧版本的RPC行为。可以通过集群内部的版本号参数来控制OB使用哪个版本的RPC行为。当OB集群的所有可用区都升级到新版本后,将版本号设为新版本,此时才使用新RPC行为进行通信。

升级回滚

与1.0相比,OceanBase 2.0同时也允许将集群的版本回退到升级前的版本。运维人员只需按照和升级流程相同的方式将OB集群的多个可用区轮转降级到原版本即可。回退过程同样对应用透明。

那么如果新版本的数据存储格式发生了变化,如何回退版本呢?对于这种情况,集群同样有内部参数控制存储是使用新数据格式还是旧数据格式。若要回退到旧数据格式,运维人员需要修改参数并进行一次全量合并。当存储数据回退到旧数据格式后,才可以继续做版本回退。

平台支持

OceanBase云管控平台(简称OCP)提供了对OceanBase 2.0集群一键升级的能力,支持全集群升级和集群部分可用区升级。流程包括了升级的预检查和后检查,可用区轮转升级,集群参数升级,内部表修改等升级步骤。运维人员无需黑屏操作,一键即可完成对一个集群的升级操作,大大提升了一线运维人员的幸福感。

下期预告
本文是“OceanBase 2.0 技术解析系列”文章的第二篇,下一篇将为你系统分析OceanBase 2.0中的DB Replay功能。敬请期待!

OceanBase 2.0技术交流群

想了解更多 OceanBase 2.0 特性?

想与蚂蚁金服OceanBase的一线技术专家深入交流?

在微信添加好友处搜索“liqiqi68536632”添加小编微信,快速加入OceanBase技术交流群!

加入我们
【OB云平台研发专家/架构师】

岗位职责:

  1. 负责大规模运维系统,比如自驱动平台或AIOPS的设计开发,包括部署、监控、备份、高可用、容器化等能力,服务云上和云下企业用户;
  2. 带领一个研发小组,负责产品整体架构的设计、确定核心模块的功能实现方案和性能优化方案;
  3. 参与平台架构的设计,主导设计底层模块,技术实现方案要兼顾性能、稳定性、扩展性和易用性。所有功能及异常通过数据驱动做到自恢复自优化;
  4. 团队内外高效协作,确保前后端模块的协同工作,开发团队采用敏捷开发模式。

【OB云产品研发专家/算法专家】

岗位职责:

1.需要理解业务,根据业务需求完善OceanBase云产品,包括数据库开发中心、自动化性能优化与诊断,容量和性能的分析预测,在线数据实时计算等等;
2.OceanBase驱动、工具研发,包括JDBC,SDK,API等;
3.进行数据相关的采集、存储、同步、管理等开发,基于数据做智能诊断,在数据采集、建模分析、产生决策、自动修复上形成闭环。

可直接发送简历到

OceanBase-Public@list.alibaba-inc.com,我们等的就是你!

相关文章
|
3天前
|
SQL druid Java
Javaweb之数据库连接池以及lombok类库的详细解析
Javaweb之数据库连接池以及lombok类库的详细解析
19 0
|
3天前
|
SQL 存储 关系型数据库
数据库开发之图形化工具以及表操作的详细解析
数据库开发之图形化工具以及表操作的详细解析
21 0
|
30天前
|
API 数据库 C语言
【C/C++ 数据库 sqlite3】SQLite C语言API返回值深入解析
【C/C++ 数据库 sqlite3】SQLite C语言API返回值深入解析
169 0
|
1月前
|
消息中间件 存储 数据库
RocketMQ 流数据库解析:如何实现一体化流处理?
RocketMQ 5.0 是一款云原生的消息中间件,旨在覆盖更多业务场景。它针对国内企业在数字化转型中面临的多场景消息处理需求,提供了一体化的解决方案。
111927 7
|
3天前
|
SQL 存储 关系型数据库
数据库开发之mysql前言以及详细解析
数据库开发之mysql前言以及详细解析
14 0
|
14天前
|
存储 中间件 关系型数据库
数据库切片大对决:ShardingSphere与Mycat技术解析
数据库切片大对决:ShardingSphere与Mycat技术解析
23 0
|
27天前
|
SQL 关系型数据库 MySQL
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(8.0版本升级篇)
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(8.0版本升级篇)
96 0
|
1月前
|
SQL 数据可视化 Apache
阿里云数据库内核 Apache Doris 兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移
阿里云数据库 SelectDB 内核 Doris 的 SQL 方言转换工具, Doris SQL Convertor 致力于提供高效、稳定的 SQL 迁移解决方案,满足用户多样化的业务需求。兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移。
阿里云数据库内核 Apache Doris 兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移
|
1月前
|
存储 Shell Linux
【Shell 命令集合 文件管理】Linux 更新locate命令所使用的数据库 updatedb命令解析
【Shell 命令集合 文件管理】Linux 更新locate命令所使用的数据库 updatedb命令解析
155 0
|
1月前
|
安全 Java 数据库连接
jdbc实现批量给多个表中更新数据(解析Excel表数据插入到数据库中)
jdbc实现批量给多个表中更新数据(解析Excel表数据插入到数据库中)
154 0

推荐镜像

更多