データの複数のレプリカのタイプと分散戦略を記述するために、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クラスタ内で、異なるローカリティを持つ複数のテナントとそれぞれのローカリティ状況がどのように収容されるかを示しています。
sys tenantのローカリティ:
F@z1,F@z2,F@z3,F@z4,F@z5。システムテナントが
z1,z2,z3,z4,z5の各ゾーンに1つずつフル機能レプリカを持っていることを示します。tenant1のローカリティ:
F@z1,F@z2,F@z3。テナントtenant1が
z1,z2,z3の各ゾーンに1つずつフル機能レプリカを持っていることを示します。tenant2のローカリティ:
F@z3,F@z4,F@z5。テナントtenant2が
z3,z4,z5のゾーンに1つずつフル機能レプリカを持っていることを示します。
図に示すように:

Locality属性と高可用性アーキテクチャ
マルチレプリカアーキテクチャは、OceanBaseデータベースが従来のデータベースと比べて有するアーキテクチャ上の優位性です。このマルチレプリカアーキテクチャは、OceanBaseデータベースがシングルマシンレベルの無損失ディザスタリカバリ、データセンターレベルの無損失ディザスタリカバリ、都市レベルの無損失ディザスタリカバリなど、多層の無損失ディザスタリカバリ能力を備える基盤となります。OceanBaseデータベースは、ビジネスシナリオの技術的進化に対応するため、クラスタのデプロイメントアーキテクチャを柔軟に調整することをサポートしています。
OceanBaseデータベースの柔軟なデプロイメントアーキテクチャは、まさにLocality属性によって体現されています。Localityはレプリカのタイプを記述するだけでなく、ゾーン間でのレプリカの分散戦略も記述します。ゾーンにはRegion属性があり、oceanbase.DBA_OB_ZONES ビューの REGION フィールドで確認できます。これはそのゾーンの地理的分布を記述しています。テナントの複数のレプリカを異なるRegionの異なるゾーン間で分散させることで、柔軟なデプロイメントパターンを実現します。
OceanBaseデータベースの代表的なデプロイメントパターンは、同一都市内の3センター構成、2リージョン3センター構成、3リージョン5センター構成の3種類があります。それぞれのLocality属性の例は以下のとおりです:
デプロイメントモード |
Localityプロパティ |
Zoneの配置 |
|---|---|---|
| 同一リージョン内の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に配置されます |