慢查詢?nèi)罩?/em>
參數(shù)配置
- log_query_time:超過該閾值時(shí)間的查詢?yōu)槁樵儯?/li>
- log_slow_queries:可以設(shè)置為ON/OFF,表示開啟和關(guān)閉慢查詢?nèi)罩荆?/li>
- log_queries_not_using_indexes:可以設(shè)置為ON/OFF,表示是否記錄未使用索引的查詢到慢查詢?nèi)罩局校?/li>
- log_throttle_queries_not_using_indexes:表示每分鐘允許記錄到慢查詢?nèi)罩镜那椅词褂盟饕牟樵?,默認(rèn)為0表示沒有限制,若是沒有使用索引的查詢特別多,慢查詢?nèi)罩緯杆倥蛎?,可以用該參?shù)來進(jìn)行控制。
如何分析慢查詢?nèi)罩?/p>
mysqldumpslow ***_slow.log
若用戶需要查詢時(shí)間最長的十條SQL
mysqldumpslow -s al -n 10 ***_slow.log
從MySQL5.1版本開始慢查詢?nèi)罩究梢苑湃胍粡埍碇?,通過參數(shù)log_output來設(shè)置,該參數(shù)可以設(shè)置為File和Table,file表示以文件的方式,table表示以MySQL表格的形式。
二進(jìn)制文件 binlog
對MySQL數(shù)據(jù)庫執(zhí)行更改的所有操作進(jìn)行記錄
作用:1)恢復(fù) 2)復(fù)制 3)審計(jì)
參數(shù)配置
- log_bin:開啟binlog并指定文件目錄;
- max_binlog_size:單個(gè)二進(jìn)制文件的大小限制;
- binlog_cache_size中:事務(wù)未提交,二進(jìn)制日志被記錄到緩沖中,該緩沖大小由該參數(shù)決定,如果設(shè)置的太小,日志文件大小超過該值,會把日志文件寫入臨時(shí)文件中,涉及到磁盤IO影響性能;
- sync_binlog:sync_log[=N],表示每寫N次日志就同步到磁盤,默認(rèn)為1;
- binlog_do_db:需要寫入哪些庫的二進(jìn)制日志文件;
- binlog_ignore_db:需要忽略哪些庫的二進(jìn)制日志文件;
- log_slave_update:slave角色是否需要同步master的日志文件,若需要必須將參數(shù)設(shè)置為ON;
- binlog_format:二進(jìn)制文日志文件的格式,默認(rèn)為Statement,可選項(xiàng)項(xiàng)還包括row和mixed;
- innodb_support_xa:設(shè)置為1解決二進(jìn)制文件和InnoDB存儲引擎數(shù)據(jù)文件的同步。
如何查看二進(jìn)制文件:
mysqlbinlog -vv --start-position=**** ***.0001
重做日志文件
默認(rèn)情況下,數(shù)據(jù)目錄下會有兩個(gè)名為ib_logfile0和ib_logfile1的文件,就是重做日志文件,重做日志組默認(rèn)包含兩個(gè)日志文件,先寫日志文件1,文件1寫滿之后,切換到日志文件2,文件2寫滿之后,又切換回日志1。
配置參數(shù)
- innodb_log_file_size:指定每個(gè)重做日志文件的大小,最大為512GB;
- innodb_log_files_in_group:日志文件組中重做日志文件的數(shù)量,默認(rèn)為2;
- innodb_mirrored_log_groups:日志鏡像文件組的數(shù)量,默認(rèn)為1;
- innodb_log_group_home_dir:日志文件的路徑;
- innodb_flush_log_at_trx_commit:控制提交操作時(shí)處理重做日志的方式,有效值為0,1,2,0表示等待主線程刷新磁盤,1表示每次事務(wù)提交都將重做日志寫入文件中,2表示將刷新磁盤的時(shí)機(jī)交給操作系統(tǒng),三種方式對應(yīng)不同的級別的持久性。