关于Linux上my.cnf配置文件部分参数解释
2022-05-28 本文已影响0人
静美书斋
版本示例
- MySQL版本:5.7.25
配置文件参考
Linux上使用yum安装完成的MySQL数据库配置文件一般在/etc/my.cnf
下,配置文件如下:
[mysqld]
sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION'
datadir = /var/lib/mysql
socket = /var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links = 0
# 1-表名大小写不敏感
lower_case_table_names = 1
log-error = /var/log/mysqld.log
pid-file = /var/run/mysqld/mysqld.pid
character_set_server=utf8mb4
# 设置MySQL时区(数据表默认时区,默认时区为东八区)
default-time-zone = '+8:00'
#数据库唯一ID,主从的标识号绝对不能重复。
server-id = 1
#开启bin-log,并指定文件目录和文件名前缀
#log-bin = /home/log/mysql/mysql-binlog
#需要同步liting数据库。如果是多个同步库,就以此格式另写几行即可。如果不指明对某个具体库同步,就去掉此行,表示同步所有库(除了ignore忽略的库)。
binlog-do-db = dbname1
binlog-do-db = dbname2
#不同步mysql系统数据库。如果是多个不同步库,就以此格式另写几行;也可以在一行,中间逗号隔开。
binlog-ignore-db = mysql
#确保binlog日志写入后与硬盘同步
sync_binlog = 1
#跳过现有的采用checksum的事件,mysql5.6.5以后的版本中binlog_checksum=crc32,而低版本都是binlog_checksum=none
binlog_checksum = none
#bin-log日志文件格式,设置为MIXED可以防止主键重复。
binlog_format = mixed
#二进制日志自动删除/过期的天数。默认值为 0,表示不自动删除。
expire_logs_days = 1
#如果当前的日志大小达到max_binlog_size,还会自动创建新的二进制日志
max_binlog_size = 100M
#表示 slave 将复制事件写进自己的二进制日志
log_slave_updates = 1
#跳过主从复制中遇到的所有错误或指定类型的错误,避免 slave 端复制中断。
slave-skip-errors = all
#自增长起始值
auto-increment-offset = 1
#自增长步长
auto-increment-increment = 2
# 服务器端和客户端在一次传送数据包的过程当中最大允许的数据包大小
max_allowed_packet = 1024M
常用sql_mode说明
①ONLY_FULL_GROUP_BY
对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中
②NO_AUTO_VALUE_ON_ZERO
该值影响自增长列的插入。默认设置下,插入0或NULL代表生成下一个自增长值。如果用户希望插入的值为0,而该列又是自增长的,那么这个选项就有用了。
③STRICT_TRANS_TABLES
如果一个值不能插入到一个事务中,则中断当前的操作,对非事务表不做限制
④NO_ZERO_IN_DATE
不允许日期和月份为零
⑤NO_ZERO_DATE
mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告
⑥ERROR_FOR_DIVISION_BY_ZERO
在insert或update过程中,如果数据被零除,则产生错误而非警告。如果未给出该模式,那么数据被零除时Mysql返回NULL
⑦NO_AUTO_CREATE_USER
禁止GRANT创建密码为空的用户
⑧NO_ENGINE_SUBSTITUTION
如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常
⑨PIPES_AS_CONCAT
将"||"视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样是,也和字符串的拼接函数Concat想类似
⑩ANSI_QUOTES
不能用双引号来引用字符串,因为它被解释为识别符