OceanBase logo

OceanBase

トランザクション処理、分析、AIワークロードに最適な分散データベース

デプロイを自由に

OceanBase Cloud

OceanBaseの導入とスケーリングを最適化

エンタープライズ版

自社インフラ上での運用・管理に対応

オープンソース版を試す

コミュニティ版

開発者向けオープンソース分散データベース

OceanBase seekdb

AIネイティブなオープンソースの検索データベース

顧客事例

さまざまな業界の企業による導入事例を紹介します。

さらに見る
利用シーン別

あらゆるシナリオに対応するOLTP

ハイブリッドクラウドソリューション

大容量ストレージデータベースのコスト削減

リアルタイム分析混合ワークロード

複数インスタンスの統合

ドキュメント

会社概要

OceanBaseの企業情報、パートナーシップ、そして信頼性・セキュリティへの取り組みについて紹介します。

OceanBaseについて

法的情報

お問い合わせ

日本 - 日本語
International - English
中国站 - 简体中文
クラウドで始める

トランザクション処理、分析、AIワークロードに最適な分散データベース

デプロイを自由に

OceanBase Cloud

OceanBaseの導入とスケーリングを最適化

エンタープライズ版

自社インフラ上での運用・管理に対応

オープンソース版を試す

コミュニティ版

開発者向けオープンソース分散データベース

OceanBase seekdb

AIネイティブなオープンソースの検索データベース

顧客事例

さまざまな業界の企業による導入事例を紹介します。

さらに見る
利用シーン別

あらゆるシナリオに対応するOLTP

ハイブリッドクラウドソリューション

大容量ストレージデータベースのコスト削減

リアルタイム分析混合ワークロード

複数インスタンスの統合

OceanBaseの企業情報、パートナーシップ、そして信頼性・セキュリティへの取り組みについて紹介します。

OceanBaseについて

法的情報

お問い合わせ

クラウドで始める
编组
すべての製品
    • データベース
    • アイコンOceanBaseデータベース
アイコン

OceanBaseデータベース

