1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
[mysqld]
########基础设置-基础########5.7.17
server-id = 1
port = 3306
user = mysql

########基础设置-目录########
log_error = /var/log/mysqld.log
tmpdir = /tmp

pid-file = /var/lib/mysql/mysql.pid
socket = /var/lib/mysql/mysql.sock
datadir = /var/lib/mysql
#basedir = /usr/local/mysql


########基础设置-其他#####
#设置默认字符集为utf8,也可以utf8mb4(超集,兼容utf8)
character_set_server=utf8mb4
#数据库实务隔离级别,有四个值可用
transaction_isolation = READ-COMMITTED
#将所有的死锁记录到error_log中
innodb_print_all_deadlocks = 1
#设置系统日志使用的时间[默认utc]
log_timestamps=SYSTEM
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
#开启事件支持
event_scheduler = 1
#表名大小写不敏感设置
lower_case_table_names = 1

########基础设置-全文索引分词设置#####
innodb_ft_min_token_size=1
ngram_token_size=1

########基础设置-连接控制#####
# 禁止DNS解析以加快连接速度,如果开启该选项只能使用IP地址方式连接
skip-name-resolve
# MySQL的最大连接数,根据服务器配置慢慢调整
max_connections = 800
# 每个主机的最大异常中断连接数,超过会被禁。解禁执行:FLUSH HOST。
max_connect_errors = 1000
#打开的文件描述符限制,未配置时,值等同于上面那个参数的值
open_files_limit = 102400
#mysql在关闭一个交互的连接之前所要等待的秒数
interactive_timeout = 1200
#mysql在关闭一个非交互的连接之前所要等待的秒数
wait_timeout = 600

########基础设置-缓存缓冲#####
# 打开的表缓冲区大小,mysql打开表时会先读此缓存,如果里面没有才去磁盘读取
table_open_cache = 128
# 临时表的大小,可达到提高联接查询速度
tmp_table_size = 128M
# 内存表的大小,和上面临时表有关,所以设置一样大
max_heap_table_size = 128M
# 联合查询操作所能使用的缓冲区大小,分配内存每连接独享
join_buffer_size = 2M
#MySQL读入缓冲区的大小
read_buffer_size = 16M
#MySQL的随机读缓冲区大小
read_rnd_buffer_size = 8M
#MySQL的顺序读缓冲区大小,分配内存每连接独享
sort_buffer_size = 8M
#服务器发送和接受的最大包长度
max_allowed_packet = 32M

########innodb引擎参数设置########
#数据缓冲区buffer pool大小,sql独占服务器建议总内存的60-80%
innodb_buffer_pool_size = 10G
#增大日志,较少刷新频次(5.6以后建议256-2G,不需要大于buffer pool)
innodb_log_file_size = 2G
#事物刷新到磁盘的方式,1是每次,最大数据安全性
innodb_flush_log_at_trx_commit = 1
#控制着innodb数据文件打开、刷写模式,防止双缓存,若非RAID,需注释
innodb_flush_method = O_DIRECT
#去掉表级自增ID锁,需binglog是行模式,可提高插入效率
innodb_autoinc_lock_mode = 2

#事务等待获取资源等待的最长时间,默认50s
innodb_lock_wait_timeout = 20
#开启InnoDB严格检查模式,建议开启
innodb_strict_mode = 1

#热数据选项:关机时自动将热数据写入磁盘,启动时自动加载
innodb_buffer_pool_dump_at_shutdown = 1
innodb_buffer_pool_load_at_startup = 1

#刷脏和IO写入相关选项,根据服务器IOPS能力适当调整(写入很频繁时)
innodb_lru_scan_depth = 2000
innodb_io_capacity = 4000
innodb_io_capacity_max = 8000
#刷新脏页时一起刷新临近页,机械硬盘建议开启,固态硬盘建议关闭
innodb_flush_neighbors = 1

########日志相关-慢查询########
#慢查询日志位置
slow_query_log_file = /var/log/mysql/mysql-slow.log
#开启慢查询日志
slow_query_log = 1
#超出设定值的SQL即被记录到慢查询日志(秒)
long_query_time = 3
#检索的行数必须达到此值才可被记为慢查询
min_examined_row_limit = 100
#记录下没有使用索引的查询
##log_queries_not_using_indexes = 1
#记录慢sql的频次、每分钟记录的条数(需上一条启用后)
##log_throttle_queries_not_using_indexes = 10