2011-08-04 48 views
1

我想設置一個每天使用debian在虛擬機上優化mysql數據庫的cron作業。Cronjob優化和清理所有的mysql數據庫

0 * * * * mysqlcheck -Aao –auto-repair -u root -p[password] > /dev/null 

我得到這個錯誤:mysqlcheck的:遇到錯誤:1045:

首先,我已經使用這樣的mysqlcheck的嘗試訪問被拒絕的用戶 '根' @ 'localhost' 的(使用密碼:YES )嘗試使用Google這個錯誤,我發現戴維·斯托達德Comment誰正在經歷同樣的問題後

連接時:

0 * * * * /usr/local/bin/mysqlcheck --defaults-file=/root/.my.cnf --all-databases --auto-repair 2>&1 | grep -v "OK" | mail -s "Database Problem" root 

0 * * * * /usr/local/bin/mysqlcheck --defaults-file=/root/.my.cnf --all-databases --auto-repair 2>&1 | grep -v "OK" | mail -s "Database Problem" root

從上面的錯誤:

/bin/sh: root: command not found 
/bin/sh: /usr/local/bin/mysqlcheck: No such file or directory 
+0

我會更好地創建可以訪問這個PHP腳本一個cronjob優化

select TABLE_SCHEMA, TABLE_NAME from information_schema.tables where data_free>0; 

編譯:HTTP ://www.webdigity.com/index.php?action = tutorial; code = 16 –

回答

5

嚴重的是,你可能會過這樣做,
你的做法會造成一些不必要的表鎖,
這意味着它很容易凍結您的應用程序需要訪問數據庫

只有當表太需要優化零散 含義包含的自由空間,
能夠影響索引鍵和數據文件

什麼是自由空間的優化?

此查詢將返回表的列表,需要使用一個簡單的bash腳本

chk="select concat(TABLE_SCHEMA,'.', TABLE_NAME) from information_schema.tables where data_free>0;" 

for tbl in $(mysql -u root -pxxx -N <<< $chk) 
do 
    mysql -u xxx -pxxx -N <<< "optimize table $tbl" 
done 
0

兩個錯誤是很清楚......第一個說,根@本地不允許訪問數據庫 - 無論您使用的是錯誤的密碼或MySQL中的root帳戶(通常默認情況下)已被刪除。

郵件錯誤是在不同系統上使用mail的典型代碼 - 標準的GNU郵件(來自GNU mailutils 1.2)有一個-E選項來執行命令,而郵件命令缺少。檢查man mail以查看該選項在系統上是否具有不同的名稱。

+0

我仔細檢查了root用戶的密碼是否正確,Dave的註釋解釋了爲什麼我得到這個錯誤。 我會檢查沒有郵件的測試-E選項 –

+0

我已經編輯了這個問題,現在我正通過電子郵件收到新錯誤 –