binlog日志_MySQL复制(二) 详聊binlog日志

c3302830ed2a051346145a8c88f4319c.png
有了binlog日志,我们可以实现主从架构,可以用canal、maxwell等工具实现将MySQL数据同步到大数据环境;同时可以对binlog进行解析,可以实现快速的数据恢复(Flashback),如使用binlog2sql、Myflash、Mariadb mysqlbinlog等,要实现这些功能,对binlog的详细了解是有必要的。

一. binlog配置

要启动非常简单,通过配置log_bin选项即可启用binlog,5.7需要同时设置server_id参数,8.0开始server_id默认值为1

常见配置参数如下:

log-bin=mysql-binlog-bin-index=mysql-bin.indexbinlog-rows-query-log-events = 1# expire_logs_days = 15 # 8.0 deprecatedbinlog_expire_logs_seconds = 604800 # 7 dayslog_slave_updates=1binlog_format = rowmax_binlog_size=1Gbinlog_cache_size=32768max_binlog_cache_size=4Grelay_log = relay-logrelay_log_recovery = 1relay_log_purge=0 # mha 场景下 disablebinlog_checksum=CRC32sync_binlog = 1gtid_mode = 1enforce_gtid_consistency = 1binlog_transaction_dependency_tracking=WRITESET # 5.7.22

相关参数解释:

binlog-rows-query-log-events使用ROW格式时可以在binlog日志里面记录一条Rows_query事件,即实际的SQL语句;

c1059c6860fdc901bbd9186ee0b1f00c.png

二. 查看binlog

生成的binlog日志如何查看呢?有两种方式,使用SHOW BINLOG EVENTS命令和mysqlbinlog工具。 show binlog events命令:可以在mysql客户端执行命令查看对应binlog文件中的事件;没有指定文件名时默认是查看第一个日志文件的事件。
# 查看有哪些binlog日志文件show binary logs;# 查看binlog 事件SHOW BINLOG EVENTS> [IN 'log_name']> [FROM pos]> [LIMIT [offset,] row_count]

ee83e9fbea5235302051852071a5d1a8.png

mysqlbinlog工具:

通过mysqlbinlog工具可以查看二进制日志文件或relay log内的事件,使用-vv可以显示出row格式的行信息,使用--start-datetime/--stop-datetime,--stop-position/--start-position 可以指定事件的开始/结束时间或位点。

f73b7c951925c8fbe5f3645bb2b65a07.png

使用--read-from-remote-server/--read-from-remote-master可以从远程服务器读取日志,并能写入到本地文件,或持续进行日志接收(实现备份,binlog server)。

read-from-remote-master支持选项BINLOG-DUMP-NON-GTIDS(非gtid模式下)和BINLOG-DUMP-GTIDS,使用BINLOG-DUMP-GTIDS可以结合--exclude-gtids实现事件过滤。

# 读取远程服务器的日志mysqlbinlog \--read-from-remote-server \--host=10.82.30.102 \--port=3308 \--password \--user=yau  \--stop-position=125 \mysql-bin.000041 # 使用read-from-remote-master选项从远程# 服务器读取日志mysqlbinlog \--read-from-remote-master=BINLOG-DUMP-NON-GTIDS \--host=10.82.30.102 \--port=3308 \--password \--user=yau  \--stop-position=125 \mysql-bin.000041

结合使用--stop-never、--connection-server-id=#、--raw选项可以实现远程实时备份binlog;

使用--result-file/-r指定保存事件的文件名;结合--raw选项,文件名为前缀名称;

mysqlbinlog \--read-from-remote-master=BINLOG-DUMP-NON-GTIDS \--host=10.82.30.102 \--port=3308 \--password \--user=yau  \--stop-never \--connection-server-id=1002 \--result-file=backup102- \--raw \mysql-bin.000042
下图为查看备份的日志,文件名用指定的前缀+源端二进制日志的文件名;

3af0cc373299cb42b2063ae910f99f51.png

三. binlog事件 

binlog_event.h中的Log_event_type定义了事件的各种类型,5.7.22有38种事件类型;每个日志文件开头有一个Format_desc事件,日志文件结尾有一个Rotate事件,表示日志结束。所有binlog事件都有一个通用的结构,由事件头和事件数据组成;每个版本的事件内容不同。事件头包括事件创建时间,server_id等信息;事件数据部分为具体的数据修改;

535c46d313e1194c9185b0cce7619eb7.png


最新上架

MySQL复制(一) - 异步复制

Redis内存碎片管理


0eb34d156c47666ac89a702ee22f6f28.png

如果文章对您有帮助,请友情帮转发+点赞哦!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值