OceanBaseクラスタにノードを追加できます。ノードの追加は、弾力的なスケールアウトシナリオやデプロイメントの調整シナリオに適用されます。
弾力的なスケールアウトシナリオ:スケールアウト後、ゾーン内により多くのノードがユニットを収容できるため、その後のユニットの移行、テナントの
UNIT_NUMの調整、新規テナントの作成などの操作を実行できます。デプロイメントの調整シナリオ:デプロイメントの調整シナリオには、クラスタのデプロイメント方式を同一リージョンの3センター構成から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アドレスを指定するためのパラメータです。複数マシンでのデプロイメントシナリオでは、ターゲットIPとして127.0.0.1を指定することはできません。ネットワークインターフェースカードの名前を指定してノードを起動する方法(例:
-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:参加するゾーンを指定するために使用されます。クラスタ内のゾーン名は、ビューDBA_OB_ZONESで確認できます。-d:データディレクトリを指定するために使用されます。-r:追加するOceanBaseクラスタのRSアドレスリストを指定するために使用されます。指定するアドレスがIPv6アドレスの場合、以下の点に注意してください:
- IPv6アドレスはグローバルアドレスとリンクアドレスに分類されます。グローバルアドレスの使用を推奨します。
- アドレスは
[]で囲む必要があります。 -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の変更を参照してください。
関連ドキュメント
ノードに関連するその他の運用操作については、以下を参照してください: