1
- # Mysql 单机版配置
2
1
3
-
4
- ``` nginx
5
2
# 适用于 Mysql 5.6
6
3
# 该配置适合 1G 内存左右的机子,储存类型为 InnoDB
7
4
# 官网配置说明:http://dev.mysql.com/doc/refman/5.6/en/mysqld-option-tables.html
8
5
# 官网状态值说明:http://dev.mysql.com/doc/refman/5.6/en/server-status-variables.html
6
+ # 官网环境变量说明:http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html
9
7
# 在线生成配置工具:http://tools.percona.com(只是起到一个参考作用,生成的配置文件里面的参数名有的是用符号:-,而官网是用:_,所以这个也要注意改掉。)
10
8
# 资料参考:https://blog.linuxeye.com/379.html
11
9
# 注释内容为注释行下面的配置的解释
10
+ # 这是一个综合配置,不是单独为主库或是从库考虑
11
+ # 如果你需要主、从配置可以看:
12
+ # 主的配置可以看:https://github.com/judasn/Linux-Tutorial/blob/master/MySQL-Settings/MySQL-5.6/1G-Memory-Machine/my-for-master.cnf
13
+ # 从的配置可以看:https://github.com/judasn/Linux-Tutorial/blob/master/MySQL-Settings/MySQL-5.6/1G-Memory-Machine/my-for-salve.cnf
12
14
13
15
# ============================================================================================================
14
16
15
17
16
- [client]
17
- port = 3306
18
- socket = /usr/program/mysql/data/mysql.sock
19
- default-character-set = utf8
20
-
21
-
18
+ # 客户端设置
22
19
[mysql]
23
20
port = 3306
24
21
socket = /usr/program/mysql/data/mysql.sock
@@ -27,45 +24,49 @@ default-character-set = utf8
27
24
# ============================================================================================================
28
25
29
26
27
+ # 服务端设置
30
28
[mysqld]
31
29
user = mysql
32
30
port = 3306
33
31
default-storage-engine = InnoDB
34
32
socket = /usr/program/mysql/data/mysql.sock
33
+ pid-file = /usr/program/mysql/data/mysql.pid
34
+
35
35
collation-server = utf8_unicode_ci
36
- init_connect= 'SET NAMES utf8'
36
+ init_connect = ' SET NAMES utf8'
37
37
character-set-server = utf8
38
38
basedir = /usr/program/mysql
39
39
datadir = /usr/program/mysql/data
40
- pid-file = /usr/program/mysql/data/mysql.pid
41
40
log-error = /usr/program/mysql/data/mysql-error.log
42
41
43
- # 表示是本机的序号为1,一般配合设置主从的时候一定要修改的地方
42
+ # (重点修改) 表示是本机的序号为1,一般配合设置主从的时候一定要修改的地方
44
43
server-id = 1
45
44
46
- # back_log值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中。如果MySQL的连接数据达到max_connections时,新来的请求将会被存在堆栈中,以等待某一连接释放资源,该堆栈的数量即back_log,如果等待连接的数量超过back_log,将不被授予连接资源。
47
- # 另外,这值(back_log)限于您的操作系统对到来的TCP/IP连接的侦听队列的大小。你的操作系统在这个队列大小上有它自己的限制(可以检查你的OS文档找出这个变量的最大值),试图设定back_log高于你的操作系统的限制将是无效的。
45
+
46
+
47
+ # back_log 值指出在 MySQL 暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中。如果 MySQL 的连接数据达到 max_connections 时,新来的请求将会被存在堆栈中,以等待某一连接释放资源,该堆栈的数量即 back_log,如果等待连接的数量超过 back_log,将不被授予连接资源。
48
+ # 另外,这值(back_log)限于您的操作系统对到来的 TCP/IP 连接的侦听队列的大小。你的操作系统在这个队列大小上有它自己的限制(可以检查你的 OS 文档找出这个变量的最大值),试图设定 back_log 高于你的操作系统的限制将是无效的。
48
49
back_log = 512
49
50
50
- # MySQL的最大并发连接数
51
+ # MySQL 的最大并发连接数
51
52
max_connections = 1000
52
- # 网络传输中一次小心传输量的最大值(最大值为1G );增加该变量的值十分安全,这是因为仅当需要时才会分配额外内存。例如,仅当你发出长查询或MySQLd必须返回大的结果行时MySQLd才会分配更多内存 。该变量之所以取较小默认值是一种预防措施,以捕获客户端和服务器之间的错误信息包,并确保不会因偶然使用大的信息包而导致内存溢出。
53
- max_allowed_packet = 4M
53
+ # 网络传输中一次小心传输量的最大值(最大值为 1G );增加该变量的值十分安全,这是因为仅当需要时才会分配额外内存。例如,仅当你发出长查询或 MySQL 必须返回大的结果行时 MySQL 才会分配更多内存 。该变量之所以取较小默认值是一种预防措施,以捕获客户端和服务器之间的错误信息包,并确保不会因偶然使用大的信息包而导致内存溢出。
54
+ max_allowed_packet = 16M
54
55
# 对于同一主机,如果有超出该参数值个数的中断错误连接,则该主机将被禁止连接。如需对该主机进行解禁,执行 Mysql 命令:FLUSH HOST。
55
- max_connect_errors = 6000
56
+ max_connect_errors = 1000000
56
57
# 禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间。但需要注意,如果开启该选项,则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求
57
- skip_name_resolve
58
+ skip-name-resolve
58
59
# MySQL打开的文件描述符限制
59
60
open_files_limit = 65535
60
- # MySQL每打开一个表,都会读入一些数据到table_open_cache缓存中,当MySQL在这个缓存中找不到相应信息时 ,才会去磁盘上读取。默认值 400,最大值:524288。假定系统有200个并发连接,则需将此参数设置为200*N(N为每个连接所需的文件描述符数目);当把table_open_cache设置为很大时 ,如果系统处理不了那么多文件描述符,那么就会出现客户端失效,连接不上
61
- table_open_cache = 400
61
+ # MySQL 每打开一个表,都会读入一些数据到 table_open_cache 缓存中,当 MySQL 在这个缓存中找不到相应信息时 ,才会去磁盘上读取。默认值 400,最大值:524288。假定系统有 200 个并发连接,则需将此参数设置为 200*N (N 为每个连接所需的文件描述符数目);当把 table_open_cache 设置为很大时 ,如果系统处理不了那么多文件描述符,那么就会出现客户端失效,连接不上
62
+ table_open_cache = 2048
62
63
63
- # 一个事务,在没有提交的时候,产生的日志,记录到Cache中 ;等到事务提交需要提交的时候,则把日志持久化到磁盘。默认binlog_cache_size大小32K
64
+ # 一个事务,在没有提交的时候,产生的日志,记录到 Cache 中 ;等到事务提交需要提交的时候,则把日志持久化到磁盘。默认 binlog_cache_size 大小32K
64
65
binlog_cache_size = 1M
65
66
# 定义了用户可以创建的内存表(memory table)的大小。这个值用来计算内存表的最大行数值。这个变量支持动态改变
66
- max_heap_table_size = 8M
67
+ max_heap_table_size = 32M
67
68
# MySQL的heap(堆积)表缓冲大小。如果超过该值,则会将临时表写入磁盘。其范围值:1KB~4GB
68
- tmp_table_size = 128M
69
+ tmp_table_size = 32M
69
70
70
71
# MySQL读入缓冲区大小。该参数对应的分配内存也是每连接独享,所以,如果有100连接,那占用的内存是:100X2M=200M,所以4G内存的服务器,建议该值是6~8M
71
72
read_buffer_size = 2M
@@ -99,8 +100,10 @@ query_cache_limit = 2M
99
100
ft_min_word_len = 4
100
101
101
102
log-bin = /usr/program/mysql/data/mysql-bin
102
- binlog_format = mixed
103
+ binlog-format = mixed
103
104
expire_logs_days = 30
105
+ # 该参数的说明:http://blog.csdn.net/wulantian/article/details/9965905
106
+ sync_binlog = 0
104
107
105
108
# 是否开启慢查询记录,1表示开启,0表示关闭,如果是主从环境下,主库不要开启,从库开启
106
109
slow_query_log = 1
@@ -109,7 +112,8 @@ long_query_time = 3
109
112
slow_query_log_file = /usr/program/mysql/data/mysql-slow.log
110
113
111
114
performance_schema = 0
112
- explicit_defaults_for_timestamp
115
+ # 改参数的说明:http://www.cnblogs.com/digdeep/p/4727715.html
116
+ explicit_defaults_for_timestamp = true
113
117
114
118
# 数据库库名/表名是否区分大小写,0:区分大小写,1:不区分大小写
115
119
lower_case_table_names = 1
@@ -119,20 +123,24 @@ skip_external_locking
119
123
120
124
121
125
# 在网络上不允许TCP/IP连接到MySQL。所有到MySQL的连接必须经由Unix socket进行。如果要允许TCP/IP连接,则注释当前行即可
122
- skip-networking
126
+ # skip-networking
127
+
123
128
129
+ table_definition_cache = 1024
124
130
125
131
# 该设置值取值为:服务器机子的逻辑CPU数量X2,比如你的服务器机子是 Linux 系统你可以执行:grep 'processor' /proc/cpuinfo | sort -u | wc -l,可以查看到逻辑CPU数量值,比如我取到的值是24,那我这里应该设置为:24X2=48
126
132
thread_concurrency = 2
127
133
134
+ # 强制为 innodb类型
135
+ innodb = FORCE
128
136
innodb_file_per_table = 1
129
137
# 限制Innodb能打开的表的数据,如果库里的表特别多的情况,请增加这个。这个值默认是300
130
138
innodb_open_files = 500
131
139
# InnoDB使用一个缓冲池来保存索引和原始数据, 不像MyISAM.
132
140
# 这里你设置越大,你在存取表里面数据时所需要的磁盘I/O越少.
133
141
# 在一个独立使用的数据库服务器上,你可以设置这个变量到服务器物理内存大小的70%左右
134
142
# 不要设置过大,否则,由于物理内存的竞争可能导致操作系统的换页颠簸.
135
- innodb_buffer_pool_size = 64M
143
+ innodb_buffer_pool_size = 592M
136
144
137
145
# innodb使用后台线程处理数据页上的读写 I/O(输入输出)请求,根据你的 CPU 核数来更改,默认是4
138
146
# 注:这两个参数不支持动态改变,需要把该参数加入到my.cnf里,修改完后重启MySQL服务,允许值的范围从 1-64
@@ -142,18 +150,19 @@ innodb_read_io_threads = 4
142
150
# 默认设置为 0,表示不限制并发数,这里推荐设置为0,更好去发挥CPU多核处理能力,提高并发量
143
151
innodb_thread_concurrency = 0
144
152
innodb_purge_threads = 1
145
- innodb_flush_log_at_trx_commit = 2
153
+ innodb_flush_log_at_trx_commit = 1
146
154
innodb_log_buffer_size = 2M
147
- innodb_log_file_size = 32M
155
+ innodb_log_file_size = 64M
148
156
innodb_log_files_in_group = 3
149
157
innodb_max_dirty_pages_pct = 90
150
158
innodb_lock_wait_timeout = 120
151
159
innodb_additional_mem_pool_size = 2M
152
-
160
+ innodb_flush_method = O_DIRECT
153
161
bulk_insert_buffer_size = 8M
154
162
# 用于设置在 REPAIR TABLE 和 CREATE INDEX 创建索引或 ALTER TABLE 的过程中排序索引所分配的缓冲区大小,可设置范围:4MB~4GB,默认8MB,4G内存的服务器可以设置为32M~64M
155
163
myisam_sort_buffer_size = 8M
156
- myisam_max_sort_file_size = 10G
164
+ # 32位系统默认值是2147483648=2G,64位系统,默认值是9223372036854775807,单位是bytes.
165
+ myisam_max_sort_file_size = 2147483648
157
166
myisam_repair_threads = 1
158
167
159
168
# 服务器关闭交互式连接前等待活动的秒数。单位秒
@@ -173,4 +182,3 @@ key_buffer_size = 8M
173
182
sort_buffer_size = 8M
174
183
read_buffer = 4M
175
184
write_buffer = 4M
176
- ```
0 commit comments