本文提供基於 MariaDB 官方 my-huge.cnf 模板的完整中文註釋版,適用於 1-2GB 記憶體的專用資料庫伺服器。包含客戶端、伺服器、複制、InnoDB、工具等完整配置區段。
my_print_defaults --help 可查看讀取路徑優先級[client], [mysqld], [mysqldump] 等) 由對應程式讀取# 開頭,內聯註釋亦支援# MariaDB 配置文件範本 (huge, 巨型)
# 適用:專用資料庫伺服器,記憶體 1-2GB,主要運行 MariaDB
[client]
# password = your_password # 不建議明文寫密碼
port = 3306
socket = /var/lib/mysql/mysql.sock
[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
skip-external-locking # 避免外部鎖定,單機部署建議開啟
# === 核心緩衝區配置 ===
key_buffer_size = 384M # MyISAM 索引緩衝
max_allowed_packet = 1M # 單次封包最大值
table_open_cache = 512 # 表緩存數量
sort_buffer_size = 2M # 排序緩衝 (每線程)
read_buffer_size = 2M # 循序讀取緩衝 (每線程)
read_rnd_buffer_size = 8M # 隨機讀取緩衝 (每線程)
myisam_sort_buffer_size = 64M # MyISAM 索引建立排序緩衝
thread_cache_size = 8 # 線程緩存,減少創建銷毀開銷
query_cache_size = 32M # 查詢緩存 (5.7+ 已移除,MariaDB 保留)
# 併發線程數,建議 CPU 核心數 * 2
thread_concurrency = 8
# === 臨時目錄 (可指定 SSD) ===
# tmpdir = /tmp/
# === 網路安全 ===
# skip-networking # 僅允許本地 socket 連線,極高安全但需應用同機
# === 主從複制配置 ===
log-bin = mysql-bin # 啟用二進制日誌
server-id = 1 # 集群內唯一 ID (1 ~ 2^32-1)
# === 從庫配置範本 (需註釋主庫部分) ===
# server-id = 2
# master-host =
# master-user =
# master-password =
# master-port = 3306
# log-bin = mysql-bin
# binlog_format = mixed # 推薦 mixed 格式
# === InnoDB 專用配置 (取消註釋啟用) ===
# innodb_data_home_dir = /var/lib/mysql
# innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend
# innodb_log_group_home_dir = /var/lib/mysql
# innodb_buffer_pool_size = 384M # 僅用 InnoDB 時設為物理記憶體 50-80%
# innodb_additional_mem_pool_size = 20M
# innodb_log_file_size = 100M # 約 buffer_pool 25%
# innodb_log_buffer_size = 8M
# innodb_flush_log_at_trx_commit = 1 # 1=最安全,2=高效能,0=風險最高
# innodb_lock_wait_timeout = 50 # 死鎖等待超時 (秒)
[mysqldump]
quick # 直接輸出,不緩存記憶體
max_allowed_packet = 16M
[mysql]
no-auto-rehash # 禁用自動補全,加快啟動
# safe-updates # 新手保護:拒絕無 WHERE 的 UPDATE/DELETE
[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
| 參數 | 建議值 | 調整依據 |
|---|---|---|
| innodb_buffer_pool_size | 物理記憶體 60-80% | 核心效能參數,存放數據+索引 |
| innodb_log_file_size | 512M - 2G | 大寫入量系統需增大,減少 checkpoint 頻率 |
| innodb_flush_log_at_trx_commit | 1 (金融) / 2 (高效能) | 1=每提交刷盤,2=刷到 OS 緩存 |
| max_connections | 200-500 | 配合應用連線池,避免線程抖動 |
| query_cache_size | 0 或 32M | 高併發寫入場景建議關閉 (0) |
| binlog_format | ROW | 減少鎖衝突,支援混合複制 |
[mysqld]
# 字符集統一
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
# 時區統一 (推薦 UTC)
default-time-zone = '+00:00'
# 禁用 DNS 反向解析
skip-name-resolve
# SQL 模式嚴格化
sql_mode = "STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
# 連線錯誤閾值 (配合防火牆)
max_connect_errors = 100000
# 二進制日誌過期
expire_logs_days = 7
# 關鍵:InnoDB 獨立表空間
innodb_file_per_table = 1