Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103923
  • 博文数量: 80
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 600
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-14 09:52
文章分类

全部博文(80)

文章存档

2026年(37)

2025年(6)

2022年(2)

2017年(14)

2016年(16)

我的朋友

分类: LINUX

2026-03-21 05:07:19

以下是一个适用于中等规模应用的经典 MySQL 配置文件 my.cnf 示例,基于 MySQL 8.0 版本优化,兼顾性能、安全性和可靠性:

ini
1[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

配置说明:

  1. 基础配置:
    • basedir 和 datadir 指定 MySQL 的安装目录和数据目录。
    • socket 和 pid-file 指定 Unix 套接字文件和进程 ID 文件的路径。
    • port 指定 MySQL 服务器监听的端口号。
  2. 字符集与排序规则:
    • 使用 utf8mb4 字符集和 utf8mb4_unicode_ci 排序规则,支持 Emoji 和中文,避免乱码和排序异常。
  3. 内存优化:
    • innodb_buffer_pool_size 是 InnoDB 存储引擎的核心参数,用于缓存表数据和索引,建议设置为物理内存的 50%-75%。
    • innodb_log_file_size 和 innodb_flush_log_at_trx_commit 平衡写入性能和数据安全。
    • innodb_buffer_pool_instances 减少锁竞争,提升并发性能。
  4. 连接管理:
    • max_connections 控制{BANNED}最佳大并发连接数,避免过多连接导致内存耗尽。
    • thread_cache_size 缓存线程,减少线程创建和销毁的开销。
    • wait_timeout 和 interactive_timeout 控制空闲连接的超时时间,避免资源浪费。
  5. 临时表配置:
    • tmp_table_size 和 max_heap_table_size 控制内存临时表的大小,避免频繁落盘影响性能。
  6. 日志配置:
    • log_error 指定错误日志的路径,便于排查问题。
    • slow_query_log 和 long_query_time 开启慢查询日志,记录执行时间超过阈值的查询,便于优化。
    • log_queries_not_using_indexes 记录未使用索引的查询,帮助发现潜在的性能问题。
  7. 安全配置:
    • skip_name_resolve 禁用 DNS 解析,加速连接建立。
    • secure_file_priv 限制导入导出文件的路径,增加安全性。
    • sql_mode 设置 SQL 模式,控制 SQL 语句的行为,避免隐式类型转换和静默截断。
  8. 其他优化:
    • innodb_file_per_table 使每张表独立存储为 .ibd 文件,便于管理和回收空间。
    • innodb_stats_on_metadata 关闭元数据统计,减少不必要的 I/O 操作。
    • skip_external_locking 禁用外部锁定,提升性能。
阅读(6) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~