MySQL?8配置文件的詳細(xì)解析
前言
MySQL 8 的配置文件(my.cnf或my.ini)是MySQL服務(wù)器啟動(dòng)時(shí)讀取的主要配置文件,它包含了服務(wù)器運(yùn)行所需的各種參數(shù)設(shè)置。以下是MySQL 8配置文件的詳細(xì)解析:
配置文件位置
MySQL 8 會(huì)按照以下順序查找配置文件:
/etc/my.cnf/etc/mysql/my.cnf~/.my.cnf(用戶(hù)特定配置)- 通過(guò)
--defaults-file參數(shù)指定的文件
配置文件結(jié)構(gòu)
配置文件通常分為多個(gè)部分,用方括號(hào)[]標(biāo)識(shí):
[client] port = 3306 socket = /var/run/mysqld/mysqld.sock [mysqld] # 服務(wù)器配置選項(xiàng) [mysqld_safe] # 安全相關(guān)選項(xiàng) [mysql] # MySQL客戶(hù)端選項(xiàng) [mysqldump] # 備份工具選項(xiàng)
核心配置參數(shù)詳解
基礎(chǔ)配置
[mysqld] # 服務(wù)器標(biāo)識(shí) server-id = 1 # 復(fù)制環(huán)境中唯一標(biāo)識(shí)服務(wù)器 # 網(wǎng)絡(luò)配置 port = 3306 # 監(jiān)聽(tīng)端口 bind-address = 127.0.0.1 # 綁定IP地址 skip-networking = 0 # 是否禁用網(wǎng)絡(luò)連接 # 文件路徑 datadir = /var/lib/mysql # 數(shù)據(jù)目錄 socket = /var/run/mysqld/mysqld.sock # Unix socket文件 pid-file = /var/run/mysqld/mysqld.pid # PID文件位置 tmpdir = /tmp # 臨時(shí)目錄 # 字符集設(shè)置 character-set-server = utf8mb4 # 默認(rèn)字符集 collation-server = utf8mb4_unicode_ci # 默認(rèn)排序規(guī)則
內(nèi)存相關(guān)配置
[mysqld] # 緩沖池配置(重要) innodb_buffer_pool_size = 4G # InnoDB緩沖池大小,通常設(shè)為物理內(nèi)存的50-70% innodb_buffer_pool_instances = 8 # 緩沖池實(shí)例數(shù),提高并發(fā)性 # 連接相關(guān) max_connections = 200 # 最大連接數(shù) thread_cache_size = 10 # 線(xiàn)程緩存大小 # 排序和臨時(shí)表 sort_buffer_size = 2M # 每個(gè)排序線(xiàn)程分配的緩沖區(qū)大小 join_buffer_size = 2M # 連接操作緩沖區(qū)大小 tmp_table_size = 64M # 臨時(shí)表內(nèi)存大小 max_heap_table_size = 64M # 內(nèi)存表最大大小
InnoDB存儲(chǔ)引擎配置
[mysqld] # InnoDB基礎(chǔ)配置 innodb_file_per_table = ON # 每個(gè)表使用單獨(dú)的表空間文件 innodb_flush_method = O_DIRECT # I/O刷新方式 innodb_log_file_size = 256M # 重做日志文件大小 innodb_log_buffer_size = 16M # 重做日志緩沖區(qū)大小 innodb_flush_log_at_trx_commit = 1 # 事務(wù)提交時(shí)日志刷新方式(1最安全) # InnoDB高級(jí)配置 innodb_read_io_threads = 8 # 讀I/O線(xiàn)程數(shù) innodb_write_io_threads = 8 # 寫(xiě)I/O線(xiàn)程數(shù) innodb_io_capacity = 2000 # IOPS能力估計(jì) innodb_io_capacity_max = 4000 # 最大IOPS innodb_buffer_pool_dump_at_shutdown = ON # 關(guān)閉時(shí)保存緩沖池狀態(tài) innodb_buffer_pool_load_at_startup = ON # 啟動(dòng)時(shí)加載緩沖池狀態(tài)
日志配置
[mysqld] # 錯(cuò)誤日志 log_error = /var/log/mysql/error.log # 錯(cuò)誤日志路徑 log_error_verbosity = 3 # 錯(cuò)誤日志詳細(xì)程度(1-3) # 慢查詢(xún)?nèi)罩? slow_query_log = 1 # 啟用慢查詢(xún)?nèi)罩? slow_query_log_file = /var/log/mysql/mysql-slow.log # 慢查詢(xún)?nèi)罩韭窂? long_query_time = 2 # 慢查詢(xún)閾值(秒) log_queries_not_using_indexes = 1 # 記錄未使用索引的查詢(xún) # 二進(jìn)制日志(復(fù)制和恢復(fù)) log_bin = /var/log/mysql/mysql-bin.log # 二進(jìn)制日志路徑 binlog_format = ROW # 二進(jìn)制日志格式(ROW/STATEMENT/MIXED) binlog_expire_logs_seconds = 2592000 # 日志過(guò)期時(shí)間(30天) sync_binlog = 1 # 每次事務(wù)都同步二進(jìn)制日志
安全相關(guān)配置
[mysqld] # 安全設(shè)置 local_infile = OFF # 禁用LOAD DATA LOCAL INFILE skip_name_resolve = ON # 禁用DNS解析 secure_file_priv = /var/lib/mysql-files # 限制文件導(dǎo)入導(dǎo)出位置 default_authentication_plugin = mysql_native_password # 默認(rèn)認(rèn)證插件 # SSL配置 ssl-ca = /etc/mysql/ca.pem ssl-cert = /etc/mysql/server-cert.pem ssl-key = /etc/mysql/server-key.pem require_secure_transport = ON # 要求安全連接
性能優(yōu)化配置
[mysqld] # 查詢(xún)緩存(MySQL 8.0已移除查詢(xún)緩存) # query_cache_type = 0 # query_cache_size = 0 # 表定義緩存 table_open_cache = 4000 # 表定義緩存數(shù)量 table_definition_cache = 2000 # 表定義信息緩存 # 其他優(yōu)化 innodb_stats_on_metadata = OFF # 禁用統(tǒng)計(jì)信息自動(dòng)更新 innodb_adaptive_hash_index = ON # 啟用自適應(yīng)哈希索引 innodb_print_all_deadlocks = ON # 記錄所有死鎖信息
MySQL 8 新增配置項(xiàng)
[mysqld] # MySQL 8新增特性 default_collation_for_utf8mb4 = utf8mb4_0900_ai_ci # 新的默認(rèn)排序規(guī)則 log_error_services = 'log_filter_internal; log_sink_json' # 日志服務(wù)組件 binlog_group_commit_sync_delay = 100 # 組提交延遲(微秒) binlog_group_commit_sync_no_delay_count = 10 # 最大等待事務(wù)數(shù)
注意事項(xiàng)
- 修改配置文件后需要重啟MySQL服務(wù)才能生效
- 可以使用
mysqld --verbose --help查看所有可用選項(xiàng) - 動(dòng)態(tài)參數(shù)可以通過(guò)
SET GLOBAL命令修改而無(wú)需重啟 - 建議使用
mysqld --defaults-file=/path/to/my.cnf --help --verbose檢查配置是否正確 - MySQL 8.0移除了查詢(xún)緩存(query cache)相關(guān)配置
最佳實(shí)踐
- 根據(jù)服務(wù)器內(nèi)存大小合理設(shè)置
innodb_buffer_pool_size - 生產(chǎn)環(huán)境建議啟用二進(jìn)制日志和慢查詢(xún)?nèi)罩?/li>
- 安全相關(guān)配置應(yīng)根據(jù)實(shí)際需求嚴(yán)格設(shè)置
- 定期檢查并優(yōu)化配置參數(shù)
- 使用MySQL配置向?qū)Чぞ?如MySQLTuner)獲取優(yōu)化建議
以上是MySQL 8配置文件的主要參數(shù)詳解,實(shí)際配置應(yīng)根據(jù)具體應(yīng)用場(chǎng)景和服務(wù)器硬件資源進(jìn)行調(diào)整。
總結(jié)
到此這篇關(guān)于MySQL 8配置文件的文章就介紹到這了,更多相關(guān)MySQL8配置文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Linux下MySQL5.7.18二進(jìn)制包安裝教程(無(wú)默認(rèn)配置文件my_default.cnf)
- mysql8.0找不到my.ini配置文件的問(wèn)題及解決
- mysql 8.0 找不到my.ini配置文件以及報(bào)sql_mode=only_full_group_by解決方案
- mysql8.0配置文件my.ini詳解
- MySQL?8.0.31中使用MySQL?Workbench提示配置文件錯(cuò)誤信息解決方案
- Mysql8.0修改配置文件my.ini的坑及解決
- MySQL 8.0找不到 my.ini 配置文件(并開(kāi)啟 Binlog 監(jiān)聽(tīng))
相關(guān)文章
MySQL學(xué)習(xí)之?dāng)?shù)據(jù)庫(kù)表五大約束詳解小白篇
本篇文章非常適合MySQl初學(xué)者,主要講解了MySQL數(shù)據(jù)庫(kù)的五大約束及約束概念和分類(lèi),有需要的朋友可以借鑒參考下,希望可以有所幫助2021-09-09
詳解隱秘的?MySQL?類(lèi)型轉(zhuǎn)換問(wèn)題詳解
這篇文章主要為大家介紹了詳解隱秘的?MySQL?類(lèi)型轉(zhuǎn)換問(wèn)題詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
mysql?8.0.27?安裝配置方法圖文教程(Windows64位)
這篇文章主要為大家詳細(xì)介紹了mysql?8.0.27?下載、安裝與配置圖文教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
MySQL數(shù)據(jù)庫(kù)壓縮版本安裝與配置詳細(xì)教程
今天教各位小伙伴怎么安裝及配置Mysql數(shù)據(jù)庫(kù),文中有非常詳細(xì)的圖文解說(shuō)及代碼示例,對(duì)剛?cè)腴T(mén)mysql的小伙伴們很有幫助,需要的朋友可以參考下2021-05-05
MySQL通過(guò)觸發(fā)器解決數(shù)據(jù)庫(kù)中表的行數(shù)限制詳解及實(shí)例
這篇文章主要介紹了MySQL通過(guò)觸發(fā)器解決數(shù)據(jù)庫(kù)中表的行數(shù)限制詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-04-04
MySQL異常宕機(jī)無(wú)法啟動(dòng)的處理過(guò)程
MySQL宕機(jī)是指MySQL數(shù)據(jù)庫(kù)服務(wù)突然停止運(yùn)行,通??赡苁怯捎谟布收?、軟件錯(cuò)誤、資源耗盡、網(wǎng)絡(luò)中斷、配置問(wèn)題或是惡意攻擊等導(dǎo)致,當(dāng)MySQL發(fā)生宕機(jī)時(shí),系統(tǒng)可能無(wú)法提供數(shù)據(jù)訪(fǎng)問(wèn),本文給大家介紹了MySQL異常宕機(jī)無(wú)法啟動(dòng)的處理過(guò)程,需要的朋友可以參考下2024-08-08

