分类: LINUX
2026-03-21 05:07:19
以下是一个适用于中等规模应用的经典 MySQL 配置文件 my.cnf 示例,基于 MySQL 8.0 版本优化,兼顾性能、安全性和可靠性:
ini1[mysqld] 2# 基础配置 3basedir = /usr/local/mysql 4datadir = /var/lib/mysql 5socket = /var/lib/mysql/mysql.sock 6pid-file = /var/run/mysqld/mysqld.pid 7port = 3306 8 9# 字符集与排序规则(支持 Emoji 和中文) 10character-set-server = utf8mb4 11collation-server = utf8mb4_unicode_ci 12init_connect = 'SET NAMES utf8mb4' 13 14# 内存优化(假设服务器物理内存为 16GB) 15innodb_buffer_pool_size = 8G # 物理内存的 50%-75% 16innodb_log_file_size = 512M # 重做日志文件大小 17innodb_flush_log_at_trx_commit = 2 # 平衡性能与数据安全 18innodb_flush_method = O_DIRECT # 避免双缓冲 19innodb_buffer_pool_instances = 8 # 减少锁竞争 20 21# 连接管理 22max_connections = 500 # {BANNED}最佳大并发连接数 23thread_cache_size = 50 # 线程缓存数 24wait_timeout = 300 # 非交互连接超时时间(秒) 25interactive_timeout = 300 # 交互连接超时时间(秒) 26 27# 临时表配置 28tmp_table_size = 64M 29max_heap_table_size = 64M 30 31# 日志配置 32log_error = /var/log/mysql/error.log # 错误日志路径 33slow_query_log = 1 # 开启慢查询日志 34slow_query_log_file = /var/log/mysql/mysql-slow.log # 慢查询日志路径 35long_query_time = 2 # 慢查询阈值(秒) 36log_queries_not_using_indexes = 1 # 记录未使用索引的查询 37 38# 安全配置 39skip_name_resolve = 1 # 禁用 DNS 解析,加速连接 40secure_file_priv = /var/lib/mysql-files # 限制导入导出路径 41sql_mode = STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION # 严格模式,防止隐式转换 42 43# 其他优化 44innodb_file_per_table = 1 # 每张表独立表空间 45innodb_stats_on_metadata = 0 # 关闭元数据统计,提升性能 46skip_external_locking = 1 # 禁用外部锁定 47 48[client] 49port = 3306 50socket = /var/lib/mysql/mysql.sock 51default-character-set = utf8mb4 52 53[mysql] 54no-auto-rehash 55default-character-set = utf8mb4 56prompt = "\\u@\\h:\\d \\R:\\m:\\s> " # 自定义提示符 57