安排預防性的維護MYSQL數據庫服務器
添加時間:2014-11-12 1:56:31
添加:
思海網絡
應該考慮建立一個預防性維護的時間表,以協助自動檢測問題,使得您可以采取措施進行修正:
1) 執行常規的數據庫備份并允許更新日志。
2) 安排定期的常規表檢查。通過檢查表,將減少使用備份的機會。這個工作使用cron 作業(一般從運行服務器所使用的該賬號的crontab 文件中調用)并且很容易實現。例如,如果您作為mysqladm 用戶運行服務器,則可以從mysqladm 的crontab 文件中建立定期檢查。如果您不知道如何使用c r o n,應使用下列命令查看相關的UNIX 人工頁:
% man cron
% man crontab
3) 在服務器啟動前的系統引導期間檢查數據庫表。機器可能會因早期的崩潰重新啟動。如果是這樣的話,數據庫表可能已被毀壞,應該對它進行檢查。
為了運行自動的表檢查,可以編寫一個腳本,將目錄改變為服務器數據目錄并對所有數據庫表運行myisamchk 和i s a m c h k。我們將在下面討論的腳本中同時使用這兩個程序。如果您只有MyISAM 表或只有ISAM 表,則只需其中一個程序,可以將無關的那個程序從腳本中去除。
myisamchk 和isamchk 都根據表檢查的方式產生某些輸出結果以便了解正在檢查哪些表,甚至在沒有問題時也是如此。對于crontab 的項,除非表中有錯誤,否則通常將禁止輸出結果(如果作業產生任何輸出, cron 作業通常生成一個郵件消息,很少會收到沒有任何問題的表檢查作業的郵件)。如果用--silent 選項調用任一個實用程序,它僅當發現問題時才產生輸出。另外,myisamchk 支持--fast 選項,該選項允許程序跳過自上次檢查以來沒有被修改過的任何表。
在服務器數據目錄中檢查所有表的一個簡單的腳本如下( DATADIR 應該修改成對應您系統的值):
實用此腳本的一個潛在的問題是:如果有許多表,通配符模式‘ * / * . M Y I’或‘* / * . I S M’可能會由于“ too many arg um e n t s(過多的參數)”錯誤使外殼程序爆炸。另一個可選擇的腳本如下(同樣,將DATADIR 改變為對應您系統的值):
不論您選擇哪種形式的腳本,筆者都假定您調用的是c h e c k _ mysql_ tables,應確保及時改變該方式使它可執行,然后您手工調用它以驗證它工作是否正常:
% chmod +x check_mysql_tables
% chmod_mysql_tables
在理想情況下應該沒有輸出結果。如果系統不支持外部鎖定,有可能服務器將在您檢查表時改變它。此時,腳本可能會把實際沒問題的表報告成有問題的。這有點不幸,但比出現相反的問題要好:當出現某些故障時腳本報告無問題。如果系統支持外部鎖定,則該問題就
不會出現。
以下部分將說明如何建立腳本,使它通過cron 并在系統啟動期間自動執行。在這些小節的例子中,筆者假定腳本安裝在/usr/users/mysaladm/bin 中。您將需要調整適合自己系統的值。
如果在您的系統上運行了多個服務器,將需要修改該過程來檢查每個服務器數據目錄中的表。您可以使用不同的check_mysql_tables 拷貝來進行,或通過修改它來接收一個命令行參數進行,該參數指定了想要檢查的數據目錄。
用cron 定期檢查表
假定要想對mysqladm 用戶從crontab 文件中調用腳本c h e c k _ mysql_ tables。先以該用戶的身份進行注冊,然后用下列命令編輯crontab 文件:
% crontab -e
該命令帶您進入帶有當前crontab 文件拷貝的編輯器中(如果以前沒有編輯過,此文件可能是空的)。增加一行到文件中:
0 3 * * 0 /usr/users/mysqladm/bin/check_mysql_tables
它告訴cron 在每個星期日的上午3 時運行此選項。可以按要求改變時間或安排。有關這些選項的格式,請參閱crontab 人工頁。
在系統啟動期間檢查表
如果您正在使用BSD 風格的系統,并且已經將服務器的啟動命令增加到/etc/rc.local 或類似的其他文件中,則可以在啟動服務器前從對應的文件中調用c h e c k _ mysql_ tables。
如果正在使用System V 風格的啟動方法從/etc/rc.d 目錄之一中調用mysql. server,則過程稍有點復雜。這些目錄中的啟動腳本應該理解start 和stop 參數的含義,以便對系統的啟動和關閉采取相應的操作。為了執行表的檢查,我們可以編寫這樣的腳本:當參數為start 時調用c h e c k _ mysql_ tables,而當該參數為stop 時不做任何事情。讓我們來調用這樣的一個腳本
mysql. c h e c k,其內容如下:
1) 執行常規的數據庫備份并允許更新日志。
2) 安排定期的常規表檢查。通過檢查表,將減少使用備份的機會。這個工作使用cron 作業(一般從運行服務器所使用的該賬號的crontab 文件中調用)并且很容易實現。例如,如果您作為mysqladm 用戶運行服務器,則可以從mysqladm 的crontab 文件中建立定期檢查。如果您不知道如何使用c r o n,應使用下列命令查看相關的UNIX 人工頁:
% man cron
% man crontab
3) 在服務器啟動前的系統引導期間檢查數據庫表。機器可能會因早期的崩潰重新啟動。如果是這樣的話,數據庫表可能已被毀壞,應該對它進行檢查。
為了運行自動的表檢查,可以編寫一個腳本,將目錄改變為服務器數據目錄并對所有數據庫表運行myisamchk 和i s a m c h k。我們將在下面討論的腳本中同時使用這兩個程序。如果您只有MyISAM 表或只有ISAM 表,則只需其中一個程序,可以將無關的那個程序從腳本中去除。
myisamchk 和isamchk 都根據表檢查的方式產生某些輸出結果以便了解正在檢查哪些表,甚至在沒有問題時也是如此。對于crontab 的項,除非表中有錯誤,否則通常將禁止輸出結果(如果作業產生任何輸出, cron 作業通常生成一個郵件消息,很少會收到沒有任何問題的表檢查作業的郵件)。如果用--silent 選項調用任一個實用程序,它僅當發現問題時才產生輸出。另外,myisamchk 支持--fast 選項,該選項允許程序跳過自上次檢查以來沒有被修改過的任何表。
在服務器數據目錄中檢查所有表的一個簡單的腳本如下( DATADIR 應該修改成對應您系統的值):
實用此腳本的一個潛在的問題是:如果有許多表,通配符模式‘ * / * . M Y I’或‘* / * . I S M’可能會由于“ too many arg um e n t s(過多的參數)”錯誤使外殼程序爆炸。另一個可選擇的腳本如下(同樣,將DATADIR 改變為對應您系統的值):
不論您選擇哪種形式的腳本,筆者都假定您調用的是c h e c k _ mysql_ tables,應確保及時改變該方式使它可執行,然后您手工調用它以驗證它工作是否正常:
% chmod +x check_mysql_tables
% chmod_mysql_tables
在理想情況下應該沒有輸出結果。如果系統不支持外部鎖定,有可能服務器將在您檢查表時改變它。此時,腳本可能會把實際沒問題的表報告成有問題的。這有點不幸,但比出現相反的問題要好:當出現某些故障時腳本報告無問題。如果系統支持外部鎖定,則該問題就
不會出現。
以下部分將說明如何建立腳本,使它通過cron 并在系統啟動期間自動執行。在這些小節的例子中,筆者假定腳本安裝在/usr/users/mysaladm/bin 中。您將需要調整適合自己系統的值。
如果在您的系統上運行了多個服務器,將需要修改該過程來檢查每個服務器數據目錄中的表。您可以使用不同的check_mysql_tables 拷貝來進行,或通過修改它來接收一個命令行參數進行,該參數指定了想要檢查的數據目錄。
用cron 定期檢查表
假定要想對mysqladm 用戶從crontab 文件中調用腳本c h e c k _ mysql_ tables。先以該用戶的身份進行注冊,然后用下列命令編輯crontab 文件:
% crontab -e
該命令帶您進入帶有當前crontab 文件拷貝的編輯器中(如果以前沒有編輯過,此文件可能是空的)。增加一行到文件中:
0 3 * * 0 /usr/users/mysqladm/bin/check_mysql_tables
它告訴cron 在每個星期日的上午3 時運行此選項。可以按要求改變時間或安排。有關這些選項的格式,請參閱crontab 人工頁。
在系統啟動期間檢查表
如果您正在使用BSD 風格的系統,并且已經將服務器的啟動命令增加到/etc/rc.local 或類似的其他文件中,則可以在啟動服務器前從對應的文件中調用c h e c k _ mysql_ tables。
如果正在使用System V 風格的啟動方法從/etc/rc.d 目錄之一中調用mysql. server,則過程稍有點復雜。這些目錄中的啟動腳本應該理解start 和stop 參數的含義,以便對系統的啟動和關閉采取相應的操作。為了執行表的檢查,我們可以編寫這樣的腳本:當參數為start 時調用c h e c k _ mysql_ tables,而當該參數為stop 時不做任何事情。讓我們來調用這樣的一個腳本
mysql. c h e c k,其內容如下:
現在,您已經可以使用一個過程來安裝mysql. c h e c k了,該過程類似于在第11章所介紹的安裝mysql.server 的過程。必須給mysql.check 一個運行級目錄中較低的前綴號,才能使得它在mysql.server 前運行。例如,如果在運行級目錄中以S99mysql.server 鏈接到mysql. server,則應該以S98mysql.check 鏈接到mysql.check 。
關鍵字:MYSQL、數據庫、服務器
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解