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を指定するために使用されるパラメータです。複数マシンデプロイメントシナリオでは、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を指定するために使用されます。クラスタ内のZone名はDBA_OB_ZONESビューで確認できます。-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の変更を参照してください。
関連ドキュメント
ノードに関するその他の運用保守操作については、以下を参照してください: