| 模板 | 定位 | 記憶體假設 | 適用場景 |
|---|---|---|---|
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- 後再微調。
[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 socketuser:服務進程擁有者,必須為專用 mysql 用戶basedir:安裝根目錄err-log:錯誤日誌路徑 (5.1+ 用 log-error)pid-file:進程 ID 檔[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 形式。
| 參數 | small | medium | large | huge |
|---|---|---|---|---|
key_buffer_size | 16K | 16M | 256M | 384M |
table_open_cache | 4 | 64 | 256 | 512 |
sort_buffer_size | 64K | 512K | 1M | 2M |
read_buffer_size | 256K | 1M | 2M | 2M |
myisam_sort_buffer_size | — | 8M | 64M | 128M |
thread_cache_size | — | — | 8 | 16 |
thread_concurrency | — | — | 8 (4 CPU×2) | 16 (8 CPU×2) |
log-bin | — | ✅ | ✅ | ✅ |
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
[mysql.server] → [mysqld_safe]、err-log → log-error、skip-locking → skip-external-lockingtable_cache → table_open_cachequery_cache_* 棄用、innodb_buffer_pool_dump_at_shutdown 新增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 的「基因密碼」。從模板起步 → 依硬體調整核心參數 → 依負載微調 → 持續觀測迭代。切記:沒有通用最佳配置,只有特定負載下的最優解。