achiverhai 2020-05-11
mysql提供的工具类日志种类:
用来记录启动\关闭\日常运行过程中,状态信息,警告,错误。默认是开启的
默认就是开启的: /数据路径下/hostname.err 查看错误日志位置:select @@log_error; 手工指定位置: vim /etc/my.cnf log_error=/var/log/mysql.log log_timestamps=system 重启生效 show variables like ‘log_error‘;
1 主要关注[ERROR],看上下文
1 备份恢复必须依赖二进制日志 2 主从环境必须依赖二进制日志 3 5.x以上版本默认都没有开启二进制日志,需要手动配置来启用
注意:MySQL默认是没有开启二进制日志的。 基础参数查看: 开关状态: select @@log_bin; 日志路径及名字:select @@log_bin_basename; 服务ID号: select @@server_id; 二进制日志格式: select @@binlog_format; 双一标准之二: select @@sync_binlog;
1 mkdir /data/binlog 2 chown -R mysql.mysql /data/binlog
vim /etc/my.cnf server_id=6 (取值1-65535) 5.6中,单机可以不需要此参数 # log_bin有两种配置方式,如下讲解 log_bin=1 只打开二进制日志开关,文件存放在默认的位置 log_bin=/data/binlog/mysql-bin 开启二进制日志,按照路径生成二进制文件,mysql-bin为指定的文件名前缀。 指定路径后会在其下额外生成个mysql-bin.index文件,其内存放的是二进制文件的名,便于统计 binlog_format=row 5.7默认的配置,可省略
server_id=3306 主要是在主从复制过程中必须要加的,但是在5.7版本中,要用以下参数(log_bin),开启binlog日志,即使是单机也是必加的 log_bin=/data/binlog/mysql-bin (1)开启二进制日志功能 (2)设置二进制日志目录及名称前缀 binlog_format=row binlog中记录dml语句的记录格式
1 binlog是SQL层的功能。记录的是变更SQL语句,不记录查询语句。
DDL :原封不动的记录当前DDL(statement语句方式)。 DCL :原封不动的记录当前DCL(statement语句方式)。 DML :只记录已经提交的事务DML
binlog_format=xx(binlog的记录格式)参数影响,取值如下: (1)statement(5.6默认)SBR(statement based replication) :语句模式原封不动的记录当前DML。 (2)ROW(5.7 默认值) RBR(ROW based replication) :记录数据行的变化(用户看不懂,需要工具分析) (3)mixed(混合)MBR(mixed based replication)模式 :以上两种模式的混合
SBR与RBR模式的对比: STATEMENT(SBR):可读性较高,日志量少,但是不够严谨 ROW(RBR) :可读性很低,日志量大,足够严谨,一些高可用环境中的新特性要依赖RBR模式 示例: update t1 set xx=xx where id>10 SBR会把update语句记录下来, RBR会把所有受影响的行的变化状态给记录下来 解析: 为什么说SBR不严谨或某些情况下不准确呢? insert into t1 values(1,‘zs‘,now())这种场景下使用now获取时间场景 我们建议使用:row记录模式