binlog

binlog是mysql的二进制日志, 用于记录mysql的运行状态. 根据记录的详细程度不同, 可以分为三种类型:

  • row: 最详细的记录, 记录每一行变化, 包含所有DDL(建库建表)和DML(增删改)变更
  • statement: 最精简的记录, 记录执行语句和上下文
  • mixed: 混合方式, 少量行变化用row模式, 大量变化用statement模式

binlog主要的使用场景如下:

  • 主从复制(高可用);
  • 数据增量备份和恢复

mysqlbinlog

因为binlog是以二进制方式存储的, 想要阅读日志具体内容, 需要利用工具进行解析. mysqlbinlog是官方提供的日志解析工具. 用法如下:

  1. mysqlbinlog [options] log_file '''

常用参数如下:

  • -d —database: 指定数据库
  • —start-position: 开始位置
  • —stop-positon: 结束位置
  • —start-datetime: 开始时间
  • —stop-datetime: 结束时间
  • -v -vv: 查看详细信息

可以将binlog导出到.sql文件进行恢复, 也可以直接利用管道恢复

  1. mysqlbinlog binlog.000001 | mysql -u root -p
  2. mysqlbinlog binlog.000001 > tmpfile
  3. ... edit tmpfile...
  4. mysql -u root -p < tmpfile