Using the efm utility#
Failover Managerは、クラスター管理を支援するefm
ユーティリティを提供します。 RPMインストーラーは、Failover
Managerのインストール時に、ユーティリティを/usr/edb/efm-5.<x>/bin
ディレクトリに追加します。
efm allow-node#
efm allow-node <cluster_name> <address>
efm allow-node
コマンドを呼び出して、指定されたノードをクラスターに参加させます。コマンドを呼び出すときに、クラスターの名前と参加ノードのIPアドレスを指定します。
このコマンドは、efm、efmグループのメンバー、またはrootによって呼び出される必要があります。
efm disallow-node#
efm disallow-node <cluster_name> <address>
efm disallow-node
コマンドを呼び出して、指定されたノードを許可ホストリストから削除し、ノードがクラスターに参加しないようにします。
efm disallow-node
コマンドを呼び出すときに、クラスターの名前とノードのアドレスを指定します。このコマンドは、efm、efmグループのメンバー、またはrootによって呼び出される必要があります。
注釈
クラスターからノードを削除し、再度追加する予定がない場合、代わりに efm remote-members コマンドを使用できます。
efm cluster-status#
efm cluster-status <cluster_name>
efm cluster-status
コマンドを呼び出して、フェールオーバーマネージャークラスターの状態を表示します。ステータスレポートの詳細については、
Monitoring a Failover Manager cluster を参照してください。
efm cluster-status-json#
efm cluster-status-json <cluster_name>
efm cluster-status-json
コマンドを呼び出して、フェールオーバーマネージャークラスターの状態をJSON形式で表示します表示される情報の形式はefm cluster-status
コマンドで生成された表示とは異なりますが、情報ソースは同じです。
次の例は、3つのノードを持つ正常なクラスターのステータスを照会することにより生成されます。
{
"nodes": {
"172.16.144.176": {
"type": "Witness",
"db": "N\/A",
"vip": "",
"vip_active": false
},
"172.16.144.177": {
"type": "Primary",
"db": "UP",
"vip": "",
"vip_active : false"
"lsnReceive : 0/14001478"
"lsn : 0/14001478"
"lsnInfo :"
},
"172.16.144.180": {
"type": "Standby",
"db": "UP",
"vip": "",
"vip_active : false"
"lsnReceive : 0/14001478"
"lsn : 0/14001478"
"lsnInfo :"
}
},
"allowednodes": [
"172.16.144.177",
"172.16.144.160",
"172.16.144.180",
"172.16.144.176"
],
"membershipcoordinator": "172.16.144.177",
"failoverpriority": [
"172.16.144.180"
],
"minimumstandbys": 0,
"missingnodes": [],
"messages": []
}
efm create-standby#
!!!注 バージョン5.0のみの重要な情報 このコマンドがスタンバイノードで実行される場合ローカルデータベースが実行され、監視されている場合、コマンドが完了した後にエージェントを再起動する必要があります。エージェントが誤った内部状態のままになる可能性があるという既知の問題があります。このノードが後でプライマリに昇格し、データベースに障害が発生した場合、この状態によりフェールオーバーが発生しない場合があります。これは、「アイドル」ノードローカルデータベースが実行されていない、または監視されていないノードには影響しません。 5.1リリースで修正されました。
efm create-standby <cluster_name> [-prompt] [-slot <slot_name>] [-waldir <directory>]
efm create-standby
コマンドを呼び出して、このノードに新しいスタンバイデータベースを作成します。ローカルエージェントが実行されており、クラスター内にプライマリエージェントが存在する必要があります。コマンドプロセスは次のことを行います。
ローカルエージェントに接続して、現在のプライマリデータベースを見つけます。
ローカルデータベースを停止し、ローカルエージェントをアイドル状態にします必要な場合。
現在の
synchronous_standby_names構成設定を読み取ります。slotパラメーターが指定された場合、プライマリデータベースに接続して、その名前のスロットが存在する場合は削除し、スタンバイが使用するこの名前で新しいスロットを作成します。ローカルデータディレクトリを削除します。
waldirパラメーターが指定された場合、現在のログ先行書き込みディレクトリも削除されます。pg_basebackupを実行して、スタンバイデータベースを作成します。必要に応じてpg_basebackupの--waldirパラメーターを使用します。必要に応じて、
synchronous_standby_names構成設定を設定します。スタンバイデータベースを起動し、監視を再開します。
-prompt
オプションが指定されている場合、コマンドは続行する前に、生成されたpg_basebackup
コマンドを含む実行されるステップを出力します。次のエージェントプロパティが使用されます。
db.service.ownerは、pg_basebackupコマンドを実行するユーザーを指定します。sudo.user.commandは、上記のユーザーとしてコマンドを実行する方法を指定します。db.binは、pg_basebackupの場所を指定します。db.data.dirは、ターゲットディレクトリを指定します。db.portは、プライマリデータベースへのアクセスに使用されるポートを指定します。application.nameは、使用するapplication_nameを指定します設定されている場合。
!!!注 このコマンドは、フェールオーバーマネージャー5.0で導入されました。 5.0のみで、コマンドを実行するにはスーパーユーザー権限が必要です。
次の例は、 -prompt および-slot
オプションの両方が指定された場合のコマンド出力を示しています。
# /usr/edb/efm-5.2/bin/efm create-standby efm -slot s2 -prompt
Found primary node1 from cluster status.
Verify primary address node1 does not match this agents bind address node2 or external address .
Will signal local agent to run database stop command and become idle if not already.
Will connect to primary on node1 to drop slot s2 if it exists.
Will remove the /opt/postgres/data/pg_wal and /opt/postgres/data directories, and run pg_basebackup using the following parameters:
- R -D /opt/postgres/data -X stream -S s2 -C
...with connection string: host=node1 port=5432 application_name=node2
Will set synchronous_standby_names to: any 2 ("node1", "node3", "node4")
Do you want to continue? [y/N]:y
Signalling local agent to stop db and become idle if needed.
Replication slot s2 does not exist on primary node1.
Removing directories/files and running pg_basebackup.
Starting database.
Waiting briefly for database to finish startup.
Attempting to resume local efm agent monitoring.
Resume command successful on local agent.
efm encrypt#
efm encrypt <cluster_name> [--from-env]
クラスタプロパティファイルにパスワードを含める前に、 efm encrypt
コマンドを呼び出してデータベースパスワードを暗号化します--from-env
オプションを含めて、EFMPASS
環境変数で指定された値を使用し、ユーザー入力なしで実行するようにフェールオーバーマネージャーに指示します。詳細については、
Encrypting your database password を参照してください。
efm promote#
efm promote cluster_name [-switchover [-sourcenode <address>][-quiet][-noscripts]
efm promote
コマンドは、スタンバイからプライマリへの手動フェールオーバーを実行するようにフェールオーバーマネージャーに指示します。
データベースクラスターのメンテナンス時間帯に、クラスター内のすべてのスタンバイがプライマリと最新の状態であることがstatusコマンドで報告された場合にのみ、手動プロモーションを試行します。
–switchover
句を含めてスタンバイノードを昇格させ、プライマリノードをスタンバイノードとして再構成します。
-sourcenode
キーワードを含め、ノードアドレスを指定して、スタンバイにする古いプライマリノードにリカバリ設定をコピーするノードを指定します。スイッチオーバープロセス中の通知を抑制するには、
-quiet キーワードを含めます。 -noscripts
キーワードを含めて、フェンシングまたはポストプロモーションスクリプトを呼び出さないようにフェールオーバーマネージャーに指示します。
このコマンドは、efm、efmグループのメンバー、またはrootによって呼び出される必要があります。
注釈
このコマンドは、クラスタープロパティファイルの`auto.failover` パラメーターで指定された値を無視するようにサービスに指示します。
efm remote-members#
efm reset-members <cluster_name>
efm reset-members
コマンドを呼び出して、キャッシュされたノードアドレスをフェールオーバーマネージャークラスターから削除します。ノードがクラスターから完全に削除された後にこのコマンドを実行して、クラスターが削除されたノードのアドレスに接続しようとしないようにします。これにより、DOWN
ノードに障害が発生した後、このクラスターから切断された後も削除されます。
このコマンドを実行すると、クラスター内の各ノードで次のことが行われます。
.nodesファイルのアドレスを現在のクラスターメンバーにリセットします。これは、stable.nodes.fileプロパティがtrueに設定されている場合でも発生します。許可ノードホストリストを更新して、現在のメンバーのみを含めます。
すべてのエージェントを互いに一時的に切断し、再接続します。
実行中のデータベースは、この操作の影響を受けません。操作が完了したら、スタンバイ優先度リストの更新が必要になる場合があります。詳細については、 efm set-priority コマンドを参照してください。
efm resume#
efm resume <cluster_name>
efm resume
コマンドを呼び出して、以前に停止したデータベースの監視を再開します。このコマンドは、efm、efmグループのメンバー、またはrootによって呼び出される必要があります。
efm set-priority#
efm set-priority <cluster_name> <address> <priority>
efm set-priority
コマンドを呼び出して、フェールオーバー優先度をスタンバイノードに割り当てます。値は、フェールオーバーが発生した場合にノードを使用する順序を指定します。このコマンドは、efm、efmグループのメンバー、またはrootによって呼び出される必要があります。
priorityオプションを使用して、優先度リスト内のノードの場所を指定します。たとえば、1
の値を指定して、ノードがプライマリスタンバイであり、フェールオーバーが発生した場合に昇格する最初のノードになることを示します。
0
の優先度値は、スタンバイをプロモートしないようにフェールオーバーマネージャーに指示します。
efm stop-cluster#
efm stop-cluster <cluster_name>
efm stop-cluster
コマンドを呼び出して、すべてのノードでフェールオーバーマネージャーを停止します。このコマンドは、フェールオーバーマネージャーに、クラスター内の各ノードに接続し、既存のメンバーにシャットダウンするように指示します。このコマンドは実行中のデータベースには影響しませんが、コマンドが完了すると、フェールオーバー保護は実施されません。
注釈
efm stop-cluster コマンドを呼び出すと、許可されたノード情報がすべて許可ノードホストリストから削除されます。
このコマンドは、efm、efmグループのメンバー、またはrootによって呼び出される必要があります。
efm upgrade-conf#
efm upgrade-conf <cluster_name> [-source <directory>]
efm upgrade-conf コマンドを呼び出して、既存のFailover
Managerインストールから構成ファイルをコピーし、Failover
Managerインストールに必要なパラメーターを追加します。ユーティリティを呼び出すときに、以前のクラスターの名前を指定します。デフォルトモードでフェールオーバーマネージャーを実行している場合、このコマンドはスーパーユーザー特権で呼び出す必要があります。
オプションの-source
フラグの詳細について、またはsudoを使用しないフェールオーバーマネージャー構成からアップグレードする場合、
Eager FailoverモードでのFailover Managerのアップグレード を参照してください。
efm node-status-json#
efm node-status-json <cluster_name>
efm node-status-json
コマンドを呼び出して、ローカルノードの状態をJSON形式で表示しますこのコマンドの実行が成功すると、終了コードとして0
が返されます。データベースに障害が発生するか、エージェントのステータスがIDLEになった場合、コマンドは終了コードとして1
を返します。
次に、 efm node-status-json コマンドの出力例を示します。
{
"type":"Standby",
"address":"172.16.144.130",
"db":"UP",
"vip":"",
"vip_active":"false"
}
efm –help#
efm --help
efm --help
コマンドを呼び出して、フェールオーバーマネージャーユーティリティコマンドのオンラインヘルプを表示します。