我正在使用PG池,該池在數據庫節點發生故障時執行故障轉移腳本。該腳本需要觸摸新主設備上的某個文件,並對舊主設備進行一些更改。當我運行它時它工作正常,但它在應用程序運行時不會運行。我知道該腳本正在被適當執行,因爲它向我發送了一封包含主機詳細信息的電子郵件。密鑰已設置,因此不需要密碼。當應用程序執行腳本時,bash腳本中的SSH命令未運行
的腳本如下:
#! /bin/sh
OLD_HOST=$1
NEW_HOST=$2
# new host: touch trigger file
/usr/bin/ssh -T [email protected]$NEW_HOST /bin/touch /mirror/pg_trigger/trigger
# old host: remove trigger file
/usr/bin/ssh -T [email protected]$OLD_HOST /bin/rm /mirror/pg_trigger/trigger -f
# old host: rename recovery.done to recovery.conf
/usr/bin/ssh -T [email protected]$OLD_HOST /bin/mv /opt/postgres/9.1/data/recovery.done /opt/postgres /9.1/data/recovery.conf -f
如果舊/新主機是本地機器,它甚至沒有工作。我有一種感覺,這與它通過pgpool用戶運行有關,但我真的不確定。有任何想法嗎?
以'-vvv'模式運行ssh並檢查退出代碼可能有助於查看失敗的原因以及爲什麼 – bobah