這幾天要折騰mysql服務(wù)器,所以在網(wǎng)上搜羅了一些維護(hù)策略,然后自己總結(jié)實驗,下面是我的總結(jié)經(jīng)驗和別人的一些建議。

日志類型:
MySQL有幾個不同的日志文件,可以幫助你找出mysqld內(nèi)部發(fā)生的事情:
日志文件:記入文件中的信息類型
錯誤日志:記錄啟動、運行或停止時出現(xiàn)的問題
查詢?nèi)罩荆河涗浗⒌目蛻舳诉B接和執(zhí)行的語句
二進(jìn)制日志:記錄所有更改數(shù)據(jù)的語句。主要用于復(fù)制和即時點恢復(fù)
慢日志:記錄所有執(zhí)行時間超過long_query_time秒的所有查詢或不使用索引的查詢
事務(wù)日志:記錄InnoDB等支持事務(wù)的存儲引擎執(zhí)行事務(wù)時產(chǎn)生的日志
1.啟動慢查詢?nèi)罩荆?/p>
MySQL 如果啟用了slow_query_log=ON選項,就會記錄執(zhí)行時間超過long_query_time(默認(rèn)10s)的查詢(初使表鎖定的時間不算作 執(zhí)行 時間)。日志記錄文件為slow_query_log_file[=file_name],如果沒有給出file_name值, 默認(rèn)為主機(jī)名,后綴為-slow.log。如果給出了文件名,但不是絕對路徑名,文件則寫入數(shù)據(jù)目錄。
【這個可以在調(diào)試mysql性能的時候啟用,可以找出是哪個sql指令最浪費時間。生產(chǎn)環(huán)境中建議關(guān)閉】
2.生產(chǎn)環(huán)境中關(guān)閉通用查詢?nèi)罩荆?/p>
由 于打開通用查詢?nèi)罩臼怯涗浻脩舻乃胁僮?,在生產(chǎn)環(huán)境中這個日志的量是非常大的,所以一般情況下都是不打開的,myslq默認(rèn)的該日志功能也是關(guān)閉的,在 特殊情況下才進(jìn)行打開【一般只有在開發(fā)測試環(huán)境中,為了定位某些功能具體使用了哪些SQL語句的時候,才會在短時間段內(nèi)打開該日志來做相應(yīng)的分析?!?/p>
mysql> set global general_log = 1; #1:啟動通用查詢?nèi)罩荆?:關(guān)閉通用查詢?nèi)罩?/p>
mysql> show global variables like '%general_log%';
| +------------------+----------------------------+ | Variable_name | Value | +------------------+----------------------------+ | general_log | ON | #是否啟用了通用查詢?nèi)罩? | general_log_file | /var/run/mysqld/mysqld.log | #日志路徑 +------------------+----------------------------+ |
2 rows in set (0.00 sec)
3.定期備份二進(jìn)制日志和sql數(shù)據(jù):【本地一份,遠(yuǎn)程日志主機(jī)一份,存儲主機(jī)一份】
在 my.cnf中l(wèi)og-bin = [filename]是啟用二進(jìn)制日志,默認(rèn)以[filename].000001往上記錄的,從啟用log-bin之后【此時最好用mysqldump 保存當(dāng)前的mysql某個庫的數(shù)據(jù),因為二進(jìn)制日志只是記錄了從現(xiàn)在起到最近一次mysql當(dāng)機(jī)重啟中的所有sql語句】,mysql就會開始記錄每一個 sql語句,一旦mysql因各種原因需要重啟,則會產(chǎn)生新的二進(jìn)制日志,000001的后綴名會不斷往上自加。若是在mysql當(dāng)機(jī)期間mysql的數(shù) 據(jù)遭到了破壞(如磁盤損壞),之前的數(shù)據(jù)全部都被破壞了,這時候這個備份策略就可以幫你挽回?fù)p失。你可以從二進(jìn)制日志中恢復(fù)從開始到最近一次mysql重 啟這段時間的數(shù)據(jù)。【二進(jìn)制日志中記錄的是每一個sql語句,可以用mysqlbinlog [filename]查看日志內(nèi)容】
新聞熱點
疑難解答
圖片精選