OB 运维 | OceanBase 是如何关闭主备线程的?

作者:何文超

爱可生南区交付服务部 DBA 团队成员,主要负责 MySQL 故障处理,MySQL 高可用架构改造,OceanBase 相关技术支持。爱好足球,羽毛球。

本文来源:原创投稿

* 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。



1背景

在 MySQL 主备同步中,存在 stop slave;reset slave all
这样的命令来控制关闭主备线程,删除主备相关信息。

那么在分布式的 OceanBase 中是否存在类似场景?两者的命令是否相同?又有什么区别?

说明

  • MySQL 中是主备库同步;OceanBase 中类似场景存在于主备集群中。
  • OceanBase 主备集群没有 stop slave; reset slave all
    的命令,但有类似场景。

下面来详细介绍 OceanBase 中的 “stop slave; reset slave all
“。

环境准备

一套 OceanBase 主备集群。

2OceanBase 中的 stop slave

下面通过几个实验,来验证 clog 是如何影响 OceanBase 主备集群状态的。

实验 1:关闭 clog,集群是否可用?

关闭 clog 同步(在主集群 sys
租户上操作)。

MySQL [(none)]> alter system disable cluster synchronization 'hwc_cluster' cluster_id=1682755173;
//hwc_clog:备集群名
//cluster_id:备集群 ID

查看同步状态(在主集群 sys
租户上操作)。

MySQL [(none)]> select * from oceanbase.v$ob_standby_status\G;
*************************** 1. row ***************************
            cluster_id: 1682755173
          cluster_name: hwc_cluster
          cluster_role: PHYSICAL STANDBY
        cluster_status: DISABLED
           current_scn: 1688630508000921
      rootservice_list: 10.186.64.63:2882:2881
redo_transport_options: ASYNC NET_TIMEOUT = 30000000
      protection_level: MAXIMUM PERFORMANCE
synchronization_status: CLUSTER IS DISABLED
1 row in set (0.00 sec)

//synchronization_status:CLUSTER IS DISABLED  
//主备集群断开 clog 日志同步

结论:关闭 clog 同步,OceanBase 主备集群关闭。

实验 2:特殊情况下,新数据是否丢失?

验证一下,当 【主备集群 clog 同步断开时间】 > 【clog 的保留时间】,再次开启主备集群间的 clog 同步,新数据是否丢失?

修改 clog 保留天数为 1 天:

MySQL [(none)]> ALTER SYSTEM SET clog_expire_days=1;

1 天后,主集群插入新数据。

MySQL [lpp]> select * from test;
+------+------+
| c1   | c2   |
+------+------+
|    1 | eee  |
|    2 | eee  |
|    3 | eee  |
+------+------+
3 rows in set (0.01 sec)
MySQL [lpp]> insert into test(c1,c2) values(4,'ddd');
Query OK, 1 row affected (0.02 sec)

开启 clog 同步(主集群 sys
租户上操作)。

MySQL [(none)]> alter system enable cluster synchronization 'hwc_cluster' cluster_id=1682755173;
//hwc_clog:备集群名
//cluster_id:备集群 ID

