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

MySQL 4GB 記憶體專用 my.cnf 完整中文註解配置範本

     編輯:MySQL 資料庫相關知識

針對 4GB RAM、以 InnoDB 為主、高佇列負載、連接數較少的 MySQL 伺服器,提供生產級 my.cnf 完整配置範本。每項參數附中文詳細註解,涵蓋連接、快取、緩衝區、日誌、InnoDB 專屬設定等核心區塊,可直接部署微調。

一、配置檔標頭資訊

#BEGIN CONFIG INFO
#DESCR: 4GB RAM, 僅使用 InnoDB, ACID, 少量連接, 高佇列負載
#TYPE: SYSTEM
#END CONFIG INFO

二、用戶端預設連接參數

[client]
# password = [your_password]
port = 3306
socket = /tmp/mysql.sock

三、伺服器核心配置

[mysqld]
port = 3306
socket = /tmp/mysql.sock

# 連接佇列長度,高併發連接被拒時調大
back_log = 50

# 僅本地 Unix Socket 連接,增強安全(Windows 需啟用 named-pipe)
# skip-networking

# 最大同時連接數(含 1 個 SUPER 保留連接)
max_connections = 100

# 客戶端錯誤嘗試上限,超過則封鎖直到 FLUSH HOSTS
max_connect_errors = 10

# 表快取數量,影響開啟檔案描述符需求
table_cache = 2048

# 關閉外部檔案鎖(效能負面影響,僅多實例共享檔案時啟用)
# external-locking

# 單次封包/請求最大值(大 BLOB 必須調大)
max_allowed_packet = 16M

# Binlog 交易快取大小(大交易調大避免臨時檔)
binlog_cache_size = 1M

# 獨立記憶體表最大容量(防止意外耗盡記憶體)
max_heap_table_size = 64M

# 排序緩衝區(ORDER BY/GROUP BY),每執行緒分配
sort_buffer_size = 8M

# 全聯結優化緩衝區(無索引 JOIN),每執行緒分配
join_buffer_size = 8M

# 執行緒快取數量(減少建立/銷毀開銷)
thread_cache_size = 8

# 並發提示(僅支援 thread_concurrency() 的系統如 Solaris 有效)
thread_concurrency = 8

# 查詢快取大小(相同查詢直接回傳結果)
query_cache_size = 64M
query_cache_limit = 2M  -- 單查詢結果超過此值不快取

# 全文索引最小詞長(修改後需 REPAIR TABLE 重建索引)
ft_min_word_len = 4

# 鎖定記憶體防止 swap(需系統支援 memlock())
# memlock

# 預設資料表類型
default_table_type = MYISAM

# 執行緒堆疊大小
thread_stack = 192K

# 交易隔離等級
transaction_isolation = REPEATABLE-READ

# 內部臨時表最大值(超過轉磁碟)
tmp_table_size = 64M

# 二進位日誌(主從複寫、時間點恢復必須啟用)
log-bin = mysql-bin

# 鏈式從庫結構時啟用
# log_slave_updates

# 通用查詢日誌(除錯用,生產環境關閉)
# log

# 警告寫入錯誤日誌
# log_warnings

# 慢查詢日誌
log_slow_queries
long_query_time = 2  -- 超過 2 秒記錄,勿設 1 秒避免噪音
log_long_format      -- 記錄未使用索引的查詢

四、InnoDB 專屬核心參數(續)

# InnoDB 緩衝池大小(實體記憶體 50-70%,此處 4GB 建議 2-3GB)
innodb_buffer_pool_size = 2G

# InnoDB 記錄檔大小(單檔大小,總量建議緩衝池 25%)
innodb_log_file_size = 256M
innodb_log_files_in_group = 2

# InnoDB 記錄緩衝區
innodb_log_buffer_size = 8M

# InnoDB 資料檔路徑與自動擴充
innodb_data_file_path = ibdata1:10M:autoextend

# InnoDB 檔案 I/O 執行緒
innodb_file_io_threads = 4

# InnoDB 鎖等待超時秒數
innodb_lock_wait_timeout = 50

# InnoDB 提交時刷盤策略:1=每次提交刷盤(最安全),0=每秒刷盤,2=提交寫入OS緩衝每秒刷盤
innodb_flush_log_at_trx_commit = 1

# InnoDB 讀取/寫入 I/O 執行緒(1.0+ 版本)
innodb_read_io_threads = 4
innodb_write_io_threads = 4

五、部署位置優先序

  1. /etc/my.cnf:全域設定
  2. mysql-data-dir/my.cnf:實例專用設定
  3. ~/.my.cnf:用戶級設定

六、調優建議

  • 依實際負載調整 innodb_buffer_pool_size(專用 DB 伺服器可至 70-80% 實體記憶體)
  • 監控 Innodb_buffer_pool_wait_free、Innodb_log_waits 指標微調
  • 高併發寫入考慮 innodb_flush_log_at_trx_commit = 2 平衡效能與安全
  • 定期 FLUSH LOGS 切割 Binlog,配合 expire_logs_days 自動清理
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved