首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 配置文件 my.cnf 深度解析:五大預設模板、關鍵段落、參數調優與版本差異

     編輯:MySQL 資料庫相關知識

五大官方預設模板 (隨 mysql-server RPM 提供)

模板定位記憶體假設適用場景
my-small.cnf嵌入式/極小資料集< 64MB個人專案、IoT 閘道
my-medium.cnf中等負載、共享主機128~256MB虛擬主機、開發機
my-large.cnf專用資料庫伺服器512MB~1GB獨立 DB 伺服器
my-huge.cnf企業級核心業務1~2GB+高併發、大資料量
/etc/my.cnf (系統默認)最小可用配置—學習/最小安裝

使用方式:cp /usr/share/doc/mysql-server-*/my-.cnf /etc/my.cnf 後再微調。

/etc/my.cnf 核心段落逐行解析 (默認版)

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# skip-innodb  # 若未使用 InnoDB 可開啟

[mysql.server]
user=mysql
basedir=/var/lib

[mysqld_safe]  # 5.1+ 改為 [mysqld_safe]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
  • datadir:資料目錄,建議掛載獨立分區/磁碟
  • socket:本地連線 Unix domain socket
  • user:服務進程擁有者,必須為專用 mysql 用戶
  • basedir:安裝根目錄
  • err-log:錯誤日誌路徑 (5.1+ 用 log-error)
  • pid-file:進程 ID 檔

my-small.cnf 關鍵參數與含義

[client]
port=3306
socket=/var/lib/mysql/mysql.sock

[mysqld]
skip-locking  # 5.1+ 為 skip-external-locking
key_buffer_size=16K
max_allowed_packet=1M
thread_stack=64K
table_open_cache=4
sort_buffer_size=64K
read_buffer_size=256K
read_rnd_buffer_size=256K
net_buffer_length=2K
server-id=1

[mysqldump]
quick
max_allowed_packet=16M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size=8M
sort_buffer_size=8M

[mysqlhotcopy]
interactive-timeout

注意:set-variable= 語法已棄用 (5.1+),直接用 key_buffer_size=16K 形式。

遞增模板關鍵差異參數

參數smallmediumlargehuge
key_buffer_size16K16M256M384M
table_open_cache464256512
sort_buffer_size64K512K1M2M
read_buffer_size256K1M2M2M
myisam_sort_buffer_size—8M64M128M
thread_cache_size——816
thread_concurrency——8 (4 CPU×2)16 (8 CPU×2)
log-bin—✅✅✅

InnoDB 專屬關鍵參數 (大模板補充)

innodb_buffer_pool_size = 4G  # 物理記憶體 60-80%
innodb_log_file_size = 512M
innodb_log_files_in_group = 2
innodb_flush_log_at_trx_commit = 1  # 完全 ACID
innodb_flush_method = O_DIRECT
innodb_file_per_table = 1
innodb_read_io_threads = 8
innodb_write_io_threads = 8

版本差異提醒

  • 5.1+:[mysql.server] → [mysqld_safe]、err-log → log-error、skip-locking → skip-external-locking
  • 5.6+:table_cache → table_open_cache
  • 5.7+:query_cache_* 棄用、innodb_buffer_pool_dump_at_shutdown 新增
  • 8.0+:default_authentication_plugin、caching_sha2_password 預設

用戶級配置 ~/.my.cnf

[client]
host=localhost
user=dev
password=pass
database=dev_db

[mysql]
auto-rehash
safe-updates
prompt=[\d \u@\h \D]>

結語

my.cnf 是 MySQL 的「基因密碼」。從模板起步 → 依硬體調整核心參數 → 依負載微調 → 持續觀測迭代。切記:沒有通用最佳配置,只有特定負載下的最優解。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved