mysql學習7:第四章:資料庫檔案--引數檔案和型別

studywell發表於2018-11-06

資料庫層面檔案:引數檔案my.cnf,錯誤日誌error log,慢查詢日誌slow log,全量日誌general log,二進位制日誌binlog,審計日誌audit log,中繼日誌relay log,套接字檔案socket,程式檔案pid,表結構檔案

儲存引擎層面:redo log,undo log日誌檔案。

引數檔案優先順序:/etc/my.cnf>/etc/mysql/my.cnf>/usr/local/mysql/my.cnf>/.my.cnf

想設定預設引數檔案,需設定--defaults-file引數

my.cnf檔案中,分為client section和server section兩塊。

client section用來配置mysql客戶端引數。

具體講解服務端引數,檢視透過:show variables like ‘%引數%’

 

innodb_buffer_pool :資料庫可用記憶體,實體記憶體50%-80%;,5.7可線上修改;

innodb_buffer_pool_instance :預設未1,5.6.6後可調整多個,表示InnoDB緩衝區可劃分為多個區域,提高併發性。每個緩衝區自管理,透過show engine innodb status可看到每個instance使用記憶體的情況。只有innodb_buffer_pool大於1G,多例項才生效。

 

快速載入記憶體中後設資料資訊

例項當機,記憶體中資料消失i,重新讀取將導致IO壓力增大,以下引數可解決:innodb_buffer_pool_load_at_staratup和innodb_buffer_pool_dump_at_shutdown

這兩個引數設定為啟用(5.7預設啟用),在例項關閉時,可將熱資料的後設資料資訊dump出來,儲存到ib_buffer_pool檔案中;檢視ib_buffer_pool檔名稱:show variables like ‘%innodb_buffer_poll_file%’

當例項啟動時,把後設資料快速載入到記憶體,其實所謂後設資料就是space number和page number的列表資訊,查詢語句如下:

切換資料庫:use infomation_schema

select space,page_number from INNODB_BUFFER_PAGE limit3;

 

innodb_data_file_path :可指定系統表空間檔案路徑和ibdata1檔案大小,預設10M,建議1G;

innodb_flash_log_at_trx_commit、sync_binlog、innodb_max_dirty_pages_pct:這三個引數影響redo log、binlog、髒頁的重新整理引數。

interactive_timeout: 伺服器關閉交叉式連線前等待活動的時間,預設8小時(28800s);

wait_timeout: 伺服器關閉非交叉式連線前等待活動的時間,預設8小時(28800s);

這兩個引數要一起設定成一樣的值,為避免過大連線時間,建議調整為300-600秒;5.7預設300s;

i nnodb_thread_concurrency :innodb核心最大併發執行緒數,預設0,表示不限制。

innodb_flash_method :影響innodb資料檔案、redo log 檔案開啟刷寫模式,建議選擇預設值0_DIRECT,資料檔案直接從mysql innodb buffer 寫入到磁碟,不透過os buffer。

innodb_old_blocks_time :決定young pages list中資料頁多久轉移到old pages list.

innodb_old_blocks_pct: 決定old pages list佔整個列表的百分比。案例:遇到大表掃描活使用mysqldump操作,有可能踢走熱資料,給資料庫帶來IO壓力,可適當減少innodb_old_blocks_pct的值分配,保證更多的熱資料不會被沖掉。

transaction_isolation: 事務的隔離級別,預設REPEATABLE-READ,其他還有READ-UNCOMMITTED, READ-COMMITTED,SERIALIZABLE;

innodb_open_files: 可同時開啟.ibd問問你家的個數,最小10,預設300,建議65535;

innodb_log_buffer_size: 日誌緩衝大小,資料改變記錄到緩衝區,如innodb_log_waits(等待日誌緩衝刷出的次數)大於0,而且持續增長,就要增大log buffer,範圍16M-64M。

innodb_log_file_size : redo log日誌的大小。

innodb_log_files_in_group :redo log檔案組中日誌檔案的資料量,預設至少2個;

max_connections: 資料庫最大連線數,預設151,可調大活調內部併發數

innodb_thread_concurrency :innodb內部併發數,預設0不受限,根據系統壓力,可改成CPU兩倍。透過設定thread_pool讓連線複用。

有監控讀取infomation_schma下面表,可關閉innodb_stats_on_metadata,方法:set global innodb_stats_on_metadata=0

expire_logs_days :代表binlog的過期時間,單位是天。

slow_query_log :慢查詢日誌開關,1表示開,生產環境要開啟。

long_query_time: 超過時間的日誌會記錄下來。

log_queries_not_using_indexes :如sql沒有索引則會記錄到慢查詢日誌中,生產環境開啟。set global log_queries_not_using_indexes = on

server-id : 代表同一組主從結構的唯一標識。

binlog_format: 二進位制日誌格式,生產環境用row安全,不會出現跨庫複製丟失資料。

lower_case_table_names :預設0區分表名大小寫,1不區分,以小寫儲存。

innodb_fast_shutdown: 影響innodb關閉時的行為,0是預設且最安全最慢,3最快。

       0:InnoDB關閉時,需執行purge all,merge change buffer,flush dirty pages,

       1:InnoDB關閉時,不執行purge all,merge insert buffer,不執行flush dirty page;

       2:InnoDB關閉時:不執行full purge,merge insert buffer,重新整理髒頁到磁碟,只將redobuffer寫到日誌。

 

innodb_force_reecovery :影響InnoDB儲存引擎恢復時的行為,取值0到6

       0:當需要恢復時執行所有恢復操作。預設為0

       1:忽略檢查到的corrupt頁;

       2:阻止主執行緒執行,如主執行緒要執行full purge,會導致crash

       3:不執行事務回滾操作

       4:不執行插入緩衝的合併操作

       5:不檢視撤銷日誌,InnoDB會見未提交的事務視為已提交;

       6:不執行前滾操作

 

innodb_status_output,innodb_status_output_locks: 建議關閉,即設定為0,否則將資料庫監控的資訊全記錄到error.log中,日誌增長過快。

innodb_io_capcity :影響重新整理髒頁和插入緩衝的數量,預設200.

auot_increment_increment :自增欄位每次遞增的值,預設1

auto_increment_offset: 自增欄位開始值。

引數分為動態引數和靜態引數

動態引數:

       set global:代表全域性引數,修改退出會話依然有效,但重啟後失效。

       set session:只對當前會話有效,一旦退出,立即失效。

 

靜態引數:無法線上修改,修改會報read only variable錯誤。只能修改配置檔案,重啟資料庫生效。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29519108/viewspace-2218902/,如需轉載,請註明出處,否則將追究法律責任。

相關文章