1.日志同步與寫入磁盤問題
1.1innodb_flush_log_at_trx_commit=n
這個n值決定什麼時候把日志信息寫入日志文件,以及什麼把這些文件物理地(術語:同步)到硬盤上。
N=0----每隔一秒寫依次日志並且進行同步一次。意味:減少硬盤寫操作,但是可能會造成數據丟失。
N=1----每執行完一條commit命令就寫一次日志,並且進行同步。意味:可以防止數據丟失,但是增
加了硬盤的I/0操作次數,可能造成硬盤寫操作頻繁,造成性能下降。
N=2----每執行一條commit命令就寫一次日志,每隔一秒進行一次同步。
1.2sync_lbinog=n
這個參數用於設置每隔N次日志寫操作就把日志文件寫入硬盤一次(同步日志數據)。
N=1----每寫一次日志並且進行同步一次。
N=0----由操作系統來負責二進制日志文件的同步工作。
1.3innodb_fush_method
InnoDB引擎日志文件的同步方法(僅適用unix/Linux系統),。有兩種取值:fdatasync(用fsync()函數進行同步);0_DSYNC(O_sync()函數進行同步)。默認為fdatasync,建議也是設置使用該方法,因為該方法比0_DSYNC塊很多。
2.慢查詢與未帶索引查詢SQL追蹤
1.1慢查詢選項設置
在my.cnf文件中增加:
long_query-time=n#默認為10秒,N表示為多少花費秒及以上的語句才算慢查詢語句
#(SELECT/UPDATE/INSERT/DELETE等)
log-slow-querIEs=/usr/data/slow/slow.log
1.2未帶索引查詢選項設置
log-querIEs-not-using-indexes#SQL語句也會記錄到slow.log中
3.關於授予存儲過程編輯權限
可能大家都碰到過,授予某帳號CreateRoutine/AlterRoutine權限還是提示沒有權限創建或修改存儲過程,被
迫授予Super權限。這種情況下,需要設置參數:log_bin_trust_routine_creators=1,該選項默認值為0;執
行語句:SETlog_bin_trust_routine_creator=1。
4.InnoDB在關閉服務器時,緩存區數據寫回時機設置
innodb_flush_shutdown=0/1,決定以最快的速度關閉InnoDB引擎,默認設置是1,意思是:不把緩存在INSERT緩存區的數據寫入數據表,這些數據將在MySQL服務器下次啟動時再寫入(這麼做沒有什麼風險,因為INSERT緩存區是表空間的一個組成部分,數據不會丟失)。0----表示在關閉InnoDB之前寫回,但是可能出現還沒寫回完畢,操作系統就會強行關閉掉了InnoDB,從而會導致數據不完整。
5.MySQL復制時主機的innodb_flush_log_at_trx_commit與sync_lbinog設置
建議把設置如下:
innodb_flush_log_at_trx_commit=1
sync_lbinog=1