寒玉 Blog
  • Home
  • Books
  • About Me
  • Categories
  • Tags
  • Archives

MysqlBinlog 详解

Mariadb/mysql提供了4中不同的日志,分别是错误日志(error.log)、普通日志(general log)、慢日志(slow log)以及二进制日志(binlog)。错误日志记录了系统启动、运行以及停止过程中遇到的一些问题;普通日志记录了Mariadb执行的所有语句以及语句开始执行的时间等信息,用户可以选择性的打开它;慢日志记录了Mariadb所有慢查询的相关信息;而二进制日志则以事件的形式记录了mariadb的库表结构以及表数据的所有变更信息。

Mysql Binlog

binlog的作用

  • 复制

在Mariadb/mysql的主从结构中,主库的binlog记录了主库的所有更改操作,从库通过读取主库的binlog,在本地重放获取的binlog,这样从库就拥有和主库相同的数据,达到复制目的。

  • 备份恢复

binlog记录了数据库的所有更改信息,所以当Mariadb/mysql发生崩溃的时候,能够以最近备份点作为起点,然后执行在备份点之后产生的binlog中所有事件,实现数据库最大可能的恢复。

  • index文件按照书序记录了Mariadb/Mysql使用的所有binlog文件,管理binlog文件。

binlog操作

# 查看binlog
mysql> show binary logs;
# 查看binlog事件
mysql> show binary events;

binlog配置

binlog的配置在mysql的配置文件中,默认的配置文件是/etc/my.cnf.相关配置项

expire_logs_days = 5 #配置定情清理
log-bin=/var/mysql/mysql-bin # bin log日志路径
binlog_format=ROW

修改完成之后必须重启,才能生效

binlog常用命令

#0 查看日志开启状态 show variables like 'log_%';
mysql> show variables like 'log_%';
+-------------------------------------------------------------------------------------------------------------------------------------+
| Variable_name                   | Value                                                                                             |
+-------------------------------------------------------------------------------------------------------------------------------------+
| log_bin                         | ON                                                                                                |
| log_bin_basename                | /var/log/mysql/mariadb-bin                                                                        |
| log_bin_compress                | OFF                                                                                               |
| log_bin_compress_min_len        | 256                                                                                               |
| log_bin_index                   | /var/log/mysql/mariadb-bin.index                                                                  |
| log_bin_trust_function_creators | OFF                                                                                               |
| log_disabled_statements         | sp                                                                                                |
| log_error                       |                                                                                                   |
| log_output                      | FILE                                                                                              |
| log_queries_not_using_indexes   | OFF                                                                                               |
| log_slave_updates               | OFF                                                                                               |
| log_slow_admin_statements       | ON                                                                                                |
| log_slow_disabled_statements    | sp                                                                                                |
| log_slow_filter                 | admin,filesort,filesort_on_disk,filesort_priority_queue,...,query_cache_miss,tmp_table            |
| log_slow_rate_limit             | 1                                                                                                 |
| log_slow_slave_statements       | ON                                                                                                |
| log_slow_verbosity              |                                                                                                   |
| log_tc_size                     | 24576                                                                                             |
| log_warnings                    | 2                                                                                                 |
+-------------------------------------------------------------------------------------------------------------------------------------+
19 rows in set (0.05 sec)
# 查看所有日志
mysql> show master logs;
+--------------------+-----------+
| Log_name           | File_size |
+--------------------+-----------+
| mariadb-bin.000017 | 104858004 |
| mariadb-bin.000018 | 105248607 |
| mariadb-bin.000019 | 105317664 |
| mariadb-bin.000020 | 105143468 |
| mariadb-bin.000021 | 104857727 |
| mariadb-bin.000022 | 104915425 |
| mariadb-bin.000023 | 94849361  |
+--------------------+-----------+
7 rows in set (0.09 sec)
#查看最新一个binlog日志的编号名称,及其最后一个操作事件结束点 show master status;
mysql> show master status;
+--------------------+----------+--------------+------------------+
| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------------+----------+--------------+------------------+
| mariadb-bin.000023 | 94861723 |              |                  |
+--------------------+----------+--------------+------------------+
1 rows in set (0.05 sec)

