# MySQL 配置文件my.cnf
[client]
# 指定mysql开放端口
port = 3306
# 套接字文件
socket = /usr/local/mysql/data/mysql.sock
[mysqld]
# Skip #
skip_name_resolve = 1
skip_external_locking = 1
skip_symbolic_links = 1
# GENERAL #
# 启动用户
user = mysql
default_storage_engine = InnoDB
# 编码方式
character-set-server = utf8
# pid文件所在目录
pid_file = /usr/local/mysql/data/mysqld.pid
# 指定Mysql安装的绝对路径
basedir = /usr/local/mysql
port = 3306
bind-address = 0.0.0.0
explicit_defaults_for_timestamp = off
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
# DATA STORAGE #
# MyISAM #
# 指定索引缓冲区的大小
key_buffer_size = 32M
# undo log #
innodb_undo_directory = /usr/local/mysql/undo
innodb_undo_tablespaces = 8
# SAFETY #
# 限制server接受的数据包大小
max_allowed_packet = 100M
# 最大连接错误,超出该值以后,服务器将阻止该客户端后续的所有访问
max_connect_errors = 1000000
sysdate_is_now = 1
secure-file-priv = '/tmp'
default_authentication_plugin='mysql_native_password'
# Replice #
server-id = 1001
relay_log = mysqld-relay-bin
gtid_mode = on
enforce-gtid-consistency
log-slave-updates = on
master_info_repository = TABLE
relay_log_info_repository = TABLE
# DATA STORAGE #
# 数据文件存放的目录
datadir = /usr/local/mysql/data/
# 存放临时文件的目录
tmpdir = /tmp
# BINARY LOGGING #
log_bin = /usr/local/mysql/sql_log/mysql-bin
# 如果二进制日志写入的内容超出给定值,日志就会发生滚动
max_binlog_size = 1000M
# 基于行的复制
binlog_format = row
binlog_expire_logs_seconds=86400
# CACHES AND LIMITS #
# 临时内部堆积表的大小
tmp_table_size = 32M
# 最大内存表大小
max_heap_table_size = 32M
# mysql的最大连接数
max_connections = 4000
# 用于缓存空闲的线程
thread_cache_size = 2048
# 控制文件打开的个数
open_files_limit = 65535
table_definition_cache = 4096
# 表描述符缓存大小,可减少文件打开/关闭次数
table_open_cache = 4096
# 排序语句 'group by' 与 'order by' 占用的大小
sort_buffer_size = 2M
# 读缓冲区的大小
read_buffer_size = 2M
# 设置服务器随机读取缓冲区的大小
read_rnd_buffer_size = 2M
# 使用join语句的缓存区
join_buffer_size = 1M
# 用来存放每一个线程自身的标识信息
thread_stack = 512k
max_length_for_sort_data = 16k
# INNODB #
# 使用O_DIRECT模式打开数据文件,用fsync()函数去更新日志和数据文件。
innodb_flush_method = O_DIRECT
# 日志缓存,大的日志缓冲可以减少磁盘I/O
innodb_log_buffer_size = 16M
# 每次commit 日志缓存中的数据刷到磁盘中
innodb_flush_log_at_trx_commit = 2
#作用:使每个Innodb的表,有自已独立的表空间。如删除文件后可以回收那部分空间。
#分配原则:只有使用不使用。但DB还需要有一个公共的表空间。
innodb_file_per_table = 1
# 用来高速缓冲数据和索引内存缓冲大小
innodb_buffer_pool_size = 256M
innodb_stats_on_metadata = off
# 限制Innodb能打开的表的数量
innodb_open_files = 8192
# 读io线程
innodb_read_io_threads = 16
# 写io线程
innodb_write_io_threads = 16
# 这个参数据控制Innodb checkpoint时的IO能力
innodb_io_capacity = 20000
innodb_thread_concurrency = 0
# 在回滚(rooled back)之前,InnoDB 事务将等待超时的时间(单位 秒)
innodb_lock_wait_timeout = 60
innodb_old_blocks_time = 1000
innodb_use_native_aio = 1
# 开始碎片回收线程
innodb_purge_threads = 1
# 当随后页面被读到内存中时,会将这些变化的记录merge到页中。
innodb_change_buffering = all
# 可以减少刷新缓冲池的次数,从而减少磁盘 I/O。
innodb_log_file_size = 64M
# 指定有2个日志组
innodb_log_files_in_group = 2
# 单独指定数据文件的路径与大小
innodb_data_file_path = ibdata1:256M:autoextend
innodb_rollback_on_timeout = on
# LOGGING #
# 错误日志的存放路劲
log_error = /usr/local/mysql/sql_log/mysql-error.log
slow_query_log_file = /usr/local/mysql/sql_log/slowlog.log
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135