警告
本文最后更新于 2022-06-28,文中内容可能已过时。
修改配置文件(默认的/etc/my.cnf是mariadb的)
https://blog.51cto.com/moerjinrong/2092791
参数优先级: 命令行参数指定
> 配置文件 my.cnf(指定配置文件>数据目录下的配置文件>etc下的配置文件)
> 默认参数
标签配置分类
标签用某个特定的标签值来表示以下内容针对于某个程序(命令)体现的,一般可分文[client]
、[server]
两大类
-
[client]
: 针对全部客户端
[mysql]
: 标签下内容针对mysql
这个程序(命令)来设置的
[mysqladmin]
: …
[mysqldump]
: …
-
[server]
: 针对全部服务端
[mysqld_safe]
: 标签下内容针对mysqld_safe
这个程序(命令)来设置的( mysqld_safe
是用来管理mysqld
的一个进程,其增加了一些安全特性 )
[mysqld]
: 标签下内容针对mysqld
这个程序(命令)来设置的
配置文件示例(ansible初始化示例)
注意配置文件每行后不能有空格,需直接换行
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
|
; 目录结构
; mysqldb
; └── 3306
; ├── binlog
; ├── data
; ├── logs
; ├── relaylog
; └── tmp
[client]
port={{ MYSQL_PORT|default(3306) }}
default-character-set = utf8
socket = {{ DATA_ROOT }}/mysql.sock
; prompt = '\u@\h [\d] >\_'
[mysqld]
port={{ MYSQL_PORT|default(3306) }}
bind-address = 0.0.0.0
character-set-server = utf8
collation-server = utf8_general_ci
socket = {{ DATA_ROOT }}/mysql.sock
pid-file = {{ DATA_ROOT }}/mysql.pid
; 二进制安装配置
basedir = {{ BASEDIR }}
datadir = {{ DATA_ROOT }}/data
tmpdir = {{ DATA_ROOT }}/tmp
; 存在大量提交时建议关闭提交(默认开启)
autocommit=on
; 第一个ibdata 必定是一个固定大小的,若在启动后修改,则需要设置与实际大小一致,不能多也不能少,第二个则不受限制(默认是下12M)
innodb_data_file_path=ibdata1:512M;ibdata2:512M:autoextend
; 常规日志,记录所有成功的语句(默认关闭,不建议开启)
general_log=off
general_log_file={{ DATA_ROOT }}/logs/server2.log
; 错误日志,记录数据库的一般状态及报错信息,是我们对于数据库常规报错处理的常用日志
log-error={{ DATA_ROOT }}/logs/mysqld.log
; 禁用dns解析(只能使用ip)
skip-name-resolve
; 二进制日志控制 start
; 建议设置全备+1天
; expire_logs_days = 8
; 各个节点不一样
server_id = {{ 65535 |random(1,9) }}
; sync_binlog 为1时, 每次提交都会向磁盘中写入数据(bin-log目录最好和数据目录分开),最安全但是性能损耗最大,不建议开启
sync_binlog=0
master_info_repository=TABLE
log-bin = {{ DATA_ROOT }}/binlog/mysql-bin
binlog_format = row
; 关闭relay_log 自动清理功能
relay_log_purge = 0
relay_log_info_repository=TABLE
relay-log = {{ DATA_ROOT }}/relaylog/mysql-relay-bin
; 主从同步重连时间(默认3600s),从库多长时间未收到主库传来的Binary Logs events后从而判定超时,slaveIO线程重连,越频繁建议设置越小
slave_net_timeout = 5
; 启用GTID,不启用则为普通复制(单节点开启无意义)
gtid-mode=on
; 强制GTID的一致性
enforce-gtid-consistency=true
; slave更新是否记录日志 (多主环境必加)
log-slave-updates=1
; 二进制日志控制 end
; 打开并记录慢日志
slow_query_log = OFF
slow_query_log_file = {{ DATA_ROOT }}/logs/slow.log
; 设定超过多少时间(s)的sql会被记录,一般不会超过1秒
long_query_time = 0.5
; 不使用索引的慢查询日志是否记录到索引
log_queries_not_using_indexes = on
; 查询结果小于多少行的将不会记录,此参数需要参考者设置
; min_examined_row_limit=100
; mysql 优化 start
open_files_limit = 65535
; mysql 优化 end
[mysqldump]
quick
max_allowed_packet = 128M
; mysqldump -uroot -p -A -R --triggers --master-data=2 --single-transaction|gzip > /backup/all_$(date +"%F-%T").sql.gz
; ignore-table=database.table
|