0
点赞
收藏
分享

微信扫一扫

mysql的归档日志:bin-log


bin-log基本信息


Binlog在MySQL的Server层实现(引擎共用)Binlog为逻辑日志,记录的是一条语句的原始逻辑Binlog不限大小,追加写入,不会覆盖以前的日志如果,我们误删了数据库,可以使用binlog进行归档!要使用binlog归档,首先我们得记录binlog,因此需要先开启MySQL的binlog功能。

主要的作用


数据库备份操作,删除数据后的恢复操作。主从复制。

binlog格式


  • Statement​:每一条会修改数据的sql都会记录在binlog中。不需要记录每一行的变化,减少了binlog日志量,节约了IO,提高性能。可能导致(主从复制)的结果不一致。
  • Row​:不记录sql语句上下文相关信息,仅保存哪条记录被修改。不会出现(主从复制)的结果不一致!所有的执行的语句当记录到日志中的时候,都将以每行记录的修改来记录,这样可能会产生大量的日志内容。
  • Mixed​:折中处理方案,实际上就是Statement与Row的结合。一般的语句修改使用statment格式保存binlog,如一些函数,statement无法完成主从复制的操作,则采用row格式保存binlog。

配置my.cnf:

#配置开启binlog
log-bin=/usr/local/mysql/data/binlog/mysql-bin
#注意5.7以及更高版本需要配置本项:server-id=123456(自定义,保证唯一性);
#binlog格式,有3种statement,row,mixed
binlog-format=ROW
#表示每1次执行写入就与硬盘同步,会影响性能,为0时表示,事务提交时mysql不做刷盘操作,由系统决定
sync-binlog=1

binlog的命令

--  查看bin-log是否开启
show variables like '%log_bin%';
-- 会多一个最新的bin-log日志
flush logs;
-- 查看最后一个bin-log日志的相关信息
show master status;
-- 清空所有的bin-log日志
reset master;

查看binlog内容

-- 外部查看
/usr/local/mysql/bin/mysqlbinlog --no-defaults /usr/local/mysql/data/binlog/mysql-bin.000001

-- mysql内部查看
-- 只查看第一个binlog文件的内容
mysql> show binlog events;

-- 查看指定binlog文件的内容
mysql> show binlog events in 'mysql-bin.000001';

-- 获取binlog文件列表
mysql> show binary logs;

简单的观察bin-log日志

  • begin,commit这种关键词信息,只要在binlog当中看到了,你就可以理解为begin-commit之间的信息是一个完整的事务逻辑,然后再根据位置position判断恢复即可。

数据归档操作

-- 从bin-log恢复数据
-- 恢复全部数据
/usr/local/mysql/bin/mysqlbinlog --no-defaults /usr/local/mysql/data/binlog/mysql-bin.000001 |mysql -uroot -p test(数据库名)
-- 恢复指定位置数据
/usr/local/mysql/bin/mysqlbinlog --no-defaults --start-position="408" --stop-position="731" /usr/local/mysql/data/binlog/mysql-bin.000001 |mysql -uroot -p test(数据库)
-- 恢复指定时间段数据
/usr/local/mysql/bin/mysqlbinlog --no-defaults /usr/local/mysql/data/binlog/mysql-bin.000001 --stop-date= "2018-03-02 12:00:00" --start-date= "2019-03-02 11:55:00"|mysql -uroot -p test(数据库)

结束语


  • 获取更多有价值的文章,让我们一起成为架构师!
  • 关注公众号,可以让你逐步对MySQL以及并发编程有更深入的理解!
  • 这个公众号,无广告!!!每日更新!!!
    mysql的归档日志:bin-log_数据库


举报

相关推荐

0 条评论