my.cnf 配置优化

collation-server=utf8mb4_unicode_ci
character-set-server=utf8mb4 # 字符集
datadir=/var/lib/mysql # MySQL安装位置
socket=/var/lib/mysql/mysql.sock # MySQL通讯协议文件位置,本地连接使用
# 是否支持符号链接,即数据库或表可以存储在my.cnf中指定datadir之外的分区或目录,为0不开启。
# 禁用symbolic-links选项、服务配置,禁用符号链接以防止各种安全风险
symbolic-links=0
pid-file=/var/run/mysqld/mysqld.pid # MySQL进程位置
# 网络设置
max_connections=200 # 最大连接数,根据应用需求调整
max_connect_errors=100000
table_open_cache=2000 # 打开的表缓存数量
table_definition_cache=1500 # 表定义缓存数量 9How
thread_cache_size=16 # 线程缓存大小
# 事务隔离级别
# 由低到高分别为
# read-uncommitted(读未提交)
# read-committed(读提交)
# repeatable read(重复读)
# Serializable(序列化)
transaction_isolation=READ-COMMITTED
lower_case_table_names=1 # 大小写敏感关闭
default_time_zone=+8:00 # 时区
open_files_limit=65535 # 最大文件描述符数量
log_timestamps=system # 解决日志时区不匹配问题 (5.7 版本独有)
wait_timeout=900 # 连接时长控制
interactive_timeout=900 # 连接时长控制
# 缓存和缓冲设置
innodb_buffer_pool_size=4G # InnoDB缓冲池大小,建议设置为物理内存的50%-75%
innodb_buffer_pool_instances=4 # 缓冲池实例数量,建议设置为缓冲池大小的1/1G,最多8个
innodb_stats_on_metadata=OFF # 关闭在元数据请求时更新统计信息,减少I/O
innodb_flush_method=O_DIRECT # 使用直接I/O,减少文件系统缓存
innodb_io_capacity=2000 # InnoDB后台任务(如刷新脏页和合并插入缓冲区)每秒可以进行的I/O操作数量
innodb_log_files_in_group=4 # InnoDB重做日志组中日志文件的数量
# ↓↓↓↓ 该配置只能在初始化实例前配置,如果启动后报错需要改成0
innodb_undo_tablespaces=4 # InnoDB使用的撤销表空间文件的数量,存储撤销日志,支持事务回滚
innodb_undo_log_truncate=1 # 启用撤销日志的截断
innodb_max_undo_log_size=1G # 单个撤销表空间文件的最大大小
innodb_flush_neighbors=0 # 控制InnoDB是否应该尝试将相邻的脏页一起刷新到磁盘,关闭
innodb_print_all_deadlocks=1 # 打印死锁信息到错误日志
innodb_online_alter_log_max_size=128M # 设置在线DDL操作生成的重做日志的最大大小
innodb_lock_wait_timeout=10 # 设置事务等待行锁的最长时间
innodb_doublewrite=ON # 启用InnoDB的双重写入缓冲区功能
innodb_file_format=Barracuda # 设置InnoDB表的文件格式。Barracuda格式支持压缩和动态行格式。
innodb_log_file_size=512M # InnoDB日志文件大小
innodb_log_buffer_size=16M # InnoDB日志缓冲区大小
innodb_flush_log_at_trx_commit=1 # 每事务提交时刷新日志,设为1保证数据完整性
innodb_file_per_table=1 # 每个表一个独立表空间文件
innodb_open_files=300 # InnoDB打开的文件数量
#bin log
expire_logs_days=30 # 二进制日志(binlog)的自动删除天数
max_binlog_cache_size=1024M # 设置会话级别的二进制日志缓存的最大大小
sync_binlog=1 # 每次提交事务后都同步到日志
server_id=1001 # 服务器的唯一标识符用于区分主从服务器
gtid-mode=on # 启用全局事务标识符(GTID)模式
enforce-gtid-consistency=true # 在GTID模式下,强制要求事务的一致性
master-info-repository=TABLE # 主服务器信息的存储位置
relay-log-info-repository=TABLE # 中继日志信息的存储位置
sync-master-info=1000 # 将主服务器信息同步到磁盘的频率
# 临时表和相关设置
tmp_table_size=64M
max_heap_table_size=64M
# 日志和错误报告
log_error=/var/log/mysql/mysqld.log
slow_query_log=1 # 开启慢查询
slow_query_log_file=/var/log/mysql/mysql-slow.log
long_query_time=2 # 记录执行时间超过2秒的查询
log_queries_not_using_indexes=1 # 记录未使用索引的查询

__EOF__

本文作者Reisen7
本文链接https://www.cnblogs.com/reisen7/p/18615474.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   Reisen7  阅读(55)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示