2011-06-24 27 views
1

是否可以使用mysql命令「show slave status;」寫入outfile?將slave status G顯示爲outfile'/tmp/slavestatus.txt';

我有超過20臺服務器,我正在編寫一個bash腳本來檢查所有這些複製。我需要將所有數據輸出到本地服務器上的一個文件中。

這是我到目前爲止,但我無法弄清楚如何將數據傳輸到文件我可以運行正則表達式。

#!/bin/bash 

for ((server=8100; server <= 8121; server++)); do 
     ssh pos$server <<-ENDEXP 
       mysql -u root -p12345 pos_master_prod 
       show slave status \G 
       \q 
     ENDEXP 
done 
+2

爲什麼不設置監控mysql複製的nagios?這是一款出色的工具,您可以在線查找大量資源,以便以多種標準格式監控複製和輸出數據。 – Chandranshu

回答

0

正常的方式來運行從命令提示MySQL查詢是使用-e選項。因此,這將工作:

ssh pos$server "mysql -u root -p12345 pos_master_prod -e 'show slave status \G'" >> output.log 

更新:關於「進outfile」部分,它是不允許的語法。在mysql提示符下嘗試「將奴隸狀態顯示爲outfile'xxx'」將導致以下錯誤: 錯誤1064(42000)在第1行:您的SQL語法有錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在第1行附近'out outfile'xxx''使用正確的語法。

1

我的要求與您的要求相同,最終使用tee。基本上它是@Chandranshu設置,但使用tee將數據傳輸到文件中。

mysql -u root -p'rootpw' pos_master_prod 'show slave status \G' | tee slavestatus.log 

Tee默認安裝在我的ubuntu盒子上,否則你可以從類似apt-get或yum的倉庫獲取它。

相關問題