Mysql二进制日志binlog

Binlog是mysql的二进制日志, 它的主要目的是基于数据重放机制最大可能的恢复数据库的更新,因为二进制日志包含数据库备份后进行的所有更新

Mysql的主从复制特性也依赖于此实现。

Binlog的启动只增加 1% 的mysql负载, 所以不会成为瓶颈。

Mysql在数据操作成功后将按照逐LOG_EVENT递增的形式追加一条binlog。

 

Binlog配置启用, vim my.cnf

log_bin = /var/log/mysql-bin.log

## 可选配置
binlog_format = MIXED  #默认statement, 推荐mixed
expire_logs_days = 7
max_binlog_size = 100m

 

 

Binlog三种格式:

1 基于语句 statement

    记录数据变化的sql语句。一般日志量较小,但是语句执行的可靠性较低。

2 基于行 row

    记录被修改的数据行。数据细节清晰可靠,但一般日志量较大。

3 混合模式mixed

    以上两种格式的合并。

 

Binlog查看:

binlog文件由 索引文件具体日志 文件构成:

mysql-bin.index     #索引文件, 内容为所有日志文件名, 一行一个

mysql-bin.000001  #具体日志文件, 每次mysql服务重启都会新增一个日志文件, 序列号增一。

                                #内容包含了当下mysql服务中, 所有库的数据变更。

 

需要注意的是, 由于binlog是二进制日志, 所以你直接 cat 或者 vim 去查看编辑日志文件, 看到的会是乱码。

所以必须通过如下命令来查看日志。

.
Mysql Shell下查看:
show binary logs  #查看binlog列表
show master status   #查看当前写入的binlog文件
                     #(每次服务重启都会新建一个binlog,具体运行时往最近创建的binlog写入)
show binlog evnets 【in 'log_name'】  #查看指定binlog, 没有指定则默认第一个。注意有单引号。
.
Bash下查看, 更细致的分析:
##如果binlog格式是行模式的,请加 -vv参数
mysqlbinlog --start-datetime='2015-01-01 00:00:00' --stop-datetime='2015-06-01 01:01:01' 【-d 库名】 二进制文件   #时间端内查看
mysqlbinlog --start-postion=1                      --stop-position=1000                  【-d 库名】 二进制文件   #Event Pos 区间内查看

 

Binlog恢复mysql的更新:

如果数据库被各种原因误删, 则我们可以结合 binlog上次数据库的备份 来恢复

#先导入备份的数据库,然后执行以下命令
#注意:如果是从上次备份来恢复, 则 mysqlbinlog 还需指定上次备份的时间 --start-date
mysqlbinlog -d DatabaseName binlog-file|mysql -u user -p

 

转载于:https://my.oschina.net/u/2400083/blog/516092

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值