mysql之 binlog

binlog是mysql的二进制日志文件。记录了所有DDL和DML语句(除了数据查询select语句)。以事件形式记录,还包含语句所执行耗费的时间,binlog是事务安全型的。

DDL:数据库定义语言:create, alter, drop(定义或改变表结构)

DML:数据操纵语言:select,update,insert, delete

mysqlbinlog常见的选项

--start-datatime:从二进制文件中读取指定等于时间戳或者晚于本地计算机的时间

--stop-datetime:从二进制日志中读取指定小于时间戳或者等于本地计算机的时间

--start-position:从二进制文件读取指定position事件位置作为开始时间

--stop-position:从二进制文件读取指定position事件位置作为事件截止

binlog使用场景

1.mysql主从复制:mysql replication在master端开启binlog,master把他的二进制传递给slaves来达到master-sslave数据一致的目的。

2.数据恢复,通过使用mysqlbinlog工具进行数据恢复。

binlog日志包括两类文件

1.二进制索引文件(文件名后缀为.index),用来记录所有的二进制文件

2.二进制日志文件(文件名后缀为.00000*),记录数据库所有的DDL和DML语句事件

开启binlog日志

1.编辑mysql配置文件/etc/mys.cnf

// 在mysqlid区块添加以下代码确认是打开状态
log-bin=mysql-bin

2.重启mysqlid服务让配置生效

/etc/init.d/mysqlid stop
/etc/init.d/mysqlid restart

查看mysql binlog日志是否开启

show variables like 'log_%';
// 开启状态:log-bin  on

常用的binlog日志操作命令

// 查看所有binlog日志列表
show master logs;
// 查看master状态,即最后(最新)一个binlog日志的编号名称,及其最后一个操作事件pos结束点的值
show master status;
// 刷新日志,自此刻开始产生一个新编号的binlog日志文件.每当mysqlid服务重启会自动刷新binlog日志。
flush logs;
// 重置清空所有binlog
reset master;

查看binlog日志内容

1.使用mysqlidbinlog自带的查看命令法

(因为binlog是二进制文件,普通文件查看器无法打开)

2.上面的办法读出的binlog日志的全文内容比较多,使用命令方便查询。

/**
 参数解释: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];

猜你喜欢

转载自blog.csdn.net/u010918487/article/details/81674610
今日推荐