欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > OceanBase之primary_one概念学习

OceanBase之primary_one概念学习

2025/2/26 1:56:15 来源:https://blog.csdn.net/shlei5580/article/details/144682819  浏览:    关键词: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] ’

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词