プライマリ アプライアンスに障害が発生した場合、データベースのフェイルオーバーを実行できます。このトピックでは、9.0.0 よりも古いバージョンを実行しているアプライアンスの手順について説明します。
**注:**このトピックは、9.0.0 より古いバージョンを実行しているアプライアンスにのみ適用されます。新しいアプライアンスに関連する情報については、「データベース フェイルオーバー - 新しいアプライアンス」を参照してください。
プライマリ アプライアンスに障害が発生すると、セカンダリ データベースは読み取り専用になります。フェイルオーバーが発生した場合は、次のタスクを実行します。
- セカンダリ データベースでの書き込み操作を有効化する
- セカンダリ サービス プロバイダ アプライアンスを永続的に昇格させてプライマリにする
- セカンダリ テナント アプライアンスを永続的に昇格させてプライマリにする
- プライマリ アプライアンスを再起動
セカンダリ データベースでの書き込み操作を有効化する
この手順の目的は、プライマリ アプライアンスが使用できない場合にプライマリ データベースをセカンダリ アプライアンス(テナントまたはサービス プロバイダ)に切り替えることです。セカンダリ アプライアンスのデータベースがプライマリ データソースになるように書き込み処理を有効にすることが目的となります。
-
dtService、av-manager を停止し、プライマリ(アクセス可能な場合)とセカンダリ アプライアンスの両方でサービスを診断します。
sudo service dtService stop sudo service av-manager stop sudo service diagnose stop -
プライマリ(アクセス可能な場合)とセカンダリ アプライアンスの両方で、すべての slony デーモンを停止します。
sudo killall slon -
セカンダリ アプライアンスで、fdb データベースに接続し、次の SQL コマンドを実行します。
drop schema _slony cascade; -
アプライアンスがテナント組織に属している場合は、EDB および AVDB で手順 3 を繰り返します。
-
プライマリ アプライアンス上のデータベースに引き続きアクセスできる場合は、データベースをバックアップし、データベース ファイルをコピーして、データベースをセカンダリ アプライアンスにリストアします (BackingUpandRestoringDatabases.md))。
-
ファイル /usr/local/desktone/release/active/conf/fdb.properties を開いて編集し、プライマリ アプライアンスの IP アドレスを削除します。
-
アプライアンスがテナント組織に属している場合は、/usr/local/desktone/release/active/edb.properties の手順 6 を繰り返します。
-
アプライアンスがテナント組織に属している場合は、/usr/local/desktone/release/active/avdb.properties の手順 6 を繰り返します。
-
DB_HOST および DB_PASSWORD 環境変数を設定します。
export DB_HOST=IP_of_TA2_appliance export DB_PASSWORD=database_password -
av-setup スクリプトを sudo として実行します。
sudo /usr/local/desktone/scripts/av-setup -
applications.properties ファイルを開いて編集します。
vi /usr/local/xmpms/diagnose/config/application.properties -
applications.properties ファイルで、次のように行を編集します。
db.jdbc.url=jdbc:postgresql://<ip address>:5432/avdb?ssl=true db.fdb.jdbc.url=jdbc:postgresql://<ip address>:5432/fdb?ssl=true -
セカンダリ アプライアンスで dtService、av-manager、および診断サービスを開始します。
service dtService start service av-manager start service diagnose start
セカンダリ サービス プロバイダ アプライアンスのプライマリへの昇格
セカンダリ サービス プロバイダ アプライアンスをプライマリ サービス プロバイダ アプライアンスとして永続的に昇格させるには、次の手順を実行します。
この例では、プライマリ アプライアンスは「A」で、セカンダリ アプライアンスは「B」で、アプライアンス A にはアクセス可能です(このアプライアンスのデータベースにはアクセス可能)。
-
すべてのサービス プロバイダ アプライアンスで dtService を停止します。
service dtService stop -
すべてのサービス プロバイダ アプライアンスにログインします。
-
/usr/local/desktone/release/active/conf/fdb.properties を開いて編集し、障害ステータスのプライマリ アプライアンスの IP アドレスを削除します。
-
すべてのサービス プロバイダ アプライアンスですべての slony デーモンを停止します。
killall slon -
プライマリおよびセカンダリ アプライアンスで、FDB データベースに接続し、次の SQL コマンドを実行します。
drop schema _slony cascade; -
データセンターのセカンダリ アプライアンスで次の SQL コマンドを実行します (「A」と「B」をアプライアンスの名前で置き換えます)。
fdb=# update appliance set capabilities = (capabilities & 65343) where name='A'; fdb=# update appliance set capabilities = (capabilities | 192) where name='B'; -
障害アプライアンス以外のサービス プロバイダ アプライアンスで dtService を開始します。
service dtService start次の手順に進む前に、アプライアンスが起動し、実行注であることを確認します。
-
プライマリ サービス プロバイダ アプライアンスを除くすべてのサービス プロバイダ アプライアンスで dtService を停止します(セカンダリ サービス プロバイダ アプライアンスはプライマリです)。
service dtService stop -
すべてのサービス プロバイダ アプライアンスのデーモンで slon 開始します。
/usr/local/desktone/scripts/start_slon_fdb.sh -
ブラウザでプライマリ サービス プロバイダ アプライアンス(セカンダリ サービス プロバイダ アプライアンスはプライマリです)のサービス センターにログインし、slony の再初期化操作を実行します。
- [アプライアンス] > [メンテナンス] > [Slony Operations] の順に移動します。
- [組織 ID] ドロップダウン リストで、[1000] を選択します。
- Slony の初期化 ボタンをクリックして、Slony を再初期化します。
-
Slony の再初期化が完了したら、データセンターのセカンダリ アプライアンスの FDB で次のコマンドを実行します。
SELECT a.set_id, a.set_comment, (SELECT last_value FROM _slony.sl_local_node_id) AS local_id, CASE WHEN a.set_origin = (SELECT last_value FROM _slony.sl_local_node_id)THEN TRUE ELSE FALSE END AS master_node from _slony.sl_set a;出力は次のように表示されます。
set_id | set_comment | local_id | master_node --------+--------------------------+----------+------------- 1 | All tables and Sequences | 1 | t (1 row) -
障害サービス プロバイダ アプライアンスを除くすべてのアプライアンスで dtService を起動します。
service dtService start
セカンダリ テナント アプライアンスのプライマリへの昇格
セカンダリ テナント アプライアンスを完全にプライマリ テナント アプライアンスに昇格させるには、次の手順を実行します。
この例では、プライマリ アプライアンスは「A」で、セカンダリ アプライアンスは「B」で、アプライアンス A にはアクセス可能です(このアプライアンスのデータベースにはアクセス可能)。
-
組織内のすべてのテナント アプライアンスで dtService を停止します。
service dtService stop -
組織内のすべてのテナント アプライアンスにログインします。
-
/usr/local/desktone/release/active/conf/fdb.properties を開いて編集し、障害ステータスのプライマリ アプライアンスの IP アドレスを削除します。
-
組織内のすべてのテナント アプライアンスで、すべての slony デーモンを停止します。
killall slon -
必要に応じて、プライマリ アプライアンス上のデータベースをバックアップし、セカンダリ アプライアンスでリストアします。
-
プライマリおよびセカンダリ アプライアンスで、FDB データベースに接続し、次の SQL コマンドを実行します。
drop schema _slony cascade; -
プライマリ サービス プロバイダ アプライアンスで次の SQL コマンドを実行します(「A」と「B」をアプライアンスの名前に置き換えます)。
fdb=# update appliance set capabilities = (capabilities & 65343) where name='A'; fdb=# update appliance set capabilities = (capabilities | 192) where name='B'; -
組織内のすべてのテナント アプライアンス上のデーモンで、slon を開始します。
/usr/local/desktone/scripts/start_slon_fdb.sh /usr/local/desktone/scripts/start_slon_edb.sh /usr/local/desktone/scripts/start_slon_avdb.sh -
ブラウザでプライマリ サービス プロバイダ アプライアンスのサービス センターにログインし、slony の再初期化操作を実行します。
- [アプライアンス] > [メンテナンス] > [Slony Operations] の順に移動します。
- [組織 ID] ドロップダウン リストからテナントの [組織 ID] を選択します。
- DB インスタンス名ラベルの [ファブリック] を選択します。
- Slony の初期化 ボタンをクリックして、[Slony の再初期化] をクリックします。
-
Slony の再初期化が完了したら、データセンターのセカンダリ テナント アプライアンスの FDB で次のコマンドを実行します。
SELECT a.set_id, a.set_comment, (SELECT last_value FROM _slony.sl_local_node_id) AS local_id, CASE WHEN a.set_origin = (SELECT last_value FROM _slony.sl_local_node_id) THEN TRUE ELSE FALSE END AS master_node from _slony.sl_set a;プライマリ アプライアンスが最初のデータセンターで障害が発生した場合、出力は次のように表示されます。
set_id | set_comment | local_id | master_node --------+--------------------------+----------+------------- 1 | All tables and Sequences | 1 | t (1 row) -
障害ステータスのテナント アプライアンスを除く、すべてのテナント アプライアンスで dtService を起動します。
service dtService start
プライマリ アプライアンスを再起動
フェイルオーバー後にプライマリ アプライアンスを再起動する場合は、EDB と AVDB の両方で slony の再初期化を実行します。
このページは役に立ちましたか?