mysql binlog的使用

                       

本文介绍mysql binlog的使用,包括开启,关闭,查看状态,刷新,清空,查看执行的sql语句等操作。并对5.7及旧版本的设置加以说明,方便大家学习。

mysql binlog 介绍

binlog就是binary log,二进制日志文件,记录了mysql所有的dml操作。

根据mysql binlog文件,我们可以查看执行了什么sql语句,进行数据恢复,主从同步复制等操作。

binlog文件对于一个数据库的处理和恢复有很重要的作用。

1.mysql binlog 开启与关闭

查看mysql binlog配置

show global variables like '%log_bin%';+---------------------------------+-------+| Variable_name                   | Value |+---------------------------------+-------+| log_bin                         | OFF   || log_bin_basename                |       || log_bin_index                   |       || log_bin_trust_function_creators | OFF   || log_bin_use_v1_row_events       | OFF   |+---------------------------------+-------+
  
  
    
    
    
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

binlog 当前是关闭的。

 
开启binlog

打开my.cnfmy.ini加入以下语句,重启mysql

log_bin=ONlog_bin_basename=/usr/local/var/mysql/mysql-binlog_bin_index=/usr/local/var/mysql/mysql-bin.index
  
  
    
    
    
    
  • 1
  • 2
  • 3

log_bin
ON表示打开binlog日志,关闭改为OFF。

log_bin_basename
表示binlog日志的基本文件名,后面会追加标识来区分每一个文件。

log_bin_index
指定binlog文件的索引文件,这个文件管理了所有binlog文件的目录。


如果是mysql5.7以下,这样设置就可以了,如果是5.7以上,需要按以下设置

log_bin=mysql-binserver_id=123456
  
  
    
    
    
    
  • 1
  • 2

log_bin 表示自定义binlog文件名称。

server_id 表示随机指定一个与其他集群机器不重名的字符串,配置mysql replication需要定义,不能和canal的slaveId重复。


重启后再次查看mysql binlog配置

show global variables like '%log_bin%';+---------------------------------+--------------------------------------+| Variable_name                   | Value                                |+---------------------------------+--------------------------------------+| log_bin                         | ON                                   || log_bin_basename                | /usr/local/var/mysql/mysql-bin       || log_bin_index                   | /usr/local/var/mysql/mysql-bin.index || log_bin_trust_function_creators | OFF                                  || log_bin_use_v1_row_events       | OFF                                  |+---------------------------------+--------------------------------------+
  
  
    
    
    
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

可以看到binlog已开启。

2.查看binlog日志文件列表

show master logs;+------------------+-----------+| Log_name         | File_size |+------------------+-----------+| mysql-bin.000001 |       177 || mysql-bin.000002 |       177 || mysql-bin.000003 |       177 || mysql-bin.000004 |       177 || mysql-bin.000005 |       177 || mysql-bin.000006 |       177 || mysql-bin.000007 |       201 || mysql-bin.000008 |       201 || mysql-bin.000009 |       201 || mysql-bin.000010 |       154 |+------------------+-----------+
  
  
    
    
    
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15


3.查看当前正在写入的binlog日志

show master status;+------------------+----------+--------------+------------------+-------------------+| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+------------------+----------+--------------+------------------+-------------------+| mysql-bin.000010 |      154 |              |                  |                   |+------------------+----------+--------------+------------------+-------------------+
  
  
    
    
    
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6


4.刷新binlog日志文件

flush logs;
  
  
    
    
    
    
  • 1


5.清空日志文件

reset master;
  
  
    
    
    
    
  • 1


6.查看binglog日志文件内容

查看binlog日志文件,查看执行了哪些sql语句,我们可以使用mysqlbinlog工具进行处理。

首先根据log_bin_basename,找到存放binlog文件的目录,然后使用mysqlbinlog工具查看对应的binlog文件。
 
例如:

mysqlbinlog -v mysql-bin.000001 > mysql-bin-1.log
  
  
    
    
    
    
  • 1

然后查看mysql-bin-1.log,可以查看执行过的sql语句。

BINLOG 'Xq1HWhNA4gEAPAAAAGQBAAAAAPEEAAAAAAEACXRlc3RfdXNlcgAGY3NfdGFnAAUDDwEDAwL9AgBaWZlGXq1HWh5A4gEANwAAAJsBAAAAAPEEAAAAAAEAAgAF/+ACAAAABABjc2RuAf2LG1r9ixtaIS88ZA=='/*!*/;### INSERT INTO `test_user`.`cs_tag`### SET###   @1=2###   @2='csdn'###   @3=1###   @4=1511754749###   @5=1511754749# at 411
  
  
    
    
    
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

 
使用mysqlbinlog时需要注意一下几点

1.不要查看当前正在写入的binlog文件,可以先把文件复制到其他目录,再执行查看。

2.不要加force参数强制访问。

3.如果binlog格式是row模式的,请加-vv参数。

           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

你可能感兴趣的:(mysql binlog的使用)