MySQL?8.0版本配置my.cnf?/?my.ini各項(xiàng)配置示例詳解
1. 核心配置項(xiàng)說(shuō)明與優(yōu)化建議
[mysqld] 部分
這是 MySQL 服務(wù)端的主要配置段。
| 配置項(xiàng) | 說(shuō)明 | 推薦值/建議 |
|---|---|---|
datadir | 數(shù)據(jù)庫(kù)文件存儲(chǔ)路徑(如 /var/lib/mysql)。 | 根據(jù)磁盤(pán)空間和性能需求選擇 SSD 或高IOPS磁盤(pán)。 |
socket | MySQL 的 Unix Socket 文件路徑。 | 默認(rèn) /var/run/mysqld/mysqld.sock(Linux)。 |
port | MySQL 服務(wù)監(jiān)聽(tīng)的端口。 | 默認(rèn) 3306,如需多實(shí)例需修改。 |
bind-address | 允許連接的 IP 地址。 | 0.0.0.0 允許所有遠(yuǎn)程連接;127.0.0.1 僅允許本地連接。 |
character-set-server | 默認(rèn)字符集。 | utf8mb4(支持 Emoji 和更多 Unicode 字符)。 |
collation-server | 默認(rèn)字符排序規(guī)則。 | utf8mb4_unicode_ci(通用排序規(guī)則)。 |
內(nèi)存與性能優(yōu)化
| 配置項(xiàng) | 說(shuō)明 | 推薦值/建議 |
|---|---|---|
innodb_buffer_pool_size | InnoDB 緩沖池大小,緩存數(shù)據(jù)和索引。直接影響性能。 | 設(shè)置為物理內(nèi)存的 50%~70%(如 16GB 內(nèi)存可設(shè)為 8G)。獨(dú)立服務(wù)器可更高,但需預(yù)留系統(tǒng)和其他進(jìn)程內(nèi)存。 |
innodb_log_file_size | InnoDB 重做日志文件大小。 | 推薦 1G~4G,需權(quán)衡崩潰恢復(fù)時(shí)間。大日志提高寫(xiě)入性能,但恢復(fù)時(shí)間變長(zhǎng)。 |
innodb_flush_method | 控制 InnoDB 數(shù)據(jù)文件刷新方式。 | O_DIRECT(直接寫(xiě)入磁盤(pán),避免雙緩存)。 |
innodb_flush_log_at_trx_commit | 事務(wù)提交時(shí)日志刷新策略:0(每秒刷新,性能高,可能丟失1秒數(shù)據(jù))1(默認(rèn),完全持久化,安全但性能低)2(寫(xiě)入OS緩存,系統(tǒng)崩潰可能丟數(shù)據(jù)) | 高并發(fā)寫(xiě)入場(chǎng)景可設(shè)為 2,但需權(quán)衡數(shù)據(jù)安全。金融類(lèi)應(yīng)用建議 1。 |
key_buffer_size | MyISAM 表的索引緩存(若使用 MyISAM)。 | 若僅用 InnoDB,可設(shè)為 16M 或更低。 |
tmp_table_sizemax_heap_table_size | 內(nèi)存臨時(shí)表的最大大小。 | 設(shè)為相同值(如 64M)。避免過(guò)大導(dǎo)致內(nèi)存溢出,過(guò)小導(dǎo)致磁盤(pán)臨時(shí)表。 |
query_cache_type | 查詢(xún)緩存(MySQL 8.0 已廢棄)。 | 禁用(0),8.0 中已移除查詢(xún)緩存。 |
連接與線(xiàn)程
| 配置項(xiàng) | 說(shuō)明 | 推薦值/建議 |
|---|---|---|
max_connections | 允許的最大并發(fā)連接數(shù)。 | 根據(jù)應(yīng)用需求調(diào)整(默認(rèn) 151)。過(guò)高可能導(dǎo)致內(nèi)存不足(每個(gè)連接約占用 256KB~幾MB)。結(jié)合 thread_cache_size 優(yōu)化。 |
thread_cache_size | 緩存線(xiàn)程數(shù),避免頻繁創(chuàng)建/銷(xiāo)毀線(xiàn)程。 | 建議 max_connections 的 10%(如 200)。 |
wait_timeoutinteractive_timeout | 非交互/交互連接的空閑超時(shí)時(shí)間(秒)。 | 建議 300(5分鐘),避免長(zhǎng)時(shí)間空閑連接占用資源。 |
日志與監(jiān)控
| 配置項(xiàng) | 說(shuō)明 | 推薦值/建議 |
|---|---|---|
log_error | 錯(cuò)誤日志文件路徑。 | 默認(rèn) /var/log/mysql/error.log,建議開(kāi)啟并定期清理。 |
slow_query_log | 是否啟用慢查詢(xún)?nèi)罩尽?/td> | 1(開(kāi)啟),結(jié)合 long_query_time(如 2秒)記錄慢查詢(xún)。 |
log-bin | 二進(jìn)制日志路徑(用于主從復(fù)制/時(shí)間點(diǎn)恢復(fù))。 | 主從復(fù)制必開(kāi),路徑需足夠磁盤(pán)空間。 |
binlog_expire_logs_seconds | 二進(jìn)制日志過(guò)期時(shí)間(秒)。 | 默認(rèn) 2592000(30天),根據(jù)備份策略調(diào)整。 |
general_log | 是否記錄所有查詢(xún)?nèi)罩荆ㄉ饔?,影響性能)?/td> | 默認(rèn) 0(關(guān)閉),調(diào)試時(shí)臨時(shí)開(kāi)啟。 |
2. 其他重要配置項(xiàng)
| 配置項(xiàng) | 說(shuō)明 |
|---|---|
innodb_file_per_table | 每個(gè) InnoDB 表使用獨(dú)立表空間(.ibd 文件),便于管理。建議 ON。 |
skip-name-resolve | 禁用 DNS 解析,加速連接。需用 IP 或本地主機(jī)名訪問(wèn)。 |
transaction_isolation | 事務(wù)隔離級(jí)別(如 READ-COMMITTED)。 |
innodb_lock_wait_timeout | InnoDB 行鎖等待超時(shí)時(shí)間(秒),默認(rèn) 50。 |
3. 示例配置文件(參考)
[mysqld] # 基礎(chǔ)配置 datadir = /var/lib/mysql socket = /var/run/mysqld/mysqld.sock port = 3306 bind-address = 0.0.0.0 character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci # 內(nèi)存優(yōu)化 innodb_buffer_pool_size = 8G innodb_log_file_size = 2G innodb_flush_method = O_DIRECT tmp_table_size = 64M max_heap_table_size = 64M # 連接管理 max_connections = 500 thread_cache_size = 50 wait_timeout = 300 interactive_timeout = 300 # 日志與監(jiān)控 log_error = /var/log/mysql/error.log slow_query_log = 1 slow_query_log_file = /var/log/mysql/mysql-slow.log long_query_time = 2 log-bin = /var/log/mysql/mysql-bin.log binlog_expire_logs_seconds = 2592000 # InnoDB 高級(jí)配置 innodb_file_per_table = ON innodb_flush_log_at_trx_commit = 2 # 高并發(fā)寫(xiě)入場(chǎng)景 transaction_isolation = READ-COMMITTED
4. 調(diào)優(yōu)建議
分場(chǎng)景優(yōu)化:
小型應(yīng)用:降低
innodb_buffer_pool_size(如 1G)。高并發(fā)寫(xiě)入:調(diào)整
innodb_flush_log_at_trx_commit=2和sync_binlog=0(需權(quán)衡數(shù)據(jù)安全)。大型數(shù)據(jù)庫(kù):增加
innodb_buffer_pool_size并啟用innodb_buffer_pool_instances(如 8 實(shí)例)。
監(jiān)控工具:
使用
SHOW GLOBAL STATUS和SHOW ENGINE INNODB STATUS查看運(yùn)行狀態(tài)。工具:
mysqltuner.pl、Percona Monitoring and Management (PMM)。
測(cè)試與驗(yàn)證:
修改配置后重啟 MySQL:
systemctl restart mysql。使用
sysbench或?qū)嶋H業(yè)務(wù)負(fù)載測(cè)試性能。
5. 注意事項(xiàng)
備份配置:修改前備份
my.cnf。逐步調(diào)整:每次僅修改一個(gè)參數(shù)并觀察效果。
硬件依賴(lài):SSD 可顯著提升
innodb_io_capacity相關(guān)參數(shù)。
總結(jié)
到此這篇關(guān)于MySQL 8.0版本配置my.cnf / my.ini各項(xiàng)配置的文章就介紹到這了,更多相關(guān)MySQL8.0版本my.cnf/my.ini配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用MySQL Slow Log來(lái)解決MySQL CPU占用高的問(wèn)題
在Linux VPS系統(tǒng)上有時(shí)候會(huì)發(fā)現(xiàn)MySQL占用CPU高,導(dǎo)致系統(tǒng)的負(fù)載比較高。這種情況很可能是某個(gè)SQL語(yǔ)句執(zhí)行的時(shí)間太長(zhǎng)導(dǎo)致的。優(yōu)化一下這個(gè)SQL語(yǔ)句或者優(yōu)化一下這個(gè)SQL引用的某個(gè)表的索引一般能解決問(wèn)題2013-03-03
mysql中sql查詢(xún)性能分析和配置優(yōu)化全面攻略
處理Mysql性能上的問(wèn)題,可以利用一些Linux常用的命令來(lái)查看Mysql對(duì)服務(wù)器的CUP和I/O使用情況,通過(guò)慢查詢(xún)?nèi)罩菊页鲇写齼?yōu)化的sql,通過(guò)show?processlist查看正在執(zhí)行的sql的情況以及及時(shí)kill死鎖的sql,通過(guò)EXPLAIN分析需要優(yōu)化的sql語(yǔ)句,對(duì)Mysql內(nèi)部配置做一些調(diào)整2024-03-03
MySQL添加外鍵時(shí)報(bào)錯(cuò):1215 Cannot add the foreign key constraint的解決方法
大家都知道MySQL中經(jīng)常會(huì)需要?jiǎng)?chuàng)建父子表之間的約束,這個(gè)約束是需要建立在主外鍵基礎(chǔ)之上的,最近在MySQL添加外鍵時(shí)發(fā)現(xiàn)了一個(gè)報(bào)錯(cuò):1215 Cannot add the foreign key constraint,所以這篇文章就給大家介紹了如何解決在創(chuàng)建主外鍵約束過(guò)程中碰到的這個(gè)問(wèn)題。2016-11-11

