当前位置: 首页 > article >正文

OceanBase之primary_one概念学习

OceanBase 集群通常有若干个zone组成,zone是(Availability Zone)的简写,代表一个可用区。zone本身是一逻辑概念,物理的zone可理解为一地理概念,对OceanBase来说,zone可以理解为副本的概念。

从物理层面看,一个zone通常被看作是一个机房、一个数据中心或一个IDC。比如在一些对数据安全性和服务器要求比较高的数据库,通常会将一个集群分布在同城多个机房,将数据做成多个副本分布在多个机房中(意即放在多个zone中)。

OceanBase里的primary zone 表示 Leader 副本的偏好位置,设置了primary zone即指定了leader更趋向被调度到那个zone上。

primary zone 其实是一个zone列表,其包含了多个zone,并为这些zone设置了优先级。

当primary zone里含有多个zone时,是通过 ";" 和 "," 这两种符号来区分优先级。

使用","符号分割的zone代表具有相同的优先级,使";”符号分割的zone具有从高到底的优先级。

比如,当一个primary zone设置为 'zone1,zone2;zone3,zone4;zone5',其表示 zone1和zone2具有相同的优先级,zone3这zone4具有相同的优先级,zone1和zone2的优先级要高于zone3和zone4,zone5的优先级是最低。

primary zone 有不同的继承关系,其有 table 级、table group级、database级(MySQL模式)、Schema级(Oracle模式)和 tenant(租户)级。

tenant(租户)级外,其它每个级别都可以自由指定primary zone的分布情况,如不指定则默认向上继承。 tenant(租户)级如未指定primary zone,则默认为random,表示各个zone有相同的优先级。

另外要特别注意的是,如果在部署了OceanBase集群,并创建了多租户,在对OceanBase进行数据库升级时,是需要为租户创建primary zone并指定不同zone的优先级,并且如果有多个租户,且要为每个租户都要设置primary zone优先级,否则会升级报错。

如未设置,会有如下类似报错:

[admin@obproxy-node ~]$ more upgrade_checker.log

[2022-12-28 16:49:13] INFO init.py:1611 parameters from cmd: host=“10.110.3.152”, port=2881, user=“root”, password=“ob@Passwd”, log-file=“upgrade_checker.log”

[2022-12-28 16:49:14] INFO init.py:1611 succeed to execute query: select distinct value from GV$OB_PARAMETERS where name=‘min_observer_version’, rowcount = 1

[2022-12-28 16:49:14] INFO init.py:1611 check observer version success, version = 4.0.0.0

[2022-12-28 16:49:14] INFO init.py:1611 succeed to execute query: select count(1) as unsync_cnt from GV$OB_LOG_STAT where in_sync = ‘NO’, rowcount = 1

[2022-12-28 16:49:14] INFO init.py:1611 check paxos replica success

[2022-12-28 16:49:14] INFO init.py:1611 succeed to execute query: select count(1) as cnt from DBA_OB_TENANT_JOBS where job_status=‘INPROGRESS’ and result_code is null, rowcount = 1

[2022-12-28 16:49:14] INFO init.py:1611 succeed to execute query: select count(1) as rebalance_task_cnt from CDB_OB_LS_REPLICA_TASKS, rowcount = 1

[2022-12-28 16:49:14] INFO init.py:1611 check rebalance task success

[2022-12-28 16:49:14] INFO init.py:1611 succeed to execute query: select count(1) from CDB_OB_MAJOR_COMPACTION where STATUS != ‘IDLE’, rowcount = 1

[2022-12-28 16:49:14] INFO init.py:1611 check cluster status success

[2022-12-28 16:49:14] INFO init.py:1611 succeed to execute query: select count(*) as count from DBA_OB_TENANTS where status != ‘NORMAL’, rowcount = 1

[2022-12-28 16:49:14] INFO init.py:1611 check tenant status success

[2022-12-28 16:49:14] INFO init.py:1611 succeed to execute query: select count(1) from CDB_OB_RESTORE_PROGRESS, rowcount = 1