# 刷新log日志,立刻产生一个新编号的binlog日志文件,跟重启一个效果 flush logs;
# 清空所有binlog日志 reset master;

# 查看指定binlog文件的内容(show binlog events in 'binname.xxxxx')#
mysql> show binlog events in 'mariadb-bin.000023' limit 4;
+--------------------+-----+-------------------+-----------+-------------+-----------------------------------------------------------------------+
| Log_name           | Pos | Event_type        | Server_id | End_log_pos | Info                                                                  |
+--------------------+-----+-------------------+-----------+-------------+-----------------------------------------------------------------------+
| mariadb-bin.000023 | 4   | Format_desc       | 1         | 256         | Server ver: 10.3.10-MariaDB-1:10.3.10+maria~bionic-log, Binlog ver: 4 |
| mariadb-bin.000023 | 256 | Gtid_list         | 1         | 299         | [0-1-1650762]                                                         |
| mariadb-bin.000023 | 299 | Binlog_checkpoint | 1         | 344         | mariadb-bin.000022                                                    |
| mariadb-bin.000023 | 344 | Gtid              | 1         | 386         | BEGIN GTID 0-1-1650763                                                |
+--------------------+-----+-------------------+-----------+-------------+-----------------------------------------------------------------------+

# 获取指定位置binlog的内容(show binlog events from)

Mysqlbinlog方式提取binlog

#a、提取指定的binlog日志
# mysqlbinlog /opt/data/APP01bin.000001
# mysqlbinlog /opt/data/APP01bin.000001|grep insert
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
insert into tb values(2,'jack')
#b、提取指定position位置的binlog日志
mysqlbinlog --start-position="120" --stop-position="332" /opt/data/APP01bin.000001
#c、提取指定position位置的binlog日志并输出到压缩文件
mysqlbinlog --start-position="120" --stop-position="332" /opt/data/APP01bin.000001 |gzip >extra_01.sql.gz
#d、提取指定position位置的binlog日志导入数据库
mysqlbinlog --start-position="120" --stop-position="332" /opt/data/APP01bin.000001 | mysql -uroot -p
#e、提取指定开始时间的binlog并输出到日志文件
mysqlbinlog --start-datetime="2014-12-15 20:15:23" /opt/data/APP01bin.000002 --result-file=extra02.sql
#f、提取指定位置的多个binlog日志文件
mysqlbinlog --start-position="120" --stop-position="332" /opt/data/APP01bin.000001 /opt/data/APP01bin.000002|more
#g、提取指定数据库binlog并转换字符集到UTF8
mysqlbinlog --database=test --set-charset=utf8 /opt/data/APP01bin.000001 /opt/data/APP01bin.000002 >test.sql
#h、远程提取日志,指定结束时间 
mysqlbinlog -urobin -p -h192.168.1.116 -P3306 --stop-datetime="2014-12-15 20:30:23" --read-from-remote-server mysql-bin.000033 |more
#i、远程提取使用row格式的binlog日志并输出到本地文件
mysqlbinlog -urobin -p -P3606 -h192.168.1.177 --read-from-remote-server -vv inst3606bin.000005 >row.sql

参考

  • https://blog.51cto.com/6226001001/1672159
  • https://mariadb.com/kb/en/library/binary-log/
  • https://www.cnblogs.com/skymyyang/p/7798670.html
  • https://blog.csdn.net/leshami/article/details/41962243
  • https://www.linuxidc.com/Linux/2018-01/150149.htm

  • « Debezium介绍和使用
  • knime官方node梳理 »

Published

6 19, 2019

Category

database

Tags

  • binlog 1
  • database 4
  • mysql 1
  • Powered by Pelican. Theme: Elegant by Talha Mansoor