V4.3.5

    OceanBase logo

    AI時代を支える分散データベース

    日本 - 日本語
    International - English
    中国站 - 简体中文
    プロダクト
    OceanBase Cloudエンタープライズ版コミュニティ版OceanBase seekdb
    会社概要
    OceanBaseについて法的情報お問い合わせ
    公式アカウント
    ConnpassXQiitaLumaGitHub

    © OceanBase 2026. All rights reserved

    クラウドサービス契約個人情報保護ポリシーセキュリティ
    お問い合わせ
    ドキュメントフィードバック
    1. ホーム
    2. OceanBaseデータベース
    3. V4.3.5
    アイコンOceanBaseデータベース
    V 4.3.5
    • V 4.3.5

    Primary Zoneの調整によるテナントのスケーリング

    最終更新日:2026-04-09 02:53:56  更新
    シェア
    このページの内容
    前提条件
    プライマリゾーンの追加
    プライマリゾーンの削減

    折りたたみ

    シェア

    テナントのスケールアウトとスケールインとは、本質的にはテナントのサービス能力(コンピュート能力とストレージ容量)を向上または低下させる操作です。この操作は、単一ノードのサービス能力を垂直に向上または低下させる方法と、水平に増減させる方法の2種類があります。本記事では、Primary Zoneを変更することで、計算ノードを水平に増減させ、テナント全体のサービス能力を向上または低下させることで、テナントのスケールアウト・インを実現する方法を紹介します。

    前提条件

    テナントのスケーリング操作を行う前に、以下の操作が必要です:

    • テナント内のロードバランシングポリシーを設定します。

      テナント内のロードバランシングポリシーは、テナントレベルの構成パラメータ enable_rebalance と enable_transfer によって共同で制御されます。

    • パラメータ enable_rebalance は、システムテナントではテナント間のロードバランシングを有効にするかどうかを、ユーザーテナントではテナント内のロードバランシングを有効にするかどうかを制御します。テナントのスケールアップおよびスケールダウン操作を行う際には、テナント内のロードバランシングを有効にする必要があります。テナント間のロードバランシングポリシーとテナント内のロードバランシングポリシーの詳細については、データロードバランシングのベストプラクティスを参照してください。この構成パラメータのデフォルト値は true で、ロードバランシングを有効にすることを示します。設定後は OBServer ノードの再起動を必要とせず、即時に反映されます。

    • パラメータ enable_transfer は、テナント下の Transfer 機能を有効にするかどうかを制御します。デフォルト値は true です。設定後は OBServer ノードの再起動を必要とせず、即時に反映されます。パラメータ enable_transfer の値の意味は、パラメータ enable_rebalance の値に依存します:

      • パラメータ enable_rebalance の値が false の場合、パラメータ enable_transfer の値が true であっても false であっても、システムは自動ロードバランシングを行いません。

      • パラメータ enable_rebalance の値が true で、enable_transfer の値が true の場合、テナントのスケールアップおよびスケールダウン操作を行う際、システムはパーティションの分布を自動的に調整し、ロードバランシングを実現します。

      • パラメータ enable_rebalance の値が true で、enable_transfer の値が false の場合、テナントのスケールアップおよびスケールダウン操作を行う際、システムは Transfer 操作を実行できず、ログストリーム移行による限られたロードバランシングしか実現できません。

      具体的な設定方法は以下のとおりです:

      • システムテナントで指定されたテナントのロードバランシングポリシーを設定します。

        • システムテナントで指定されたテナントのテナント内ロードバランシングとテナント下の Transfer 機能を有効にします。

          ALTER SYSTEM SET enable_rebalance = true TENANT = 'tenant_name';
          
          ALTER SYSTEM SET enable_transfer = true TENANT = 'tenant_name';
          

          上記のステートメントは、指定されたテナントの構成パラメータ enable_rebalance と enable_transfer の値が true であることを示します。

    • システムテナントですべてのユーザーテナント(sys テナントとメタテナントを除く)のテナント内ロードバランシングとテナント下の Transfer 機能を有効にします。

      ```sql
      ALTER SYSTEM SET enable_rebalance = true TENANT = all_user;
      ```
      
      ```sql
      ALTER SYSTEM SET enable_transfer = true TENANT = all_user;
      ```
      
      または
      
      ```sql
      ALTER SYSTEM SET enable_rebalance = true TENANT = all;
      ```
      
      ```sql
      ALTER SYSTEM SET enable_transfer = true TENANT = all;
      ```
      
      上記のステートメントは、すべてのユーザーテナントの構成パラメータ `enable_rebalance` と `enable_transfer` の値が `true` であることを示します。
      
      <main id="notice" type='explain'>
      <h4>説明</h4>
      <p>OceanBaseデータベースは、V4.2.1バージョンから、<code>TENANT = all_user</code> と <code>TENANT = all</code> のセマンティクスが同じになりました。すべてのユーザーテナントに適用する必要がある場合は、<code>TENANT = all_user</code> を使用することを推奨します。今後、<code>TENANT = all</code> は廃止されます。</p>
      </main>
      
      • ユーザーテナントで本テナントのロードバランシングポリシーを設定します。

        MySQLモード
        Oracleモード

        MySQLテナントで本テナントのテナント内ロードバランシングとテナント下のTransfer機能を有効にするステートメントは以下のとおりです:

        ALTER SYSTEM SET enable_rebalance = true;
        
        ALTER SYSTEM SET enable_transfer = true;
        

        Oracleテナントで本テナントのテナント内ロードバランシングとテナント下のTransfer機能を有効にするステートメントは以下のとおりです:

        ALTER SYSTEM SET enable_rebalance = 'true';
        
        ALTER SYSTEM SET enable_transfer = 'true';
        

      enable_rebalance と enable_transfer の設定項目の詳細については、enable_rebalance と enable_transfer を参照してください。

    • テナントのスケールアウト/イン操作を実行する前に、テナントのリソース計画を実行することを推奨します。これにより、より良い結果を得ることができます。

      テナントのスケールアウト/インに関するリソース計画の詳細な手順については、テナントのスケールアウト/インのリソース計画 を参照してください。

    プライマリゾーンの追加

    1. root ユーザーを使用して、クラスタの sys テナントにログインします。

       obclient -h172.30.xxx.xxx -P2883 -uroot@sys#obdemo -pxxxx -A
      
    2. oceanbase データベースに移動します。

       use oceanbase;
      
    3. テナント mysql001 の基本情報を、TENANT_ID、PRIMARY_ZONE などの情報で確認します。

      obclient> SELECT TENANT_ID, TENANT_NAME, PRIMARY_ZONE FROM oceanbase.DBA_OB_TENANTS WHERE TENANT_NAME = 'mysql001';
      

      クエリ結果は次のとおりです:

      +-----------+-------------+--------------+
      | TENANT_ID | TENANT_NAME | PRIMARY_ZONE |
      +-----------+-------------+--------------+
      |      1004 | mysql001    | zone1;zone2  |
      +-----------+-------------+--------------+
      1 row in set
      

      クエリ結果から、テナントmysql001のTENANT_IDは1004であり、PRIMARY_ZONEの第一優先順位はzone1であることがわかります。

    4. テナント mysql001 の現在のログストリームリーダーのレプリカ位置の分布情報を確認します。

      obclient> SELECT TENANT_ID, LS_ID, SVR_IP, SVR_PORT, ZONE, ROLE, REPLICA_TYPE FROM oceanbase.CDB_OB_LS_LOCATIONS WHERE TENANT_ID = 1004 AND LS_ID != 1 AND ROLE = 'LEADER';
      

      クエリ結果は次のとおりです:

      +-----------+-------+---------------+----------+--------+--------+--------------+
      | TENANT_ID | LS_ID | SVR_IP        | SVR_PORT | ZONE   | ROLE   | REPLICA_TYPE |
      +-----------+-------+---------------+----------+--------+--------+--------------+
      |      1004 |  1001 | 172.xx.xxx.xx |    2882  |  zone1 | LEADER | FULL         |
      |      1004 |  1012 | 172.xx.xxx.xx |    2882  |  zone1 | LEADER | FULL         |
      +-----------+-------+---------------+----------+--------+--------+--------------+
      2 rows in set
      

      クエリ結果から、テナント mysql001 は2つのリーダーレプリカがサービスを提供しており、zone1の2台のマシンに均等に分散していることがわかります。

    5. テナントmysql001のPRIMARY_ZONEプロパティを変更し、第一優先順位ゾーンの数を1から2に調整します。

      obclient> ALTER TENANT mysql001 PRIMARY_ZONE='zone1,zone2'; 
      
    6. プライマリゾーン追加タスクの実行状態を確認します。

      obclient> SELECT * FROM oceanbase.DBA_OB_TENANT_JOBS WHERE JOB_TYPE='ALTER_TENANT_PRIMARY_ZONE' AND TENANT_ID = 1004;
      

      クエリ結果は次のとおりです:

      +--------+---------------------------+------------+-------------+----------+----------------------------+----------------------------+-----------+--------------------------------------------------+----------------------------------------+----------------+-------------+
      | JOB_ID | JOB_TYPE                  | JOB_STATUS | RESULT_CODE | PROGRESS | START_TIME                 | MODIFY_TIME                | TENANT_ID | SQL_TEXT                                         | EXTRA_INFO                             | RS_SVR_IP      | RS_SVR_PORT |
      +--------+---------------------------+------------+-------------+----------+----------------------------+----------------------------+-----------+--------------------------------------------------+----------------------------------------+----------------+-------------+
      |      4 | ALTER_TENANT_PRIMARY_ZONE | SUCCESS    |           0 |      100 | 2024-12-18 17:26:00.069089 | 2024-12-18 17:26:20.919021 |      1004 | ALTER TENANT mysql001 PRIMARY_ZONE='zone1,zone2' | FROM: 'zone1;zone2', TO: 'zone1,zone2' | 172.xx.xxx.xx  |       2882  |
      +--------+---------------------------+------------+-------------+----------+----------------------------+----------------------------+-----------+--------------------------------------------------+----------------------------------------+----------------+-------------+
      1 row in set
      

      クエリ結果から、以下のフィールドに基づいて対応するタスクレコードを見つけてください:

      • START_TIME:タスクの開始時間。
      • SQL_TEXT:タスクに対応するSQLステートメント。
      • EXTRA_INFO:変更前後のプライマリゾーン情報。

      対応するタスクレコードの JOB_STATUS の値が SUCCESS の場合、プライマリゾーン追加タスクが正常に実行されたことを示します。

      ビュー DBA_OB_TENANT_JOBS の詳細なフィールドの説明については、DBA_OB_TENANT_JOBSを参照してください。

    7. テナント mysql001 の基本情報を確認し、PRIMARY_ZONE プロパティの変更が成功したことを確認します。優先順位1が zone1 から zone1,zone2 に変更されました。

      obclient> SELECT PRIMARY_ZONE FROM oceanbase.DBA_OB_TENANTS WHERE TENANT_ID = 1004;
      

      クエリ結果は次のとおりです:

      +--------------+
      | PRIMARY_ZONE |
      +--------------+
      | zone1,zone2  |
      +--------------+
      1 row in set
      
    8. 再度、テナント mysql001 のログストリームリーダーのレプリカ位置の分布情報を確認します。

      obclient> SELECT TENANT_ID, LS_ID, SVR_IP, SVR_PORT, ZONE, ROLE, REPLICA_TYPE FROM oceanbase.CDB_OB_LS_LOCATIONS WHERE TENANT_ID = 1004 AND LS_ID != 1 AND ROLE = 'LEADER';
      

      クエリ結果は次のとおりです:

      +-----------+-------+---------------+----------+-------+--------+--------------+
      | TENANT_ID | LS_ID | SVR_IP        | SVR_PORT | ZONE  | ROLE   | REPLICA_TYPE |
      +-----------+-------+---------------+----------+-------+--------+--------------+
      |      1004 |  1001 | 172.xx.xxx.xx |    2882  | zone1 | LEADER | FULL         |
      |      1004 |  1012 | 172.xx.xxx.xx |    2882  | zone1 | LEADER | FULL         |
      |      1004 |  1013 | 172.xx.xxx.xx |    2882  | zone2 | LEADER | FULL         |
      |      1004 |  1014 | 172.xx.xxx.xx |    2882  | zone2 | LEADER | FULL         |
      +-----------+-------+---------------+----------+-------+--------+--------------+
      4 rows in set
      

      クエリ結果から、テナント mysql001 はzone1とzone2にそれぞれ2つのリーダーレプリカがあり、合計4つのリーダーレプリカがサービスを提供していることがわかります。

    上記の例から、変更前はテナント mysql001 の PRIMARY_ZONE の優先順位1のゾーンの数が1であり、2つのリーダーレプリカがサービスを提供していました。変更後は、テナント mysql001 の PRIMARY_ZONE の優先順位1のゾーンの数が1から2に変更され、サービスを提供するリーダーレプリカが2から4に増加し、計算ノードが追加されたことで、テナントのスケーリングが実現されました。

    プライマリゾーンの削減

    1. root ユーザーを使用して、クラスタの sys テナントにログインします。

       obclient -h172.30.xxx.xxx -P2883 -uroot@sys#obdemo -pxxxx -A
      
    2. oceanbase データベースに移動します。

       use oceanbase;
      
    3. テナント mysql001 の基本情報を、TENANT_ID、PRIMARY_ZONE などの情報とともに確認します。

      obclient> SELECT TENANT_ID, TENANT_NAME, PRIMARY_ZONE FROM oceanbase.DBA_OB_TENANTS WHERE TENANT_NAME = 'mysql001';
      

      確認結果は次のとおりです:

      +-----------+-------------+--------------+
      | TENANT_ID | TENANT_NAME | PRIMARY_ZONE |
      +-----------+-------------+--------------+
      |      1004 | mysql001    | zone1,zone2  |
      +-----------+-------------+--------------+
      1 row in set
      

      クエリ結果から、テナントmysql001のTENANT_IDは1004であり、PRIMARY_ZONEの第一優先順位はzone1であることがわかります。

    4. テナント mysql001 の現在のログストリームのリーダー複製の位置分布情報を確認します。

      obclient> SELECT TENANT_ID, LS_ID, SVR_IP, SVR_PORT, ZONE, ROLE, REPLICA_TYPE FROM oceanbase.CDB_OB_LS_LOCATIONS WHERE TENANT_ID = 1004 AND LS_ID != 1 AND ROLE = 'LEADER';
      

      確認結果は次のとおりです:

      +-----------+-------+---------------+----------+-------+--------+--------------+
      | TENANT_ID | LS_ID | SVR_IP        | SVR_PORT | ZONE  | ROLE   | REPLICA_TYPE |
      +-----------+-------+---------------+----------+-------+--------+--------------+
      |      1004 |  1001 | 172.xx.xxx.xx |    2882  | zone1 | LEADER | FULL         |
      |      1004 |  1012 | 172.xx.xxx.xx |    2882  | zone1 | LEADER | FULL         |
      |      1004 |  1013 | 172.xx.xxx.xx |    2882  | zone2 | LEADER | FULL         |
      |      1004 |  1014 | 172.xx.xxx.xx |    2882  | zone2 | LEADER | FULL         |
      +-----------+-------+---------------+----------+-------+--------+--------------+
      4 rows in set
      

      確認結果から、テナント mysql001 は現在、4つのリーダー複製がサービスを提供しており、zone1とzone2のそれぞれの2台のマシンに均等に分散しています。

    5. テナント mysql001 の PRIMARY_ZONE プロパティを変更し、優先順位1のゾーンの数を2から1に調整します。

      obclient> ALTER TENANT mysql001 PRIMARY_ZONE='zone1;zone2'; 
      
    6. プライマリゾーンの削減タスクの実行状態を確認します。

      obclient> SELECT * FROM oceanbase.DBA_OB_TENANT_JOBS WHERE JOB_TYPE='ALTER_TENANT_PRIMARY_ZONE' AND TENANT_ID = 1004;
      

      確認結果は次のとおりです:

      +--------+---------------------------+------------+-------------+----------+----------------------------+----------------------------+-----------+--------------------------------------------------+-----------------------------------------+----------------+-------------+
      | JOB_ID | JOB_TYPE                  | JOB_STATUS | RESULT_CODE | PROGRESS | START_TIME                 | MODIFY_TIME                | TENANT_ID | SQL_TEXT                                         | EXTRA_INFO                              | RS_SVR_IP      | RS_SVR_PORT |
      +--------+---------------------------+------------+-------------+----------+----------------------------+----------------------------+-----------+--------------------------------------------------+-----------------------------------------+----------------+-------------+
      |      4 | ALTER_TENANT_PRIMARY_ZONE | SUCCESS    |           0 |      100 | 2024-12-18 17:26:00.069089 | 2024-12-18 17:26:20.919021 |      1004 | ALTER TENANT mysql001 PRIMARY_ZONE='zone1,zone2' | FROM: 'zone1;zone2', TO: 'zone1,zone2'  |  172.xx.xxx.xx |        2882 |
      |      5 | ALTER_TENANT_PRIMARY_ZONE | SUCCESS    |           0 |      100 | 2024-12-18 17:41:44.412459 | 2024-12-18 17:41:54.965873 |      1004 | ALTER TENANT mysql001 PRIMARY_ZONE='zone1;zone2' | FROM: 'zone1,zone2', TO: 'zone1;zone2'  |  172.xx.xxx.xx |        2882 |
      +--------+---------------------------+------------+-------------+----------+----------------------------+----------------------------+-----------+--------------------------------------------------+-----------------------------------------+----------------+-------------+
      2 rows in set
      

      確認結果から、以下のフィールドに基づいて対応するタスクレコードを見つけてください。

      • START_TIME:タスクの開始時間。
      • SQL_TEXT:タスクに対応するSQLステートメント。
      • EXTRA_INFO:変更前後のプライマリゾーンの情報。

      対応するタスクレコードの JOB_STATUS の値が SUCCESS の場合、プライマリゾーンの削減タスクが正常に実行されたことを示します。

      ビュー DBA_OB_TENANT_JOBS の詳細なフィールドの説明については、DBA_OB_TENANT_JOBSを参照してください。

    7. テナント mysql001 の基本情報を確認し、PRIMARY_ZONE プロパティの変更が成功したことを確認します。変更前は zone1,zone2 でしたが、変更後は zone1;zone2 に変更されました。

      obclient> SELECT PRIMARY_ZONE FROM oceanbase.DBA_OB_TENANTS WHERE TENANT_ID = 1004;
      

      確認結果は次のとおりです:

      +--------------+
      | PRIMARY_ZONE |
      +--------------+
      |  zone1;zone2 |
      +--------------+
      1 row in set
      
    8. 再び、テナント mysql001 のログストリームのリーダー複製の位置分布情報を確認します。

      obclient> SELECT TENANT_ID, LS_ID, SVR_IP, SVR_PORT, ZONE, ROLE, REPLICA_TYPE FROM oceanbase.CDB_OB_LS_LOCATIONS WHERE TENANT_ID = 1004 AND LS_ID != 1 AND ROLE = 'LEADER';
      

      確認結果は次のとおりです:

      +-----------+-------+---------------+----------+--------+--------+--------------+
      | TENANT_ID | LS_ID | SVR_IP        | SVR_PORT | ZONE   | ROLE   | REPLICA_TYPE |
      +-----------+-------+---------------+----------+--------+--------+--------------+
      |      1004 |  1001 | 172.xx.xxx.xx |    2882  |  zone1 | LEADER | FULL         |
      |      1004 |  1012 | 172.xx.xxx.xx |    2882  |  zone1 | LEADER | FULL         |
      +-----------+-------+---------------+----------+--------+--------+--------------+
      2 rows in set
      

      確認結果から、テナント mysql001 は現在、zone1の2つのリーダー複製がサービスを提供しています。

    上記の例から、変更前は、テナント mysql001 の PRIMARY_ZONE の優先順位1のゾーンの数が2で、4つのリーダー複製がサービスを提供していました。変更後は、テナント mysql001 の PRIMARY_ZONE の優先順位1のゾーンの数が2から1に変更され、サービスを提供するリーダー複製は4から2に変更されました。これにより、計算ノードが削減され、テナントのスケールダウンが実現されました。

    前のトピック

    Unit Numberの調整によるテナントのスケーリング
    最後

    次のトピック

    リソースプールのプロパティを変更する
    次
    このページの内容
    前提条件
    プライマリゾーンの追加
    プライマリゾーンの削減