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#
efm create-standby <cluster_name> [-prompt] [-slot <slot_name>]
efm create-standby
コマンドを呼び出して、このノードに新しいスタンバイデータベースを作成します。ローカルエージェントが実行されており、クラスター内にプライマリエージェントが存在する必要があります。コマンドプロセスは次のことを行います。
ローカルエージェントに接続して、現在のプライマリデータベースを見つけます
ローカルデータベースを停止し、ローカルエージェントをアイドル状態にする必要がある場合
slotパラメーターが指定された場合、プライマリデータベースに接続して、その名前のスロットが存在する場合は削除し、スタンバイが使用するこの名前で新しいスロットを作成しますローカルデータディレクトリを削除します
pg_basebackupを実行してスタンバイデータベースを作成するスタンバイデータベースを起動し、監視を再開します
-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で導入されました。将来のリリースでは、より多くのオプションが追加される予定です。
次の例は、 -prompt および-slot
オプションの両方が指定された場合のコマンド出力を示しています。
# /usr/edb/efm-5.0/bin/efm create-standby efm -slot s2 -prompt
Found primary 172.17.0.2 from cluster status.
Verify primary address 172.17.0.2 does not match this agents bind address 172.17.0.3 or external address .
Will signal local agent to run database stop command and become idle if not already.
Will connect to primary on 172.17.0.2 to drop slot s2 if it exists.
Will remove the /opt/postgres/data directory and run the following command:
sudo -u postgres /usr/pgsql-17/bin/pg_basebackup -R -D /opt/postgres/data -X stream -S s2 -C -d "host=172.17.0.2 port=5432 application_name=bnode2"
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 172.17.0.2.
Running sudo -u postgres rm -rf /opt/postgres/data
Running sudo -u postgres /usr/pgsql-17/bin/pg_basebackup -R -D /opt/postgres/data -X stream -S s2 -C -d "host=172.17.0.2 port=5432 application_name=bnode2"
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
コマンドを呼び出して、フェールオーバーマネージャーユーティリティコマンドのオンラインヘルプを表示します。