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

MySQL 關鍵配置與管理參數深度解析

     編輯:MySQL 資料庫相關知識

1. InnoDB 日誌刷盤策略 innodb_flush_log_at_trx_commit

值行為效能/安全性
0每秒寫入日誌檔並 fsync 一次高效能,可能丟失 1 秒資料
1每次 COMMIT 寫入並 fsync最安全,IOPS 壓力大,效能較低
2每次 COMMIT 寫入,每秒 fsync折中,僅 OS crash 或斷電可能丟 1 秒

2. Binlog 同步 sync_binlog

  • 1:每次寫入同步,最安全。
  • 0:交由 OS 快取,效能最好但 crash 可能丟資料。
  • 建議主庫設 1,從庫可設 0 提升複寫效能。

3. InnoDB 同步方法 innodb_flush_method (Linux/Unix)

  • fdatasync (預設):呼叫 fsync(),速度較快。
  • O_DSYNC:呼叫 O_SYNC(),較慢。
  • 建議維持預設。

4. 慢查詢與無索引查詢追蹤

[mysqld]
long_query_time = 2          # 超過 2 秒記錄
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
log_queries_not_using_indexes = 1

5. 預存程序建立權限 log_bin_trust_function_creators

授予 CREATE ROUTINE 仍報錯時,設定:

SET GLOBAL log_bin_trust_function_creators = 1;
-- 或 my.cnf 永久生效
log_bin_trust_function_creators = 1

6. 關閉時緩衝區寫回 innodb_fast_shutdown

  • 1 (預設):不刷回 insert buffer,啟動時再處理,關機快、安全。
  • 0:關機前完整刷回,耗時長,若 OS 強制殺進程可能損壞資料。

7. 主庫複寫建議設定

innodb_flush_log_at_trx_commit = 1
sync_binlog = 1

確保 Binlog 與 InnoDB Redo Log 一致性,避免主從資料不一致。

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