共計 3525 個字符,預計需要花費 9 分鐘才能閱讀完成。
這篇文章主要講解了“怎么理解并掌握 mysql 參數文件和類型”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學習“怎么理解并掌握 mysql 參數文件和類型”吧!
1.
第四章: 數據庫文件
數據庫層面文件:參數文件 my.cnf,錯誤日志 error log,慢查詢日志 slow log,全量日志 general log,二進制日志 binlog,審計日志 audit log,中繼日志 relay log,套接字文件 socket,進程文件 pid,表結構文件
存儲引擎層面:redo log,undo log 日志文件。
1.1.
參數文件
參數文件優先級:/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;
innodb_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: 自增字段開始值。
1.2.
參數類型
參數分為動態參數和靜態參數
動態參數:
set global: 代表全局參數,修改退出會話依然有效,但重啟后失效。
set session: 只對當前會話有效,一旦退出,立即失效。
靜態參數:無法在線修改,修改會報 read only variable 錯誤。只能修改配置文件,重啟數據庫生效。
感謝各位的閱讀,以上就是“怎么理解并掌握 mysql 參數文件和類型”的內容了,經過本文的學習后,相信大家對怎么理解并掌握 mysql 參數文件和類型這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關知識點的文章,歡迎關注!