# 命令列
mysqld --verbose --help | grep -A1 '^table_cache'
mysqladmin -u root -p variables extended-status
# MySQL 內部
SHOW VARIABLES;
SHOW STATUS;
SHOW VARIABLES LIKE 'table_cache';
SHOW STATUS LIKE 'Open%tables';
表快取大小。監控 Open_tables 與 Opened_tables:
Open_tables = table_cache 且 Opened_tables 持續增長 → 需調大。MyISAM 索引快取。監控 Key_read_requests / Key_reads:
Key_reads / Key_read_requests 應 < 1/100,理想 < 1/1000。Qcache_hits、Qcache_lowmem_prunes、Qcache_free_blocks。query_cache_min_res_unit。[mysqld]
log-bin = /var/log/mysql/mysql-bin
binlog-format = ROW
expire-logs-days = 7
max-binlog-size = 100M
# 指定庫
binlog-do-db = db1
binlog-ignore-db = test
查看狀態:SHOW MASTER STATUS;
[mysqld]
slow-query-log = 1
slow-query-log-file = /var/log/mysql/slow.log
long-query-time = 1
log-queries-not-using-indexes = 1
[mysqld]
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
innodb_file_per_table = 1
innodb_data_file_path = ibdata1:1G:autoextend
擴充數據檔案:停機、修改 innodb_data_file_path 加入新檔案、啟動。
系統不穩定時設定非零值(秒),定期刷新表快取降低資料遺失風險,犧牲效能。
| 指標 | 健康閾值 | 對應參數 |
|---|---|---|
| Opened_tables / Uptime | < 10/秒 | table_open_cache |
| Key_reads / Key_read_requests | < 0.01 | key_buffer_size |
| Handler_read_rnd / Com_select | < 0.1 | 索引優化 |
| Innodb_buffer_pool_reads / Innodb_buffer_pool_read_requests | < 0.01 | innodb_buffer_pool_size |