データセンターまたはリージョンをまたいだデプロイメントアーキテクチャでは、ネットワーク帯域幅リソースが一般的に逼迫しています。そのため、バックアップパスとアーカイブパスを設定する際には、パスがアクセス可能なゾーン、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)はバックアップタスクをobs10(杭州データセンターのOBServerノード)にスケジュールする可能性がありますが、obs10は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) Locality名の変更によりノードがアクセス権限を失った可能性があるかどうか。(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';