MySQL5.7應當注意的參數

簡介: 本篇文章主要介紹 MySQL 初始化應當注意的參數,對於不一樣環境間實例遷移,這些參數一樣應當注意。html

注: 本文介紹的參數都是在配置文件 [mysqld] 部分。mysql

server_idlog_binbinlog_format

這幾個系統變量一般成對出現,當咱們想指定log_bin 選項時,必須也要指定server_idsql

log_bin 是全局變量 不可動態修改 默認爲OFF。當咱們須要開啓binlog時,可將該參數設爲binlog名字或絕對路徑加名字。數據庫

binlog_format 指定binlog格式 5.7.7版本以上默認是ROW模式緩存

建議設置:安全

#server_id 各個實例建議設置不一樣 log_bin不指定路徑時默認在數據文件目錄
server_id = 213306
log_bin = mysqlbin
binlog_format = row
或者
server_id = 213306
log_bin = /data/mysql/logs/mysqlbin
binlog_format = row

sql_mode

該參數控制 MySQL server 在不一樣的SQL模式下運行,對於客戶端發送的請求不一樣的模式會有不一樣的應答。服務器

sql_mode 參數分爲全局和會話級別 能夠動態修改 ide

#sql_mode 默認爲:
sql_mode = ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
#關於修改和各個模式的做用 可參考官方文檔:
 https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html

該參數建議去掉ONLY_FULL_GROUP_BY,具體採用嚴格或非嚴格模式能夠根據需求來修改。注意該參數在不一樣實例要保持一致,否則可能會出現一條sql在此環境下能夠執行 在另一個環境不能執行的狀況。工具

max_connections

該參數指定 MySQL 的最大鏈接數,是全局變量 可動態修改 默認爲151。建議設置大些 防止出現鏈接數用滿的錯誤。測試

character_set_server

該參數指定 MySQL server端字符集,分爲全局和會話級別 能夠動態修改 5.7版本默認值爲latin1。

建議設置該參數爲utf8或utf8mb4,不一樣實例間保持一致 特別是主從實例。

lower_case_table_names

該參數控制 MySQL 是否大小寫敏感,主要影響庫名及表名。

Linux下該參數默認爲0 即對大小寫敏感,是全局變量 不可動態修改,建議設置爲1。

transaction_isolation

該參數指定 MySQL server 採用哪一種事務隔離級別,默認是REPEATABLE-READ 可動態修改。

採用哪一種隔離級別要根據應用要求來選擇,通常可改成READ-COMMITTED,不一樣實例間建議保持一致。

innodb_buffer_pool_size

該參數控制InnoDB緩衝池大小,默認值爲134217728字節(128MB)5.7.5版本以上可動態修改。

緩衝池是緩存數據和索引的地方,儘量大的緩存池將確保使用內存而不是磁盤來進行大多數讀取操做。典型值爲5-6GB(8GB RAM),20-25GB(32GB RAM),100-120GB(128GB RAM),在一個獨立使用的數據庫服務器上,你能夠設置這個變量到服務器物理內存大小的80%。

innodb_log_file_size

該參數定義redo日誌組中每一個日誌文件的大小(以字節爲單位),是全局變量 不可動態修改 默認爲48M。

當MySQL server 讀寫比較頻繁時,建議增大該參數 可與 innodb_log_files_in_group 參數配合使用。

innodb_io_capacityinnodb_io_capacity_max

innodb_io_capacity參數設置InnoDB後臺任務每秒執行的IO操做數的上限,默認值爲200 可動態修改。

此參數應設置爲系統每秒大約可執行的IO操做數 即系統的IOPS。該值取決於你的系統配置。

當MySQL server 寫操做特多 刷新髒頁落後時 , innodb_io_capacity_max 參數是後臺任務定義每秒執行的IO操做數的上限,innodb_io_capacity_max一般設置爲innodb_io_capacity的2倍。

若是MySQL服務器是SSD高速磁盤,咱們能夠設置 innodb_io_capacity_max= 6000 和 innodb_io_capacity = 3000 (最大值的50%)。固然 運行sysbench或任何其餘基準測試工具來對磁盤吞吐量進行基準測試是個好主意。

其餘相關參數

除了上面列舉的參數 還有些其餘參數須要注意 ,篇幅關係 我將其彙總以下:

#禁用全部DNS解析 建議開啓 惟一的限制是GRANT語句必須僅使用IP地址
skip_name_resolve = 1
#MySQL server關閉空閒鏈接等待的秒數 默認爲28800
interactive_timeout = ?  
wait_timeout = ?
#日誌記錄時間與系統保持一致
log_timestamps = SYSTEM
#一些日誌相關參數
log_error = error.log
slow_query_log = 1
slow_query_log_file = slow.log
long_query_time = 3
#binlog日誌刪除策略 單位爲天 默認爲0 及不自動清理
expire_logs_days = 30 
#容許master建立function並同步到slave,有潛在的數據安全問題
log_bin_trust_function_creators = 1
#導出文件安全目錄 默認爲空
secure_file_priv = /tmp

總結:

本篇文章介紹了部分MySQL初始化應當注意的參數,給出了相關參數的默認值及是否可動態修改。對於不可動態修改的參數 建議啓動前設置合理,這樣能夠減小後面維護重啓次數。

在你們修改參數以前 請記住如下幾點:

  • 一次更改一個設置!這是估計變動是否有益的惟一方法。
  • 不容許在配置文件中進行重複設置。若是要跟蹤更改,請使用版本控制。
  • 更改前應該在測試環境演練。
  • 確保參數位置正確,單位合理,不和其餘參數衝突。
  • 不要作天真的數學運算,好比「個人新服務器有2x內存,我只須要將全部值設置爲之前的2倍」。
相關文章
相關標籤/搜索