一:配置文件说明

  • Windows平台上Mysql各个参数的读取顺序

文件名

备注

WINDIR/my.ini

全局选项,可在dos上用 echo $WINDIR%查看其确定值

C:\my.cnf

全局选项

INSTALLDIR\my.ini

全局选项,INSTALLDIR是mysql的安装目录

default-extra-file

用–default-extra-file=path 指定文件

  • Liunx平台上Mysql各个参数的读取顺序
命令
mysql --help|grep 'my.cnf'

输出
                     order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf

/etc/my.cnf, /etc/mysql/my.cnf, /usr/local/etc/my.cnf, ~/.my.cnf 这些就是mysql默认会搜寻my.cnf的目录,顺序排前的优先。
如果没有设置使用指定目录my.cnf文件及默认读取目录没有my.cnf文件,表示mysql启动时并没有加载配置文件,而是使用默认配置。

需要修改配置,可以在mysql默认读取的目录中,创建一个my.cnf文件(例如:/etc/my.cnf),把需要修改的配置内容写入,重启mysql后即可生效。

文件名

备注

/etc/my.cnf

全局选项

$MYSQL_HOME/my.cnf

全局选项

default-extra-file

用–default-extra-file=path 指定文件

~ /.my.cnf

用户相关选项

"全局选项"表示一台服务器上如果安装了多个MYSQL,则每个MYSQL服务启动的时候都会首先从此项读取参数

  • 参数修改

1.session级别,只对本session有效

set para_name=value

2.全局修改,对所有连接都有效,但是对本session无效,对本session无效,数据库重启后生效

set global par_name=value

3.永久修改,将参数放在my,cnf增加或者修改,数据库重启后生效

二:MySQL的日志分为错误日志,二进制日志(BIGLOG),查询日志和慢查询日

  • 错误日志
--log-error[=filename] #指定错误日志的位置
[root@localhost coder]# more -5 /var/log/mysqld.log
190922 17:14:31 mysqld_safe Logging to '/var/log/mysqld.log'.
190922 17:14:31 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
2019-09-22 17:14:33 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2019-09-22 17:14:33 0 [Note] /usr/sbin/mysqld (mysqld 5.6.45) starting as process 22259 ...
  • 二进制日志(binlog)

1.一些命令

--log-bin[=filename] #如果没有给出fle_name的值,默认主机名后面跟bin,如果给出文件名,但没有给出路径,则默认写入参数数据目录指定的目录
# 是否启用binlog日志
show variables like 'log_bin';
# 查看详细的日志配置信息
show global variables like '%log%';
# mysql数据存储目录
show variables like '%dir%';
# 查看binlog的目录
show global variables like "%log_bin%";
# 查看当前服务器使用的biglog文件及大小
show binary logs;
# 查看主服务器使用的biglog文件及大小
# 查看最新一个binlog日志文件名称和Position
show master status;
# 事件查询命令
# IN 'log_name' :指定要查询的binlog文件名(不指定就是第一个binlog文件)
# FROM pos :指定从哪个pos起始点开始查起(不指定就是从整个文件首个pos点开始算)
# LIMIT [offset,] :偏移量(不指定就是0)
# row_count :查询总条数(不指定就是所有行)
show binlog events [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count];
# 查看 binlog 内容
show binlog events
# 查看具体一个binlog文件的内容 (in 后面为binlog的文件名)
show binlog events in 'master.000003'
# 设置binlog文件保存事件,过期删除,单位天
set global expire_log_days=3;
# 删除当前的binlog文件
reset master;
# 删除slave的中继日志
reset slave;
# 删除指定日期前的日志索引中binlog日志文件
purge master logs before '2019-03-09 14:00:00'
# 删除指定日志文件
purge master logs to 'master.000003';

2.日志的格式
记录在二进制日志中的事件的格式取决于二进制记录格式。支持三种格式类型
STATEMENT:基于SQL语句的复制(statement-based replication, SBR)
ROW:基于行的复制(row-based replication, RBR)
MIXED:混合模式复制(mixed-based replication, MBR)

mysql --binlog_format=ROW/STATEMENT/MIXED';#修改binlog的格式
mysqlbinlog log-file #读取文件
mysql --binlog-do-db=db_name#如果当前数据库的是db_name,应当更新记录到二进制文件,其他没有明显指定的则不会记录
mysql --binlog-ignore-db=db_name#如果当前数据库的是db_name,不被记录
set SQL_LOG_BIN=0 #具有SUPER权限的客户端可以通过此语句禁止将自己的语句记入二进制文具

当遇到以下3种情况时,MySQL会重新生成一个新的日志文件,文件序号递增
MySQL服务器停止或重启时
使用 flush logs 命令;
当 binlog 文件大小超过 max_binlog_size 变量的值时;

3.查询日志和慢查询

show variables like 'log_output';#查看日志的输出方式
set global log_output='table'; #设置日志的输出方式(table,file,none一个或多个组合,中间用逗号隔开)
show variables like 'general_log'; #查看是否开启
set global general_log = on;#开启查询日志
set global general_log=off;#关闭查询日志
select * from mysql.general_log;#查看查询日志信息
show variables  like '%slow_query_log%';#默认情况下slow_query_log的值为OFF,表示慢查询日志是禁用的,可以通过设置slow_query_log的值来开启
set global slow_query_log=1; #开启慢查询
set global slow_query_log_file = /var/lib/mysql/slow-query.log   # 若没有指定,默认名字为hostname_slow.log
set global long_query_time = 1#设置最长查询时间