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 ノードに障害が発生した後、このクラスターから切断された後も削除されます。

このコマンドを実行すると、クラスター内の各ノードで次のことが行われます。

  1. .nodes ファイルのアドレスを現在のクラスターメンバーにリセットします。これは、 stable.nodes.file プロパティがtrue に設定されている場合でも発生します。

  2. 許可ノードホストリストを更新して、現在のメンバーのみを含めます。

  3. すべてのエージェントを互いに一時的に切断し、再接続します。

実行中のデータベースは、この操作の影響を受けません。操作が完了したら、スタンバイ優先度リストの更新が必要になる場合があります。詳細については、 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 コマンドを呼び出して、フェールオーバーマネージャーユーティリティコマンドのオンラインヘルプを表示します。