データセンターまたはリージョンをまたいだデプロイメントアーキテクチャでは、ネットワーク帯域幅リソースが一般的に逼迫しています。そのため、バックアップパスとアーカイブパスを設定する際には、パスがアクセス可能なゾーン、IDC、またはリージョンを考慮し、既存のネットワークリソースを最大限に活用して、データセンターまたはリージョンをまたぐトラフィックの発生を回避し、データ転送効率を向上させる必要があります。
このセクションでは、2リージョン3データセンターのデプロイメントアーキテクチャを例に、ユーザーにバックアップパスとアーカイブパスのソース側設定の指導を提供します。
シナリオ情報
以下の図は、2リージョン3データセンターのデプロイメントアーキテクチャであり、バックアップに関わるデータフローを示しています。OceanBaseデータベースの5レプリカは、3つのデータセンター(IDC)と2つの都市に分散しています。すなわち、2(深セン南山区)+2(深セン宝安区)+1(杭州)です。通常、リーダーレプリカは主に深セン南山区の2つのゾーンに集中しており、PRIMARY_ZONE の設定は z1,z2 です。Root Service(RS)のリーダーはZ2のobs4上にあります。
仮に、バックアップメディアNFSが深セン南山区のデータセンター(IDC1)内にデプロイされており、ユーザーが同一都市内のデータセンター間でのNFSへのアクセスは許可するものの、都市間でのアクセスは許可しない設定を行っている場合、ユーザーの設定に基づき、深セン南山区のデータセンター(IDC1)と深セン宝安区のデータセンター(IDC2)のOBServerノードはどちらもNFSにアクセスできます。そして、深セン南山区のデータセンター(IDC1)のOBServerノードがNFSにアクセスする場合は同一データセンター内のアクセスとなりますが、深セン宝安区のデータセンター(IDC2)のOBServerノードがNFSにアクセスする場合はデータセンター間のネットワークトラフィックが発生します。杭州のデータセンターにあるOBServerノードはNFSにアクセスできません(NFSがマウントされていないため)。
バックアップパスのソース側情報の設定
データバックアップのレプリカはデフォルトで利用可能なすべてのFレプリカから選択され、通常はフォロワーレプリカが優先的に選択されるため、上記の図から分かるように、Root Service(RS)はバックアップタスクを観察10(杭州のデータセンターにあるOBServerノード)にスケジュールする可能性があります。しかし、観察10はNFSにアクセスできないため、バックアップタスクの実行に失敗します。そのため、バックアップパスのソース側を設定し、バックアップタスクを実行できるノードの範囲を制限する必要があります。
このシナリオでは、バックアップで都市間のNFSアクセスを許可しないルールに基づき、バックアップパスのソース側情報を region=Region1、idc=IDC1,IDC2、または zone=Z1,Z2,Z3,Z4 に設定できます。設定時には、データバックアップのメタ情報ファイルはRSノードによって操作されるため、RSノードがソース側の設定範囲外にあることでバックアップパスへのアクセス権限を失い、バックアップタスクの実行に失敗するのを避けるため、テナントの PRIMARY_ZONE を ALTER TENANT tenant_name PRIMARY_ZONE='z1,z2' に設定することを推奨します。
仮にバックアップパスが file:///data/nfs/backup/data である場合、ユーザーテナント内でバックアップパスのソース側情報を region=Region1 に設定するステートメントは以下のとおりです:
obclient(root@mysql001)[(none)]> ALTER SYSTEM SET DATA_BACKUP_DEST = 'file:///data/nfs/backup/data?region=Region1';
設定成功後、RSはバックアップタスクを Region2 のノードに転送することはなく、Region1 内でバックアップサービスを提供できるノードにのみ転送します。また、RSはフォロワーレプリカを優先的に選択してバックアップタスクを実行し、バックアップタスクによってリーダーレプリカの負荷が増加し、他の業務に影響を与えるのを防ぎます。
同時に、上述の説明から分かるように、ソース側を region=Region1、idc=IDC1,IDC2、または zone=Z1,Z2,Z3,Z4 に設定した後、優先順位がないため、比較的多くのバックアップタスクが IDC2 内のフォロワーレプリカに転送される可能性があります(下図参照)。この場合、バックアップデータによって生成されるトラフィックはデータセンター間のトラフィックとなります。ユーザーのデータセンター間ネットワーク帯域幅リソースが逼迫している場合、ソース側の設定を idc=IDC1;IDC2 または zone=Z1,Z2;Z3,Z4 に変更できます。
例えば、以下のステートメントでソース側の設定を idc=IDC1;IDC2 に変更できます。
obclient> ALTER SYSTEM CHANGE EXTERNAL_STORAGE_DEST PATH='file:///data/nfs/backup/data' SET ATTRIBUTE='idc=IDC1;IDC2';
変更後、RSがバックアップタスクを実行するノードを選択する際、IDC1内のノードが高い優先順位を持ち、IDC2 内のノードの優先順位は低くなります。これにより、バックアップは可能な限り同一データセンター内のネットワークリソースを使用できます。IDC2 を代替バックアップパスとして設定することで、異常状態(例:IDC1 内のノードがダウンした場合)に対するバックアップタスクの耐性を向上させるとともに、RSが IDC2 に切り替わった後、RSがバックアップメディアへのアクセス権限を失ってバックアップが失敗するのを防ぐことができます。
ログアーカイブパスのソース側情報の設定
同様に、ログアーカイブについても、このシナリオでは、都市間のNFSアクセスを許可しないルールに基づき、アーカイブパスのソース側情報を region=Region1、idc=IDC1;IDC2、または zone=Z1,Z2;Z3,Z4 に設定できます。ログアーカイブのすべてのトラフィックはリーダーレプリカが書き込む責任を持つため、ログアーカイブパスについては、アクセス権限のみが存在し、アクセス優先順位の違いはありません。したがって、設定時には、zone=Z1,Z2;Z3,Z4 は zone=Z1,Z2,Z3,Z4 と同等であり、idc=IDC1;IDC2 は idc=IDC1,IDC2 と同等です。
あるユーザーテナントの PRIMARY_ZONE が PRIMARY_ZONE='Z1,Z2,Z3,Z4'、アーカイブパスが file:///data/nfs/backup/archive である場合を想定します。以下の2つのシナリオがあります:
シナリオ1:初期状態で、ネットワーク帯域幅リソースに余裕がある場合
初期状態では、ログアーカイブのネットワークトラフィックは少ないため、テナントはアーカイブパスのソース情報を region=Region1 に設定することで、Region1内のノードのみがアーカイブパスにアクセスできるよう制限できます。
obclient(root@mysql001)[(none)]> ALTER SYSTEM SET LOG_ARCHIVE_DEST = 'LOCATION=file:///data/nfs/backup/archive?region=Region1';
設定成功後、運用保守やその他の理由でリーダーレプリカが Region2 に切り替えられた場合に生じる予期しないアクセス要求(つまり、Region2 内のOBServerノードからアーカイブパスにアクセスする要求)を回避できます。システムがリーダーレプリカが Region2 上でアーカイブパスにアクセスしていることを検出すると、エラーログ(エラーコード -9063)を送信し、運用保守担当者に対して、以下の点を速やかに確認するよう促します:(1)ローカリティ名の変更によりノードがアクセス権限を失った可能性があるかどうか、(2)リーダーレプリカの位置がアクセス権限のないノードに切り替えられていないかどうか。必要に応じて、ソース側の設定を更新するか、手動でリーダーレプリカをアクセス権限のあるOBServerノードに切り替える必要があります。
シナリオ2:ネットワーク帯域幅リソースが逼迫している場合
データの継続的な書き込みに伴い、ログアーカイブのネットワークトラフィックが増加した場合、アーカイブパスのソース側設定を idc=IDC1 に変更し、同時にテナントの PRIMARY_ZONE を PRIMARY_ZONE='Z1,Z2' に変更できます。
説明
テナントの PRIMARY_ZONE はソース側の設定と一致させる必要があります。これは、リーダーレプリカがソース側の設定範囲外に移動し、アーカイブパスへのアクセス権限を失ってアーカイブ進捗が止まるのを防ぐためです。
obclient(root@mysql001)[(none)]> ALTER SYSTEM CHANGE EXTERNAL_STORAGE_DEST PATH='file:///data/nfs/backup/archive' SET ATTRIBUTE='idc=IDC1';