静态参数是指在数据库运行过程中不能修改的参数,必须在配置文件my.cnf中修改并且数据库重启后才能生效
比如datadir参数,如果使用动态参数修改方式,则会报错:
mysql> set global datadir='/usr/local/mysql/data2';
ERROR 1238 (HY000): Variable 'datadir' is a read only variable
MySQL日志文件包含以下几种:
错误日志(error log)
二进制日志(binlog)
慢查询日志(slow log)
查询日志(general_log)
是对MySQL的启动,运行和关闭过程进行了记录。遇到问题时首先应该查询此文件以便定位问题。
可以通过show variables like ‘log_error’ 命令来定位文件位置
默认情况下错误日志的文件名是该服务器的主机名
2.2.2慢查询日志可以定位可能存在性能问题的SQL语句,从而进行SQL语句层面的优化。
通过设置long_query_time参数来设置一个阈值,将运行时间超过该值的所有SQL语句都记录到慢查询日志文件中。
show variables like '%long_query%';
show variables like '%slow_query%';
另一个和慢查询日志相关的参数是log_queries_not_using_indexes参数,如果运行的SQL语句没有使用索引,则会把这条SQL语句记录到慢查询日志中
例如
#一个会话窗口,实时查看日志
tail -f /usr/local/mysql/data/master01-slow.log
#另一个窗口
执行一个做慢查询模拟
慢查询日志中不光会记录select语句,对数据库修改语句如果符合条件也会记录
执行sql语句的时间 比 long_query_time 大都会被记录
随着MySQL数据库服务器运行时间的增加,会有越来越多的SQL语句记录到慢查询日志中,此时分析该文件显得不那么简单和直观,这个时候可以使用
mysqldumpslow命令来协助分析慢查询日志 也可以通过pt 工具来分析,推荐用pt的工具。
例如提取执行时间最长的3条SQL 语句
mysqldumpslow -s t -n 3 -a master01-slow.log
如果慢查询的日志文件查询看着不舒服 想通过sql 方式的来看
哪可以通过动态修改log_output参数将慢查询输出到mysql库下的表中
默认是以文件的输出的方式
show variables like 'log_output';
修改为
set global log_output='table';
查看一下表结构
desc mysql.slow_log;
模拟慢查询 就会输出到mysql.slow_log表中
作用 : 分析常用sql ,看懂sql的具体作用,是否可以优化
2.2.3 查询日志查询日志记录了所有对MySQL数据库请求的信息。
通过两个参数来启动:
general_log=on
general_log_file=/usr/local/mysql/data/general_log
开启了这个文件 会记录 mysql 会话请求连接中 会实时记录所操作 的 ddl ,dml 语句 ,会导致这个文件变得,不一会就会变得很大, 影响存储。
开启这个查询日志一般都是用于排除一些异常才会开启。
二进制日志binary log记录了对MySQL数据库执行更改的所有操作,但不包括select和show这类操作。其主要作用为:
恢复:例如在一个数据库全备文件恢复后,用户可以通过二进制日志进行增量恢复
复制:通过执行二进制日志使远程的一台MySQL数据库与本数据库进行数据同步
审计:用户可以通过二进制日志中的信息来进行审计,判断是否有对数据库进行注入攻击
通过配置参数log-bin[=name]可以启动二进制日志,如果不指定name,则默认二进制日志文件名为主机名,后缀名为二进制日志的序列号