my.cnf 配置文件
它会按照 /etc/my.cnf -> /etc/mysql/my.cnf -> /usr/local/mysql/my.cnf -> ~/.my.cnf 这样的一个优先级顺序去读取配置文件 如果你想指定默认的参数文件位置 需要配合 --defaults-file 参数
在mysql 中 mysql server 端核心参数 可以通过 show cariables like ‘%参数名称%’ 来查看mysql数据库中的参数
mysql 的参数类型分为 动态参数 和静态参数
动态参数可以通过 set 方法来修改 可以直接通过语句 修改
set global 是代表全局参数,修改完之后 重启mysql 服务 依旧生效
set session 代表回话参数 修改完成之后重启之后不会不再生效
静态参数 ,顾名思义 只能通过修改配置文件来达到目的
mysql日志
总结: mysql日志 一共有6中 innodb日志一共有两种
mysql日志分别为
错误日志(error log)
二进制日志(binary log)
慢查询日志(slow log)
全量日志(general log)
审计日志(audit log)
中继日志(relay log)
innodb日志分别问
undo log
redo log
1 错误日志(error log)
错误日志 一般存放在数据目录下,以error.log 作为文件名的结尾 但是也有的是 存放在 /etc/log/mysql.log
查询 error.log 的位置 sql
show variables like '%log_error%'
记录mysq 启动 关闭 运行 中的 异常信息
2二进制文件日志(binary log)
show cariables like '%log_bin%' 查询binlog 的位置 和是否启动
它和redo log 一样都是用于记录对mysql 数据库真正执行更改的所有操作,而不记录 show 和select 这样的日志, 如果需要记录这些日志的话 需要 开启全量日志 general log 开启的话 会产生大量的日志 不建议开启 默认也是关闭的
主要作用
可以完成主从复制功能, 在主服务器上把所有修改数据的操作记录到binlog 中,通过网络发送给从服务器 ,从服务器读取这些 操作 从而达到主从同步
进行恢复操作,数据可以通过 binlog 日志,使用musqlibnlog命令 实现基于时间点和位置的恢复操作
2 二进制日志文件(binary log)
它和redo log 一样是真正记录对mysql 数据库 执行更改的所有操作,其中不包含没有修改任何数据的语句,也不记录select 和show这样的语句 如果需要记录的话 需要开启全量日志。(默认是不开启的 因为会产生大量的日志)
它的主要作用 是 可以完成主从复制功能, 主服务器将修改数据的 操作记录在文件中,通过网络发送给从服务器,从而达到中从同步
同时他还用于 书的恢复操作,数据可以通过binlog日志 使用mysqlbinlog 命令来实现基于时间点和位置的数据恢复
3慢查询日志(slow log)
慢查询日志是把所有 查过 参数 long_query_time 时间的所有sql语句记录进来 帮助我们发现有问题的sql 进行sql 优化使用的
可以使用 percona-rookit 工具 通过对应的 slow log 来生成慢查询报告
4全量日志(general log)
开启的话 会记录对mysql 所有的操作 包括 select 和 show 默认是关闭的 因为log的量会非常大
5审计日志(audit log 收费组件 只有购买企业版才能使用 )
6 中继日志(relay log)
主从复制中 会将 主服务器发送过来的二进制文件 (binary log) 使用I/O线程 读取并且写入本地relay log 中 然后从服务器的sql 线程会读取 relay log的日志内容 并应用到从服务器中
(详细流程 到主从复制中写)
存储引擎层面的日志
7 redo log 记录事务操作变化 记录的是数据被修改之后的值
8 undo 日志 记录的是事物变成数据之前的值 mvcc 多版本控制就是使用undo log 和回滚段来实现的