データベース ノードがダウンしたときにフェールオーバー スクリプトを実行する PG プールを使用しています。スクリプトは、新しいマスターの特定のファイルに触れ、古いマスターにいくつかの変更を加える必要があります。実行すると問題なく動作しますが、アプリケーションで実行すると動作しません。ホストの詳細が記載された電子メールが送信されるため、スクリプトが適切に実行されていることがわかります。キーが設定されているため、パスワードは必要ありません。
スクリプトは次のとおりです。
#! /bin/sh
OLD_HOST=$1
NEW_HOST=$2
# new host: touch trigger file
/usr/bin/ssh -T root@$NEW_HOST /bin/touch /mirror/pg_trigger/trigger
# old host: remove trigger file
/usr/bin/ssh -T root@$OLD_HOST /bin/rm /mirror/pg_trigger/trigger -f
# old host: rename recovery.done to recovery.conf
/usr/bin/ssh -T root@$OLD_HOST /bin/mv /opt/postgres/9.1/data/recovery.done /opt/postgres /9.1/data/recovery.conf -f
古い/新しいホストがローカル マシンの場合でも機能しません。これは pgpool ユーザーを介して実行されていることに関係しているように感じますが、よくわかりません。何か案は?