MySQL8配置文件通用模板🧲

MySQL8配置文件通用模板🧲


 

本文整理一份MySQL8通用配置文件my.cnf,只是相对通用基础的配置,还需自己具体分析修改。

MySQL8部署参考👉:https://www.cnblogs.com/haoee/p/19386401              (麒麟arm版)

                                   https://www.cnblogs.com/haoee/p/16944366.html      (X86版)

 

配置文件如下:(基于48C192G服务器)


主库:

[root@localhost ~]# vim /etc/my.cnf
[client]
default-character-set=utf8mb4
socket=/var/lib/mysql/mysql.sock


[mysqld]
# ===== 基础配置 =====
user=mysql
basedir=/usr/local/mysql-8.0.44
datadir=/usr/local/mysql-8.0.44/data
port=3307
socket=/usr/local/mysql-8.0.44/run/mysql.sock
pid-file=/usr/local/mysql-8.0.44/run/mysqld.pid


# ===== 表名大小写 =====
lower_case_table_names=1                # Linux 环境统一表名大小写,避免跨环境问题

# ===== 主从配置 =====
server-id=10
log-bin=mysql-bin
binlog_format=ROW                       # 行级复制,避免函数/触发器不一致
binlog_row_image=FULL                   # 记录完整行,安全优先
sync_binlog=1                           # 每次事务同步 binlog,主库必开
max_binlog_size=1G
binlog_expire_logs_seconds=2592000      # 30 天自动清理,避免 binlog 爆盘
relay-log=/usr/local/mysql-8.0.44/data/relay-bin
log_replica_updates=ON                  # 8.0 正确参数,级联复制必须

# ===== GTID 核心 =====
gtid_mode=ON
enforce_gtid_consistency=ON             # 禁止不安全语句,保证 GTID 可用

# ===== 日志配置 =====
log-error=/usr/local/mysql-8.0.44/logs/error.log
slow-query-log=1
slow-query-log-file=/usr/local/mysql-8.0.44/logs/mysql-slow.log
long_query_time=2                       # 超过 2s 记录,便于发现慢 SQL
log_error_verbosity=2                   # 记录 error + warning,不刷屏

# ===== InnoDB 核心配置 =====
innodb_buffer_pool_size=120G            # ≈ 60% 内存,预留系统/备份空间,稳态值
innodb_buffer_pool_instances=24         # BP 实例不是越多越好,过多反而增加管理开销
innodb_log_file_size=2G                 # 单个 redo 文件大小,控制 crash recovery 时间
innodb_log_files_in_group=2             # redo 总量=4G,稳定优先
innodb_log_buffer_size=64M              # 大事务写入更平滑
innodb_file_per_table=ON                # 表独立空间,方便回收和迁移
innodb_flush_log_at_trx_commit=1        # 每次提交刷盘,保证事务持久性
innodb_flush_method=O_DIRECT            # 避免 OS cache 与 InnoDB 双缓存
innodb_page_size=16K                    # 官方默认页大小,最稳定

# ===== InnoDB 并发 & IO =====
innodb_io_capacity=3000                 # InnoDB 认为的“正常”磁盘 IOPS,偏保守
innodb_io_capacity_max=6000             # 后台刷脏页上限,避免 IO 抢占前台
innodb_read_io_threads=16               # 读 IO 线程,48C 下合适
innodb_write_io_threads=16              # 写 IO 线程,避免过多导致抖动
innodb_thread_concurrency=0             # 由 InnoDB 自动调度,8.0 推荐

# ===== Undo(8.0 稳态关键)=====
innodb_undo_tablespaces=4               # undo 独立表空间,防止系统表空间膨胀
innodb_undo_log_truncate=ON             # 自动回收 undo,长期运行必开

# ===== 连接与线程(稳定性关键)=====
max_connections=1000                    # 防止连接数过高导致内存雪崩
max_connect_errors=10000
thread_cache_size=256                   # 复用线程,降低频繁创建/销毁开销
table_open_cache=8192
open_files_limit=65535
wait_timeout=1800                       # 空闲连接自动释放
interactive_timeout=1800

