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

MariaDB/MySQL my.cnf 配置文件中文註釋版 (巨型模板 1-2GB 記憶體專用)

     編輯:MySQL 資料庫相關知識

本文提供基於 MariaDB 官方 my-huge.cnf 模板的完整中文註釋版,適用於 1-2GB 記憶體的專用資料庫伺服器。包含客戶端、伺服器、複制、InnoDB、工具等完整配置區段。

配置文件結構說明

  • MariaDB 啟動時按順序讀取多個配置文件,執行 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_size512M - 2G大寫入量系統需增大,減少 checkpoint 頻率
innodb_flush_log_at_trx_commit1 (金融) / 2 (高效能)1=每提交刷盤,2=刷到 OS 緩存
max_connections200-500配合應用連線池,避免線程抖動
query_cache_size0 或 32M高併發寫入場景建議關閉 (0)
binlog_formatROW減少鎖衝突,支援混合複制

生產環境必加安全配置

[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
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved