ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Binlog_master

2019-11-30 16:55:04  阅读:192  来源: 互联网

标签:Binlog log 文件 二进制 默认 master 日志 mariadb


二进制日志

  • 记录导致数据改变或潜在导致数据改变的SQL语句
  • 记录已提交的日志
  • 不依赖于存储引擎类型
  • 功能:通过“重放”日志文件中的事件来生成数据副本
  • 注意:建议二进制日志和数据文件分开存放

    二进制日志记录三种格式

  • 基于“语句”记录:statement,记录语句,默认模式( MariaDB 10.2.3 版本以下 ),日志量较少
  • 基于“行”记录:row,记录数据,日志量较大
  • 混合模式:mixed, 让系统自行判定该基于哪种方式进行,默认模式( MariaDB 10.2.4及版本以上)

    格式配置

    • MariaDB [hellodb]> show variables like 'binlog_format';
    • +---------------+-------+
    • | Variable_name | Value |
    • +---------------+-------+
    • | binlog_format | MIXED |
    • +---------------+-------+
    • 1 row in set (0.001 sec)

二进制日志文件的构成

  • 有两类文件
    • 日志文件:mysql|mariadb-bin.文件名后缀,二进制格式
      如: mariadb-bin.000001
    • 索引文件:mysql|mariadb-bin.index,文本格式

      二进制日志相关的服务器变量:

  • sql_log_bin=ON|OFF:#是否记录二进制日志,默认ON
  • log_bin=/PATH/BIN_LOG_FILE:#指定文件位置;默认OFF,表示不启用二进制日志功能,上述两项都开
    启才可
  • binlog_format=STATEMENT|ROW|MIXED:#二进制日志记录的格式,默认STATEMENT
  • max_binlog_size=1073741824:#单个二进制日志文件的最大体积,到达最大值会自动滚动,默认为1G
    • 说明:文件达到上限时的大小未必为指定的精确值
  • sync_binlog=1|0:#设定是否启动二进制日志即时同步磁盘功能,默认0,由操作系统负责同步日志到磁盘
  • expire_logs_days=N:#二进制日志可以自动删除的天数。 默认为0,即不自动删除

    二进制日志相关配置

    查看mariadb自行管理使用中的二进制日志文件列表,及大小

  • SHOW {BINARY | MASTER} LOGS

    查看使用中的二进制日志文件

  • SHOW MASTER STATUS

    查看二进制文件中的指定内容

  • show binlog events in 'mysql-bin.000001' from 6516 limit 2,3

mysqlbinlog:二进制日志的客户端命令工具

mysqlbinlog [OPTIONS] log_file…
--start-position=# 指定开始位置
--stop-position=#
--start-datetime= #时间格式:YYYY-MM-DD hh:mm:ss
--stop-datetime=
--base64-output[=name]

例如:

mysqlbinlog --start-position=678 --stop-position=752 /var/lib/mysql/mariadbbin.000003 -v

二进制日志事件的格式:

# at 328
#151105 16:31:40 server id 1 end_log_pos 431 Query thread_id=1
exec_time=0 error_code=0
use `mydb`/*!*/;
SET TIMESTAMP=1446712300/*!*/;
CREATE TABLE tb1 (id int, name char(30))
/*!*/;
事件发生的日期和时间:151105 16:31:40
事件发生的服务器标识:server id 1
事件的结束位置:end_log_pos 431
事件的类型:Query
事件发生时所在服务器执行此事件的线程的ID:thread_id=1
语句的时间戳与将其写入二进制文件中的时间差:exec_time=0
错误代码:error_code=0

清除指定二进制日志

PURGE { BINARY | MASTER } LOGS { TO 'log_name' | BEFORE datetime_expr }
例如
PURGE BINARY LOGS TO 'mariadb-bin.000003'; #删除mariadb-bin.000003之前的日志
PURGE BINARY LOGS BEFORE '2017-01-23';
PURGE BINARY LOGS BEFORE '2017-03-22 09:25:30';

删除所有二进制日志,index文件重新记数

RESET MASTER [TO #]; #删除所有二进制日志文件,并重新生成日志文件,文件名从#开始记数,默认从
1开始,一般是master主机第一次启动时执行,MariaDB10.1.6开始支持TO #

标签:Binlog,log,文件,二进制,默认,master,日志,mariadb
来源: https://www.cnblogs.com/Justin0717/p/11963084.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有