データの複数のレプリカのタイプと分散戦略を記述するために、Localityの概念が導入されました。OceanBaseデータベースの現在のバージョンはテナントレベルのLocalityのみをサポートしており、テーブルレベル、DBレベル、Table GroupレベルでのLocality設定はサポートされなくなりました。
レプリカとはデータを指しますが、Localityが記述する対象はデータを格納するコンテナであり、そのコンテナ内のデータは、そのコンテナのLocality属性が記述するタイプと分散戦略を持ちます。
OceanBaseデータベースの現在のバージョンはテナントレベルのLocalityのみをサポートしていますが、OceanBaseデータベースV3.xではテーブルレベル、DBレベル、Table GroupレベルでのLocality設定もサポートしています。
Locality構文
Localityの構文は以下のとおりです:
replicas{数詞}@location
構文内の各要素の意味は以下の表のとおりです:
要素 |
説明 |
|---|---|
| replicas | レプリカタイプを表します。replicasの値はレプリカ名であり、レプリカの紹介 のレプリカタイプ説明表の名称列からサポートされている値(フルネームと略称)を取得できます。 |
| location | ロケーションを表します。システムが認識している一連の列挙値です。locationの値はゾーン名です。クラスタとテナント内の各ゾーン名は oceanbase.DBA_OB_ZONES ビューで確認できます。DBA_OB_ZONES ビューの詳細については、oceanbase.DBA_OB_ZONES を参照してください。 |
| 数詞 | 1に固定され、1つのレプリカを表します。指定しなくてもかまいません。 |
テナントのLocality属性は、システムテナントの oceanbase.DBA_OB_TENANTS ビューの LOCALITY フィールドで確認できます。例:
obclient(root@sys)[oceanbase]> SELECT TENANT_ID, TENANT_NAME, TENANT_TYPE, CREATE_TIME, PRIMARY_ZONE, LOCALITY, COMPATIBILITY_MODE, STATUS FROM oceanbase.DBA_OB_TENANTS;
クエリ結果は次のとおりです:
+-----------+-------------+-------------+----------------------------+--------------+----------------------------------------------+--------------------+--------+
| TENANT_ID | TENANT_NAME | TENANT_TYPE | CREATE_TIME | PRIMARY_ZONE | LOCALITY | COMPATIBILITY_MODE | STATUS |
+-----------+-------------+-------------+----------------------------+--------------+----------------------------------------------+--------------------+--------+
| 1 | sys | SYS | 2025-12-29 15:43:42.930290 | RANDOM | FULL{1}@zone1 | MYSQL | NORMAL |
| 1001 | META$1002 | META | 2025-12-29 15:44:48.700796 | zone1;zone2 | FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3 | MYSQL | NORMAL |
| 1002 | mysql001 | USER | 2025-12-29 15:44:48.704354 | zone1;zone2 | FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3 | MYSQL | NORMAL |
| 1003 | META$1004 | META | 2025-12-29 15:50:35.033311 | zone1 | FULL{1}@zone1 | MYSQL | NORMAL |
| 1004 | oracle001 | USER | 2025-12-29 15:50:35.034367 | zone1 | FULL{1}@zone1 | ORACLE | NORMAL |
+-----------+-------------+-------------+----------------------------+--------------+----------------------------------------------+--------------------+--------+
5 rows in set
例
以下の例は、5つのゾーン(z1〜z5)を持つOceanBaseクラスタ内で、異なるLocalityを持つ複数のテナントとそれらのLocality状況を示しています:
sys tenantのLocality:
F@z1,F@z2,F@z3,F@z4,F@z5。システムテナントが
z1,z2,z3,z4,z5に各1つのフル機能レプリカを持つことを表します。tenant1のLocality:
F@z1,F@z2,F@z3テナント tenant1が
z1,z2,z3にそれぞれフル機能レプリカを1つずつ持っていることを示します。tenant2のローカリティ:
F@z3,F@z4,F@z5。テナント tenant2が
z3,z4,z5にフル機能レプリカを1つずつ持っていることを示します。
図に示すように:
ローカリティ属性と高可用性アーキテクチャ
マルチレプリカアーキテクチャは、OceanBaseデータベースが従来のデータベースと比べて優れた点です。マルチレプリカアーキテクチャは、OceanBaseデータベースがスタンドアロンレベルの無損失ディザスタリカバリ、データセンターレベルの無損失ディザスタリカバリ、都市レベルの無損失ディザスタリカバリなど、多層の無損失ディザスタリカバリ機能を備える基盤となります。OceanBaseデータベースは、ビジネスシナリオの技術的進化に対応するため、クラスタのデプロイメントアーキテクチャを柔軟に調整できます。
OceanBaseデータベースの柔軟なデプロイメントアーキテクチャは、ローカリティ属性によって体現されています。ローカリティはレプリカのタイプを記述するだけでなく、ゾーン間でのレプリカの分散戦略も記述します。ゾーンにはリージョン属性があり、oceanbase.DBA_OB_ZONESビューのREGIONフィールドで確認できます。これはそのゾーンの地理的分布を記述しています。テナントの複数のレプリカを異なるリージョンの異なるゾーン間で分散させることで、柔軟なデプロイメントモードを実現します。
OceanBaseデータベースの代表的なデプロイメントモードは、同一リージョン内の3データセンター構成、2リージョンにまたがる3データセンター構成、3リージョンにまたがる5データセンター構成の3種類です。それぞれのローカリティ属性の例は以下の通りです:
デプロイメントモード |
ローカリティ属性 |
ゾーンの配置 |
|---|---|---|
| 同一リージョン内の3データセンター構成 | F@z1,F@z2,F@z3 |
z1、z2、z3はそれぞれRegion R1のIDC idc1、idc2、idc3に配置されています |
| 2リージョンにまたがる3データセンター構成 | F@z1,F@z2,F@z3,F@z4,F@z5 |
z1、z2はRegion R1のIDC idc1に配置されています。 z3、z4はRegion R1のIDC idc2に配置されています。 z5はRegion R2に配置されています |
| 3リージョンにまたがる5データセンター構成 | F@z1,F@z2,F@z3,F@z4,F@z5 |
z1、z2はRegion R1のIDC idc1およびIDC idc2に配置されています。 z3、z4はRegion R2のIDC idc3およびIDC idc4に配置されています。 z5はRegion R3に配置されています |