OceanBaseクラスタにノードを追加できます。ノードの追加は、柔軟な拡張やデプロイメントの調整に適しています。
柔軟な拡張:拡張後、ゾーン内により多くのノードが配置されることで、ユニットの移行やテナントの
UNIT_NUMの調整、新規テナントの作成などの操作を実行できるようになります。デプロイメントの調整:デプロイメントの調整には、クラスタのデプロイ方式を同一リージョン内の3センター構成から異なるリージョンにまたがる5センター構成への変更、またはデータセンターの廃止時にゾーンをあるデータセンターから別のデータセンターへ移転する場合が含まれます。この場合、まずゾーンを追加し、そのゾーン内にノードを追加した後、テナントのロケーシティ属性を調整する必要があります。
OceanBaseデータベースの柔軟な拡張機能は、従来型データベースと比較して明らかなアーキテクチャ上の利点があります。従来型データベースではデータは1台のマシンに保存されますが、OceanBaseデータベースではデータを複数のマシンに分散させることで、スケーラビリティの問題を解決し、分散アーキテクチャの真の利点を発揮します。クラスタやテナントの容量が不足した場合、より多くのノードを追加するだけで、クラスタはより多くのテナントを収容でき、テナントもより多くのデータや業務トラフィックを処理できるようになります。同様に、クラスタやテナントの容量に余裕がある場合は、ノードをオフラインにすることでコストを削減できます。
マルチレプリカデプロイメント機能も、OceanBaseデータベースが従来型データベースと比べて持つアーキテクチャ上の利点です。マルチレプリカデプロイメント機能は、OceanBaseデータベースがマルチレベルの無損失災害復旧機能を備えるための基盤となっており、これには単一マシンレベルの無損失災害復旧、データセンターレベルの無損失災害復旧、都市レベルの無損失災害復旧などの機能が含まれます。さらに、OceanBaseデータベースはクラスタのデプロイアーキテクチャを柔軟に調整できるため、ビジネスシナリオの技術進化に対応できます。
前提条件
追加するすべてのOBServerサーバーに関連設定が完了していることを確認してください。具体的な操作については、デプロイ前の準備の章を参照してください。
ノードを追加する前に、すべてのOBServerサーバーにデータベースソフトウェアをインストールする必要があります。OceanBase公式Webサイトのダウンロードセンターから対応するバージョンのOceanBaseデータベースソフトウェアのインストールパッケージをダウンロードするか、OceanBaseテクニカルサポート担当者から入手できます。
操作手順
説明
この記事では、コマンドを使用して手動でクラスタにノードを追加する方法について説明します。OceanBaseデータベースCommunity Editionの場合、obdを使用してOceanBaseクラスタにノードを追加する必要がある場合は、obdプロダクトドキュメントのクラスタ拡張関連の内容を参照して操作してください。
(オプション)Zoneを追加した後にそのZoneにノードを追加する必要がある場合は、新しいZoneが追加されていることを確認してください。Zoneの追加操作については、Zoneの追加を参照してください。
sshを使用して、追加するOBServerサーバーにログインし、OBServerサーバーを初期化して時計ソースを設定します。OBServerサーバーの初期化の詳細な操作については、oatcliを使用したOBServerサーバーの初期化を参照してください。
時計ソースの設定の詳細な操作については、時計ソースの設定を参照してください。
sshを使用して、追加するOBServerサーバーにログインし、OceanBaseデータベースのRPMパッケージをインストールします。ノードを追加する前に、追加するすべてのOBServerサーバーにデータベースソフトウェアをインストールする必要があります。
コマンドは次のとおりです:
[root@xxx /]#cd $rpm_dir [root@xxx $rpm_dir]#rpm -ivh $rpm_nameここで、
rpm_dirはRPMパッケージを保存するディレクトリを表し、$rpm_nameはRPMパッケージの名前を表します。OceanBaseデータベースのディレクトリを初期化します。
OceanBaseデータベースのデータディレクトリは通常、独立したディスクに設定し、ソフトウェアの
Homeディレクトリにシンボリックリンクでリンクすることを推奨します。[root@xxx admin]#su - admin -bash-4.2$ mkdir -p /data/1/$cluster_name/{etc3,sort_dir,sstable,slog} -bash-4.2$ mkdir -p /data/log1/$cluster_name/{clog,etc2,ilog,oob_clog} -bash-4.2$ mkdir -p /home/admin/oceanbase/store/$cluster_name -bash-4.2$ for t in {etc3,sort_dir,sstable,slog};do ln -s /data/1/$cluster_name/$t /home/admin/oceanbase/store/$cluster_name/$t; done -bash-4.2$ for t in {clog,etc2,ilog,oob_clog};do ln -s /data/log1/$cluster_name/$t /home/admin/oceanbase/store/$cluster_name/$t; doneここで、
cluster_nameは追加するOBServerサーバーのクラスタ名を表します。例:
[root@xxx admin]#su - admin -bash-4.2$ mkdir -p /data/1/obdemo/{etc3,sort_dir,sstable,slog} -bash-4.2$ mkdir -p /data/log1/obdemo/{clog,etc2,ilog,oob_clog} -bash-4.2$ mkdir -p /home/admin/oceanbase/store/obdemo -bash-4.2$ for t in {etc3,sort_dir,sstable,slog};do ln -s /data/1/obdemo/$t /home/admin/oceanbase/store/obdemo/$t; done -bash-4.2$ for t in {clog,etc2,ilog,oob_clog};do ln -s /data/log1/obdemo/$t /home/admin/oceanbase/store/obdemo/$t; doneノードのobserverプロセスを起動します。
以下のコマンドを実行して、observerプロセスを起動します。
[root@xxx admin]$ su - admin -bash-4.2$ cd /home/admin/oceanbase -bash-4.2$ ./bin/observer -I xx.xx.xx.xx -P XXXX -p YYYY -z zone1 -d /home/admin/oceanbase/store/obdemo -r 'xx.xx.xx.xx:xxxx:yyyy' -c 20190716 -n obdemo -o "system_memory=30GB,datafile_size=100G,config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2"関連パラメータの説明は以下のとおりです:
-I:起動するノードのIPアドレスを指定するためのパラメータです。複数マシンでのデプロイメントシナリオでは、127.0.0.1をターゲットIPとして指定することはできません。ネットワークカード名を指定してノードを起動する方法(例えば
-i eth0)は現在のバージョンでも引き続き使用できますが、IPアドレスを指定して起動することを推奨します(例えば、-I 10.10.10.1)。また、IPアドレスとネットワークカード名を同時に指定してノードを起動することも可能です(例えば-I 10.10.10.1 -i eth0)が、これは推奨されません。現在のバージョンでは、指定されるノードIPアドレスとしてIPv6アドレスをサポートしています。使用する際には、以下の点に注意する必要があります:
- IPv6アドレスはグローバルアドレスとリンクアドレスに分かれており、グローバルアドレスの使用を推奨します。
-Iの前に-6を追加する必要があります。
-c:クラスタIDを指定するためのパラメータです。その値は、SHOW PARAMETERS LIKE 'cluster_id';ステートメントで取得できます。-p:SQLポート番号を指定するためのパラメータです。通常は2881ですが、特別な目的がない限り変更は推奨されません。-P:RPCポート番号を指定するためのパラメータです。通常は2882ですが、特別な目的がない限り変更は推奨されません。-n:クラスタ名を指定するためのパラメータです。その値は、SHOW PARAMETERS LIKE 'cluster';ステートメントで取得できます。この例では、クラスタ名はobdemoです。-z:追加するZoneを指定するためのパラメータです。ビューDBA_OB_ZONESを使用して、クラスタ内のZone名を確認できます。-d:データディレクトリを指定するためのパラメータです。-r:追加するOceanBaseクラスタのRSアドレスリストを指定するためのパラメータです。指定するアドレスがIPv6アドレスの場合、以下の点に注意する必要があります:
- IPv6アドレスはグローバルアドレスとリンクアドレスに分かれており、グローバルアドレスの使用を推奨します。
- IPアドレスは
[]で囲む必要があります。 -rの前に-6を追加する必要があります。
-l:ログレベルを指定するためのパラメータです。この例ではWARNであり、ログレベルはWARNINGレベルを表します。OceanBaseデータベースのログレベルの詳細については、ログレベルを参照してください。
-o:クラスタの起動構成パラメータを指定するためのパラメータです。実際の状況に応じて設定する必要があります。-oパラメータを使用する場合、以下の条件を満たす必要があります:大文字と小文字は区別されませんが、
observer.config.bin内の名前に従って記述することを推奨します。パラメータ名には、スペース、
\r、\n、\tといった特殊文字を含めないでください。パラメータ名とパラメータ値の間には、等号(=)を入力する必要があります。
パラメータ間は、英字のカンマ(,)で区切ります。
ステートメント内で:
system_memory:OceanBaseデータベース内部で保持するメモリを指定するためのパラメータです。デフォルトは30Gです。datafile_size:OceanBaseデータベースのデータファイルSSTableのサイズ(一括初期化)を指定するためのパラメータです。/data/1/の利用可能な容量を評価して、100G以上で、かつ残りの容量も一定程度確保することを推奨します。config_additional_dir:パラメータファイルの冗長ディレクトリを指定するためのパラメータです。
例:
[root@xxx admin]$ su - admin -bash-4.2$ cd /home/admin/oceanbase -bash-4.2$ ./bin/observer -I xx.xx.xx.1 -c 20221216 -p 2881 -P 2882 -z zone4 -n obdemo -d /home/admin/oceanbase/store/obdemo -r 'xx.xx.xx.1:2882:2881' -l WARN -o "system_memory=30GB,datafile_size=100G,config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2"IPv6アドレスを使用して起動する例:
[root@xxx admin]$ su - admin -bash-4.2$ cd /home/admin/oceanbase -bash-4.2$ ./bin/observer -6 -I xxxx:xxxx:xxxx:xxxx:xxx:xxxx:xxxx:ebd8 -c 20221216 -p 2881 -P 2882 -z zone4 -n obdemo -d /home/admin/oceanbase/store/obdemo -r '[xxxx:xxxx:xxxx:xxxx:xxx:xxxx:xxxx:ebd8]:2882:2881' -l WARN -o "system_memory=30GB,datafile_size=100G,config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2"(オプション)複数のノードを追加する必要がある場合は、ステップ2~5を繰り返して実行してください。
クラスタにノードを追加します。
rootユーザーとして、クラスタのsysテナントにログインします。接続例は以下のとおりです。データベースへの接続時は、実際の環境に基づいてください。
obclient -h10.xx.xx.xx -P2883 -uroot@sys#obdemo -p***** -Aより詳細なデータベース接続操作ガイドについては、データベース接続の概要(MySQLモード)およびデータベース接続の概要(Oracleモード)を参照してください。
以下のコマンドを実行して、クラスタのZoneにノードを追加します。
ALTER SYSTEM ADD SERVER 'svr_ip:svr_port' [,'svr_ip:svr_port'...] [ZONE [=] 'zone_name'];関連パラメータの説明は以下のとおりです:
svr_ip:追加するノードのIPアドレスを表します。svr_port:追加するノードのRPCポートを表します。デフォルトは2882です。zone_name:追加するノードのZoneを表します。
例:
ALTER SYSTEM ADD SERVER '10.xx.xx.xx:2882','10.xx.xx.xx:2882' ZONE 'zone4';この操作により、OBServerサーバーはサービスリストに追加されます。サービスリストにあるOBServerサーバーのみがサービスを提供できます。
実行が成功したら、
DBA_OB_SERVERSビューを照会して確認できます。照会例:
SELECT * FROM oceanbase.DBA_OB_SERVERS;リストに先ほど追加したOBServerサーバーが表示されていれば、追加は成功です。
次のステップ
ノードの追加は主に、スケーラビリティ拡張シナリオやデプロイメント調整シナリオで使用されます:
スケーラビリティ拡張シナリオでは、ノードを追加することで、そのノードが属するゾーン内により多くのユニットを収容できるようになり、その後のユニットの移行、テナントの
UNIT_NUMの調整、新規テナントの作成などの操作を実行できます。関連する操作については、以下を参照してください:デプロイメント調整シナリオ:デプロイメント調整シナリオには、クラスタのデプロイ方式を同一都市の3リージョンから3リージョン5リージョンに変更する場合や、データセンターの廃止時にゾーンをあるデータセンターから別のデータセンターに移転する場合が含まれます。このシナリオでは、まずゾーンを追加し、そのゾーン内にノードを追加した後、テナントのローカリティ属性を調整する必要があります。テナントのローカリティ属性を調整するための操作については、Localityの変更を参照してください。
関連ドキュメント
ノードに関するその他の運用操作については、以下の情報を参照してください: