mysql5.7配置文件优化

MySQL5.7的配置文件优化 , 引用了别人的模板 , 根据自己的情况修改了一些参数 , 加上注释 , 留着备用 , 感兴趣的朋友可以借鉴一下 , 如果无法启动可以查看一下error_log,修改相应的参数 。
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
#log-error = /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
#支持符号链接 , 就是可以通过软连接的方式 , 管理其他目录的数据库 , 最好不要开启 , 当一个磁盘或分区空间不够时 , 可以开启该参数将数据存储到其他的磁盘或分区 。
#https://blog.csdn.net/moxiaomomo/article/details/17092871
symbolic-links=0
########basic settings########
server-id = 11
port = 3306
user = mysql
#设置autocommit=0 , 则用户将一直处于某个事务中 , 直到执行一条commit提交或rollback语句才会结束当前事务重新开始一个新的事务 。set autocommit=0的好处是在频繁开启事务的场景下 , 减少一次begin的交互 。
autocommit = 1
#utf8mb4编码是utf8编码的超集 , 兼容utf8 , 并且能存储4字节的表情字符 。
#采用utf8mb4编码的好处是:存储与获取数据的时候 , 不用再考虑表情字符的编码与解码问题 。
character_set_server=utf8mb4
skip_name_resolve = 1
max_connections = 800
# 对于同一主机 , 如果有超出该参数值个数的中断错误连接 , 则该主机将被禁止连接 。如需对该主机进行解禁 , 执行:FLUSH HOST 。
max_connect_errors = 1000
#数据库隔离级别
transaction_isolation = READ-COMMITTED
#MySQL在完成某些join(连接)需求的时候 , 为了减少参与join的“被驱动表”的读取次数以提高性能 , 需要使用到join buffer来协助完成join操作当join buffer 太小 , MySQL不会将该buffer存入磁盘文件而是先将join buffer中的结果与需求join的表进行操作 , 然后清空join buffer中的数据 , 继续将剩余的结果集写入次buffer中
join_buffer_size = 128M
tmp_table_size = 64M
tmpdir = /tmp
#该值设置过小将导致单个记录超过限制后写入数据库失败 , 且后续记录写入也将失败
max_allowed_packet = 64M
#mysql在关闭一个交互的连接之前所要等待的秒数
interactive_timeout = 1200
#mysql在关闭一个非交互的连接之前所要等待的秒数
wait_timeout = 600
#MySQL读入缓冲区的大小
read_buffer_size = 16M
#MySQL的随机读缓冲区大小
read_rnd_buffer_size = 8M
#MySQL的顺序读缓冲区大小
sort_buffer_size = 8M
########log settings########
log_error = /var/log/Docker_log/mysql/error.log
#开启慢查询日志
slow_query_log = 1
#超出次设定值的SQL即被记录到慢查询日志
long_query_time = 6
slow_query_log_file = /var/log/docker_log/mysql/slow.log
#表示记录下没有使用索引的查询
log_queries_not_using_indexes = 1
#记录管理语句
log_slow_admin_statements = 1
#开启复制从库复制的慢查询的日志
log_slow_slave_statements = 1
#设置每分钟增长的没有使用索引查询的日志数量
log_throttle_queries_not_using_indexes = 10
expire_logs_days = 90
min_examined_row_limit = 100
########replication settings########
#将master.info和relay.info保存在表中
master_info_repository = TABLE
relay_log_info_repository = TABLE
log_bin = bin.log
#当每进行n次事务提交之后 , MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘 。设置为零是让系统自行决定
sync_binlog = 5
#开启全局事务ID , GTID能够保证让一个从服务器到其他的从服务器那里实现数据复制而且能够实现数据整合的
gtid_mode = on
#开启gtid , 必须主从全开
enforce_gtid_consistency = 1
#从服务器的更新是否写入二进制日志
log_slave_updates = 1
#三种模式 STATEMENT(有可能主从数据不一致 , 日质量小)、ROW(产生大量二进制日志)、MIXED
binlog_format = mixed
#relay-log日志记录的是从服务器I/O线程将主服务器的二进制日志读取过来记录到从服务器本地文件 , 然后SQL线程会读取relay-log日志的内容并应用到从服务器


推荐阅读