检查备集群是否同步到新数据?(连接串需要添加 -c

MySQL [lpp]> select /*+READ_CONSISTENCY(WEAK) */ * from test;
+------+------+
| c1   | c2   |
+------+------+
|    1 | eee  |
|    2 | eee  |
|    3 | eee  |
|    4 | ddd  |
+------+------+
4 rows in set (0.00 sec)

结论:备集群同步到新数据。

原理:当开启主备集群 clog 同步,会自动检测数据一致性,如发现数据不一致,会自动拉取基线数据进行同步。

4:停止 clog 同步后,备集群是否可用?

clog 正常同步时,备集群查询数据(连接串需要添加 -c)。

MySQL [LPP]> select /*+READ_CONSISTENCY(WEAK) */ * from test;
+------+------+
| c1   | c2   |
+------+------+
|    1 | eee  |
|    2 | eee  |
|    3 | eee  |
|    4 | ddd  |
+------+------+
4 rows in set (0.00 sec)

停止 clog 同步;备集群查询数据(连接串需要添加 -c)。

MySQL [lpp]> select /*+READ_CONSISTENCY(WEAK) */ * from test;
ERROR 4012 (HY000): Timeout

结论:当停止 clog 同步时,备集群不可用。

3OceanBase 中的 reset slave all

MySQL 中通过 reset slave all
删除主备相关信息,从库可以作为一个独立的库,可读可写。

OceanBase 中通过主备集群解耦来实现删除主备集群关系,可参考官方文档[1],具体涉及生产环境,解耦步骤更为繁琐,此处不详细阐述。

4OceanBase 与 MySQL 的区别?

那么,OceanBase 主备集群与 MySQL 主备库,在关闭主备线程,删除主备相关信息上有哪些区别呢?

MySQL

  1. 命令操作位置:备库
  2. 停止同步命令:stop slave
  3. 删除主备关系:reset slave all
  4. 当 binlog 同步断开,主节点日志过期,重新打开日志同步:备库会丢数据
  5. 当 binlog 同步断开,备库是否可用:备库可用

OceanBase

  1. 命令操作位置:主集群
  2. 停止同步命令:alter system disable cluster synchronization 'hwc_cluster' cluster_id=xxxxxxxxx
  3. 删除主备关系:主备库解耦(较为繁琐,OCP V3.3.0 可以白屏化操作)
  4. 当 clog 同步断开,主节点日志过期,重新打开日志同步:备集群不会丢数据
  5. 当 clog 同步断开,备库是否可用:备集群不可用

参考资料

[1]

解耦备集群流程: https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000946147



本文关键字:#OceanBase# #复制#



阅读推荐

技术译文 | 一文了解 MySQL 全新版本模型

故障分析 | MySQL:我的从库竟是我自己!?

故障分析 | 一个 Kill 不掉的 MySQL 会话

故障分析 | MySQL 升级到 8.0 变慢问题分析

技术分享 | 一招解决 MySQL 中 DDL 被阻塞的问题

近期活动推荐

【7.27-8.2】《高手问答》第 303 期 有奖互动

【8.5 上海】OceanBase 云数据库公开课

【8.10 深圳】爱可生技术会议

以下是详细介绍及报名方式。

《高手问答》第 303 期 进行中

爱可生开源社区受邀参加 OSCHINA《高手问答第 303 期》。本期问答将和大家一起探讨 SQL 质量相关的话题。


参与话题讨论,有机会获得技术书籍《高性能MySQL》(第 4 版)!


活动时间:7月27日 - 8月2日

活动页面:https://www.oschina.net/question/4700705_2329495

扫码访问


OceanBase 云数据库公开课 上海站

爱可生技术会议 深圳站

8.10 由爱可生主办的技术交流会议将深圳举办,期待与您线下交流。


活动主题:国产数据库的落地应用和 AI 数据库技术的相关探索

活动时间:2023.8.10 下午13:00 - 17:00

动地点:深圳福田区大中华希尔顿酒店

活动亮点:

1. 重磅嘉宾硬核技术分享、探讨当前出圈热点
2. 100+ 天花板级开发者、运维大佬参会
3. 趣味互动环节(现金红包、最新周边、技术书籍)、精致下午茶


扫码报名见海报底部。



关于 SQLE

SQLE 是一款面向数据库使用者和管理者,支持多场景审核,支持标准化上线流程,原生支持 MySQL 审核且数据库类型可扩展的 SQL 审核工具。目前支持各种数据库规则 700+。

SQLE 获取

🔗 Github https://github.com/actiontech/sqle

📚 文档 https://actiontech.github.io/sqle-docs/

💻 官网 https://opensource.actionsky.com/sqle/

👥 微信技术交流群:添加管理员微信 ActionOpenSource



免责声明:

1、本站资源由自动抓取工具收集整理于网络。

2、本站不承担由于内容的合法性及真实性所引起的一切争议和法律责任。

3、电子书、小说等仅供网友预览使用,书籍版权归作者或出版社所有。

4、如作者、出版社认为资源涉及侵权,请联系本站,本站将在收到通知书后尽快删除您认为侵权的作品。

5、如果您喜欢本资源,请您支持作者,购买正版内容。

6、资源失效,请下方留言,欢迎分享资源链接

文章评论

0条评论