# ===== 内存 & 临时表(防 OOM)=====
tmp_table_size=128M                     # 单连接临时表上限,避免内存被吃光
max_heap_table_size=128M                # 与 tmp_table_size 配套
internal_tmp_mem_storage_engine=TempTable # 8.0 默认引擎,更稳定
max_allowed_packet=1G                   # 支持大事务/大字段,避免中断

# ===== 字符集配置 =====
character-set-server=utf8mb4
collation-server=utf8mb4_0900_ai_ci     # MySQL 8.0 官方默认排序规则,稳定可靠

# ===== 认证策略 =====
authentication_policy=mysql_native_password  # 兼容旧客户端,减少认证问题

# ===== 事务 =====
#transaction_isolation=REPEATABLE-READ  # 默认隔离级别,保持一致性

从库:

[client]
default-character-set=utf8mb4
socket=/usr/local/mysql-8.0.44/run/mysql.sock


[mysqld]
# ========== 基础配置 =====
user=mysql
basedir=/usr/local/mysql-8.0.44
datadir=/usr/local/mysql-8.0.44/data
port=3307
socket=/usr/local/mysql-8.0.44/run/mysql.sock
pid-file=/usr/local/mysql-8.0.44/run/mysqld.pid

# ======== 表名大小写 =====
lower_case_table_names=1                # 主从必须一致,否则直接炸

# ======== 主从复制 =====
server-id=11                            # ★ 每个实例唯一,不能和主库重复
read_only=ON                            # 防止误写(超级用户除外)
super_read_only=ON                      # 连 SUPER 用户也禁止写,更稳

# ======== 二进制日志(GTID 从库必须)=====
log-bin=mysql-bin                       # ★ GTID 模式下,从库也必须开 binlog
binlog_format=ROW
binlog_row_image=FULL
sync_binlog=1                            # 稳态优先,避免 crash 后位点异常
max_binlog_size=1G 
binlog_expire_logs_seconds=2592000
relay-log=/usr/local/mysql-8.0.44/data/relay-bin
relay-log-recovery=ON                    # 从库 crash 自动恢复 relay log(非常重要)
log_replica_updates=ON                   # ★ GTID 链路必开
  
# ======== GTID 核心 =====
gtid_mode=ON
enforce_gtid_consistency=ON
skip_replica_start=ON                    # ★ 启动不自动拉主库,避免误连

# ======= 日志配置 =====
log-error=/usr/local/mysql-8.0.44/logs/error.log
slow-query-log=1
slow-query-log-file=/usr/local/mysql-8.0.44/logs/mysql-slow.log
long_query_time=2
log_error_verbosity=2

# ===== InnoDB 核心配置 =====
innodb_buffer_pool_size=120G              # 从库可与主库一致,承担读
innodb_buffer_pool_instances=24
innodb_log_file_size=2G
innodb_log_files_in_group=2
innodb_log_buffer_size=64M
innodb_file_per_table=ON
innodb_flush_log_at_trx_commit=1           # 从库也保持强一致,避免复制错乱
innodb_flush_method=O_DIRECT
innodb_page_size=16K

# ===== InnoDB 并发 & IO =====
innodb_io_capacity=3000
innodb_io_capacity_max=6000
innodb_read_io_threads=16
innodb_write_io_threads=16
innodb_thread_concurrency=0

# ===== Undo(8.0 稳态关键)=====
innodb_undo_tablespaces=4
innodb_undo_log_truncate=ON

# ===== 连接与线程 =====
max_connections=1000
max_connect_errors=10000
thread_cache_size=256
table_open_cache=8192
open_files_limit=65535
wait_timeout=1800
interactive_timeout=1800

# ===== 内存 & 临时表 =====
tmp_table_size=128M
max_heap_table_size=128M
internal_tmp_mem_storage_engine=TempTable
max_allowed_packet=1G

# ===== 字符集 =====
character-set-server=utf8mb4
collation-server=utf8mb4_0900_ai_ci

# ===== 认证策略 =====
authentication_policy=mysql_native_password

# ===== 事务 =====
#transaction_isolation=REPEATABLE-READ

 

posted @ 2025-12-25 14:46  Noleaf  阅读(7)  评论(0)    收藏  举报