一些my.cnf配置文件
基本的配置:
[mysqld]
user=mysql
basedir=/home/application/mysql/app
datadir=/home/application/mysql/data
character_set_server=utf8
port=3306
socket=/tmp/mysql.sock
#最大连接数
max_connections=1000
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
#mysql导入大文件sql时可能会报MySQL server has gone away错误,该问题是max_allowed_packet配置的默认值设置太小
max_allowed_packet=150M
#超时时间,根据生产实际情况
通过jdbc连接数据库是非交互式连接
wait_timeout = 300
#通过mysql客户端连接数据库是交互式连接,根据生产实际情况
interactive_timeout = 500
#只能用IP地址检查客户端的登录,不用主机名,跳过域名解析
skip-name-resolve=1
#myql 5.7.2新增了参数 log_timestamps,用于控制error log、general log、slow log日志记录使用的时区,只影响写入文件的时区,不影响写入表中记录的时区。默认值是UTC,支持设置为SYSTEM使用系统的时区
#日志时间
log_timestamps=SYSTEM
#调试日志,配合脚本定期删除
general_log = 1
general_log_file = /home/application/mysql/data/logs/mysql_general.log
#慢日志查询日志
long_query_time=3
slow_query_log=ON
slow_query_log_file=/home/application/mysql/data/slow_query.log
#错误日志
log-error=/home/application/mysql/data/mysql-error.log
[mysql]
socket=/tmp/mysql.sock
mysql:主从相关配置:
主库:
[mysqld]
user=mysql
basedir=/home/application/mysql/app
datadir=/home/application/mysql/data
character_set_server=utf8
#慢日志查询日志
long_query_time=3
slow_query_log=ON
slow_query_log_file= /home/application/mysql/data/logs/slow_query.log
#错误日志
log-error=/home/application/mysql/data/logs/mysqld.log
port=3306
socket=/tmp/mysql.sock
max_connections=1000
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
#binlog配置
server_id=5
log-bin=mysql-bin
max_binlog_size = 100M
binlog_format=row
log_slave_updates
expire_logs_days=7
#只能用IP地址检查客户端的登录,不用主机名
skip-name-resolve=1
[mysql]
socket=/tmp/mysql.sock
从库:
[mysqld]
user=mysql
basedir=/home/application/mysql/app
datadir=/home/application/mysql/data
character_set_server=utf8
#主从
server_id=3
#从库,只写入主库来的数据,除此之外包含root用户都没有写权限,只有读
super-read-only
#慢日志查询日志
long_query_time=3
slow_query_log=ON
slow_query_log_file= /home/application/mysql/data/logs/slow_query.log
#错误日志
log-error=/home/application/mysql/data/logs/mysqld.log
port=3306
socket=/tmp/mysql.sock
max_connections=1000
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
#只能用IP地址检查客户端的登录,不用主机名
skip-name-resolve=1
[mysql]
socket=/tmp/mysql.sock
有些系统变量能在配置文件中配置,有些变量又不能,我们想知道哪些变量能,哪些变量不能,除了撸代码还有别的方法吗?
当然是有的,用这个命令就可以:
/path/mysqld --verbose --help | grep "xxx"
例如,查看 foreign_key_checks 是否能通过配置文件配置:
./mysqld --verbose --help | grep "foreign-key-checks"
执行命令没有任何输出,说明 foreign_key_checks 不能通过配置文件配置。
查看 autocommit 是否能通过配置文件配置:
./mysqld --verbose --help | grep "autocommit"
# 输出如下
--autocommit Set default value for autocommit (0 or 1)
(Defaults to on; use --skip-autocommit to disable.)
输出结果中有 --autocommit balabala 说明 autocommit 能通过配置文件配置。gn-key-checks。
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 运维小弟