[2022-12-28 16:49:14] INFO init.py:1611 check restore job success

[2022-12-28 16:49:14] INFO init.py:1611 succeed to execute query: select tenant_name,primary_zone from DBA_OB_TENANTS where tenant_id != 1, rowcount = 2

[2022-12-28 16:49:14] INFO init.py:1611 check tenant primary zone success

[2022-12-28 16:49:14] ERROR init.py:1585 run error

Traceback (most recent call last):

File “/tmp/10.110.3.152:2882_10.110.3.153:2882_10.110.3.154:2882/e1c71a4cb252e51f210aae129cee0f09613d42bb/upgrade_checker.py”, line 406, in do_check

check_fail_list()

File “/tmp/10.110.3.152:2882_10.110.3.153:2882_10.110.3.154:2882/e1c71a4cb252e51f210aae129cee0f09613d42bb/upgrade_checker.py”, line 383, in check_fail_list

raise MyError(error_msg)

MyError: 'upgrade checker failed with 2 reasons: [META$1002 tenant primary zone random before update not allowed] , [obuser tenant primary zone random before update not allowed] ’

[2022-12-28 16:49:14] ERROR init.py:1585 normal error

Traceback (most recent call last):

File “/tmp/10.110.3.152:2882_10.110.3.153:2882_10.110.3.154:2882/e1c71a4cb252e51f210aae129cee0f09613d42bb/upgrade_checker.py”, line 410, in do_check

raise e

MyError: 'upgrade checker failed with 2 reasons: [META$1002 tenant primary zone random before update not allowed] , [obuser tenant primary zone random before update not allowed] ’

[2022-12-28 16:49:14] ERROR init.py:1585 normal error

Traceback (most recent call last):

File “/tmp/10.110.3.152:2882_10.110.3.153:2882_10.110.3.154:2882/e1c71a4cb252e51f210aae129cee0f09613d42bb/upgrade_checker.py”, line 440, in

do_check(host, port, user, password, upgrade_params)

File “/tmp/10.110.3.152:2882_10.110.3.153:2882_10.110.3.154:2882/e1c71a4cb252e51f210aae129cee0f09613d42bb/upgrade_checker.py”, line 419, in do_check

raise e

MyError: 'upgrade checker failed with 2 reasons: [META$1002 tenant primary zone random before update not allowed] , [obuser tenant primary zone random before update not allowed] ’


http://www.kler.cn/a/451363.html

相关文章:

  • 基于STM32F103控制L298N驱动两相四线步进电机
  • 今日总结 2024-12-24
  • Datawhale AI 冬令营学习笔记-零编程基础制作井字棋小游戏
  • Kafka快速扫描
  • 数据结构与算法学习笔记----质数
  • 数据库系统原理:数据恢复与备份策略
  • call、bind、apply的区别
  • Python OCR 文字识别
  • 基于若依的ruoyi-nbcio-plus支持VForm3表单字段数据保存到数据库的一种方法——全网首创(二)
  • 外包干了两年,技术退步明显。。。。
  • 时钟芯片入门指南:从原理到实践
  • 作业帮基于 Apache DolphinScheduler 3_0_0 的缺陷修复与优化
  • HarmonyOS Next 应用元服务开发-分布式数据对象迁移数据文件资产迁移
  • 力扣-图论-18【算法学习day.68】
  • 掌握 Ansys ACP 中的参考方向:简化复杂的复合材料设计
  • 怎么设置电脑密码?Windows和Mac设置密码的方法
  • RPC入门教学(一) ———— RPC介绍与protobuf的介绍与使用
  • QT--信号与槽机制
  • k8s dashboard可视化操作界面的安装
  • 利用Converge许可分析提高软件使用效率
  • windows安装java
  • 深度学习day5|用pytoch实现运动鞋识别
  • 【人工智能离散数学基础】——深入详解图论:基础图结构及算法,应用于图神经网络等
  • 微信小程序中momentjs无法切换中文问题处理
  • 鸿蒙(HarmonyOS)原生AI能力之文本识别
  • openssl交叉编译(这次基本上正规了)