網(wǎng)站導(dǎo)航css horizontal menu最全的百度網(wǎng)盤搜索引擎
OBProxy路由策略
Primary Zone 路由
官方聲明默認(rèn)情況,會(huì)將租戶請(qǐng)求發(fā)送到租戶的 primary zone 所在的機(jī)器上,通過 Primary Zone 路由可以盡量發(fā)往主副本,方便快速尋找 Leader 副本。另外,設(shè)置primary zone 也會(huì)在一定成都上減少 分布式執(zhí)行計(jì)劃 以及 遠(yuǎn)程執(zhí)行計(jì)劃 生成,對(duì)于SQL性能提升有一定的幫助
OBProxy 配置項(xiàng) enable_primary_zone 控制是否啟用Primary zone路由,默認(rèn)是開啟的
[root@server061 ~]# mysql -h10.0.0.61 -P2883 -uroot@sys#obdemo61 -paaAA11__
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 7619
Server version: 5.6.25 OceanBase 4.2.1.10 (r110020012024120420-760d3c19482ba306e5a10e214a8ec64422bbf1f0) (Built Dec 4 2024 20:33:18)Copyright (c) 2000, 2024, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show proxyconfig like 'enable_primary_zone';
+---------------------+-------+------------------------------------------------------------------------------------------------------+-------------+---------------+-------+--------------+
| name | value | info | need_reboot | visible_level | range | config_level |
+---------------------+-------+------------------------------------------------------------------------------------------------------+-------------+---------------+-------+--------------+
| enable_primary_zone | True | enable proxy route according to the tenant primary zone priority while proxy calculate route failed. | false | USER | | LEVEL_GLOBAL |
+---------------------+-------+------------------------------------------------------------------------------------------------------+-------------+---------------+-------+--------------+
1 row in set (0.00 sec)mysql>
設(shè)置租戶的Primary Zone優(yōu)先級(jí)
命令行方式
obclient [oceanbase]> ALTER TENANT mq_t1 PRIMARY_ZONE='zone1,zone2';
Query OK, 0 rows affected
OCP方式
ODP指定Zone路由
官方聲明如下
1.在業(yè)務(wù)并不關(guān)心Leader位置,需要路由到指定節(jié)點(diǎn)的場(chǎng)景下,我們可以通過ODP 配置項(xiàng)配置指定zone路由 (proxy_primary_zone_name),ODP會(huì)將請(qǐng)求路由至固定的OBServer節(jié)點(diǎn)。
2. ODP的配置項(xiàng)proxy_primary_zone_name 優(yōu)先級(jí)高于OceanBase 集群租戶的Primary Zone。該配置項(xiàng)是強(qiáng)制性的路由。如果是交易 支付等強(qiáng)讀業(yè)務(wù),希望路由到Leader的場(chǎng)景,不建議設(shè)置該路由策略,避免產(chǎn)生大量遠(yuǎn)程路由、二次路由等問題
使用sys租戶登錄ODP設(shè)置
[root@server061 ~]# mysql -h10.0.0.61 -P2883 -uroot@sys#obdemo61 -paaAA11__
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 879
Server version: 5.6.25 OceanBase 4.2.1.10 (r110020012024120420-760d3c19482ba306e5a10e214a8ec64422bbf1f0) (Built Dec 4 2024 20:33:18)Copyright (c) 2000, 2024, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>
mysql>
mysql> ALTER PROXYCONFIG SET PROXY_PRIMARY_ZONE_NAME = 'zone1';
Query OK, 0 rows affected (0.02 sec)mysql>
普通租戶創(chuàng)建測(cè)試表
[root@server061 ~]# mysql -h10.0.0.61 -P2883 -uroot@obmysql#obdemo61 -paaAA11__
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 892
Server version: 5.6.25 OceanBase 4.2.1.10 (r110020012024120420-760d3c19482ba306e5a10e214a8ec64422bbf1f0) (Built Dec 4 2024 20:33:18)Copyright (c) 2000, 2024, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>
mysql> use tpccdb;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
mysql>
mysql> CREATE TABLE T(C1 INT,C2 INT,C3 INT) PARTITION BY-> HASH(C1) PARTITIONS 8;
Query OK, 0 rows affected (0.47 sec)
指定分區(qū)鍵進(jìn)行查詢,可以看出ODP路由到zone1上
mysql> EXPLAIN ROUTE SELECT * FROM T WHERE C1=1;
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Route Plan |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
Trans Current Query:"EXPLAIN ROUTE SELECT * FROM T WHERE C1=1"Route Prompts
-----------------
> ROUTE_INFO[INFO] Will do table partition location lookup to decide which OBServer to route toRoute Plan
-----------------
> SQL_PARSE:{cmd:"OB_MYSQL_COM_QUERY", table:"t"}
> ROUTE_INFO:{route_info_type:"USE_PARTITION_LOCATION_LOOKUP"}
> LOCATION_CACHE_LOOKUP:{mode:"oceanbase"}> TABLE_ENTRY_LOOKUP_START:{}> FETCH_TABLE_RELATED_DATA:{part_level:1, part_expr:"c1"}> TABLE_ENTRY_LOOKUP_DONE:{table:"t", table_id:"500079", table_type:"USER TABLE", partition_num:8}> PARTITION_ID_CALC_START:{}> EXPR_PARSE:{col_val:"C1=1"}> RESOLVE_EXPR:{part_range:"[1 ; 1]"}> RESOLVE_TOKEN:{token_type:"TOKEN_INT_VAL", resolve:"BIGINT:1", token:"1"}> CALC_PARTITION_ID:{part_description:"partition by hash(INT<binary>) partitions 8"}> PARTITION_ID_CALC_DONE:{partition_id:200057, level:1, partitions:"(p1)"}> PARTITION_ENTRY_LOOKUP_DONE:{leader:"10.0.0.61:2881"}
> ROUTE_POLICY:{route_policy:"PROXY_PRIMARY_ZONE_NAME_ONLY", replica:"10.0.0.61:2881", idc_type:"SAME_IDC", zone_type:"ReadWrite", role:"LEADER", type:"FULL", is_partition_server:true, proxy_primary_zone:"zone1", chosen_route_type:"ROUTE_TYPE_MAX", trans_consistency:"WEAK", session_consistency:"WEAK", proxy_idc_name:"hanzghou1"}
> CONGESTION_CONTROL:{svr_addr:"10.0.0.61:2881"}|
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.14 sec)mysql>
LDC路由
官網(wǎng)聲明如下
使用sys租戶設(shè)置OceanBase 集群的LDC配置
[root@server061 ~]# mysql -h10.0.0.61 -P2883 -uroot@sys#obdemo61 -paaAA11__
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 7616
Server version: 5.6.25 OceanBase 4.2.1.10 (r110020012024120420-760d3c19482ba306e5a10e214a8ec64422bbf1f0) (Built Dec 4 2024 20:33:18)Copyright (c) 2000, 2024, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> ALTER SYSTEM MODIFY zone "zone1" SET region = "zhejiang";
Query OK, 0 rows affected (0.08 sec)mysql> ALTER SYSTEM MODIFY zone "zone1" SET idc = "hanzghou1"-> ;
Query OK, 0 rows affected (0.00 sec)mysql> SELECT * FROM oceanbase.DBA_OB_ZONES;
+-------+----------------------------+----------------------------+--------+-----------+----------+-----------+
| ZONE | CREATE_TIME | MODIFY_TIME | STATUS | IDC | REGION | TYPE |
+-------+----------------------------+----------------------------+--------+-----------+----------+-----------+
| zone1 | 2024-12-29 14:35:19.466142 | 2025-01-28 23:49:47.159742 | ACTIVE | hanzghou1 | zhejiang | ReadWrite |
+-------+----------------------------+----------------------------+--------+-----------+----------+-----------+
1 row in set (0.01 sec)mysql>
使用sys租戶登錄設(shè)置ODP的LDC配置
mysql> ALTER PROXYCONFIG SET proxy_idc_name= hanzghou1;
Query OK, 0 rows affected (0.00 sec)mysql>
mysql>
mysql> SHOW PROXYINFO IDC;
+-----------------+--------------+----------------+-----------------+--------------+-------------+--------------+
| global_idc_name | cluster_name | match_type | regions_name | same_idc | same_region | other_region |
+-----------------+--------------+----------------+-----------------+--------------+-------------+--------------+
| hanzghou1 | obdemo61 | MATCHED_BY_IDC | [[0]"zhejiang"] | [[0]"zone1"] | [] | [] |
+-----------------+--------------+----------------+-----------------+--------------+-------------+--------------+
1 row in set (0.01 sec)mysql>
官方聲明
通過 配置項(xiàng)proxy_idc_name 控制給 OceanBase 集群的 Zone 設(shè)置 地區(qū)(Region)屬性和機(jī)房(IDC)屬性,并給ODP指定機(jī)房(IDC)配置 項(xiàng),ODP將弱讀請(qǐng)求按“同機(jī)房>同地區(qū)>異地”的優(yōu)先級(jí)順序進(jìn)行 OBServer 的選取,主要體現(xiàn)是就近原則
隨機(jī)路由
如果OB集群為多副本 且未開啟 Primary Zone 路由 或者 未設(shè)置 LDC 路由,就會(huì)直接使用隨機(jī)路由,如下圖中租戶Zone優(yōu)先級(jí)為random的租戶