mysql的binlog详解

2023-10-27

author:skate
time:2012/03/27

 

mysql的binlog详解

 

什么是binlog
binlog日志用于记录所有更新了数据或者已经潜在更新了数据(例如,没有匹配任何行的一个DELETE)的所有语句。语句以“事件”的形式保存,它描述数据更改。

binlog作用
因为有了数据更新的binlog,所以可以用于实时备份,与master/slave复制

和binlog有关参数


log_bin
设置此参数表示启用binlog功能,并指定路径名称
log_bin_index
设置此参数是指定二进制索引文件的路径与名称
binlog_do_db
此参数表示只记录指定数据库的二进制日志
binlog_ignore_db
此参数表示不记录指定的数据库的二进制日志
max_binlog_cache_size
此参数表示binlog使用的内存最大的尺寸
binlog_cache_size
此参数表示binlog使用的内存大小,可以通过状态变量binlog_cache_use和binlog_cache_disk_use来帮助测试。
       binlog_cache_use:使用二进制日志缓存的事务数量
       binlog_cache_disk_use:使用二进制日志缓存但超过binlog_cache_size值并使用临时文件来保存事务中的语句的事务数量


max_binlog_size
Binlog最大值,最大和默认值是1GB,该设置并不能严格控制Binlog的大小,尤其是Binlog比较靠近最大值而又遇到一个比较大事务时,为了保证事务的完整性,不可能做切换日志的动作,只能将该事务的所有SQL都记录进当前日志,直到事务结束

sync_binlog
这个参数直接影响mysql的性能和完整性

sync_binlog=0
当事务提交后,Mysql仅仅是将binlog_cache中的数据写入Binlog文件,但不执行fsync之类的磁盘        同步指令通知文件系统将缓存刷新到磁盘,而让Filesystem自行决定什么时候来做同步,这个是性能最好的。

sync_binlog=n,在进行n次事务提交以后,Mysql将执行一次fsync之类的磁盘同步指令,同志文件系统将Binlog文件缓存刷新到磁盘。

Mysql中默认的设置是sync_binlog=0,即不作任何强制性的磁盘刷新指令,这时性能是最好的,但风险也是最大的。一旦系统绷Crash,在文件系统缓存中的所有Binlog信息都会丢失


binlog的删除
binlog的删除可以手工删除或自动删除

自动删除binlog
通过binlog参数(expire_logs_days )来实现mysql自动删除binlog
mysql> show binary logs;
mysql> show variables like 'expire_logs_days';
mysql> set global expire_logs_days=3;

手工删除binlog
mysql> reset master;   //删除master的binlog
mysql> reset slave;    //删除slave的中继日志
mysql> purge master logs before '2012-03-30 17:20:00';  //删除指定日期以前的日志索引中binlog日志文件
mysql> purge master logs to 'binlog.000002';   //删除指定日志文件的日志索引中binlog日志文件
或者直接用操作系统命令直接删除


mysql> set sql_log_bin=1/0; //如果用户有super权限,可以启用或禁用当前会话的binlog记录

mysql> show master logs; //查看master的binlog日志
mysql> show binary logs; //查看master的binlog日志
mysql> show master status; //用于提供master二进制日志文件的状态信息
mysql> show slave hosts; //显示当前注册的slave的列表。不以--report-host=slave_name选项为开头的slave不会显示在本列表中

binglog的查看
通过mysqlbinlog命令可以查看binlog的内容
[root@localhost ~]# mysqlbinlog  /home/mysql/binlog/binlog.000003  | more

/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#120330 16:51:46 server id 1  end_log_pos 98    Start: binlog v 4, server v 5.0.45-log created 120330 1
6:51:46
# Warning: this binlog was not closed properly. Most probably mysqld crashed writing it.
# at 196
#120330 17:54:15 server id 1  end_log_pos 294   Query   thread_id=3     exec_time=2     error_code=0
SET TIMESTAMP=1333101255/*!*/;
insert into tt7 select * from tt7/*!*/;
# at 294
#120330 17:54:46 server id 1  end_log_pos 388   Query   thread_id=3     exec_time=28    error_code=0
SET TIMESTAMP=1333101286/*!*/;
alter table tt7 engine=innodb/*!*/;

 

解析binlog格式

位置
位于文件中的位置,“at 196”说明“事件”的起点,是以第196字节开始;“end_log_pos 294”说明以第294字节结束

 

时间戳
事件发生的时间戳:“120330 17:54:46”

 

事件执行时间
事件执行花费的时间:"exec_time=28"

 

错误码
错误码为:“error_code=0”

 

服务器的标识
服务器的标识id:“server id 1”

 

 

 

--------end---------

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql的binlog详解 的相关文章

随机推荐

  • Docker搭建RabbitMQ集群_开启MQTT插件后连接不上

    RabbitMQ集群搭建和测试总结 亲测 Docker安装RabbitMQ集群 亲测成功 开启MQTT插件后 集群方式连接不上 看日志报错连接超时 执行如下命令就可以连接上了 rabbitmqctl eval ra overview rab
  • c++实现Qt信号和槽机制

    文章目录 简介 信号 槽 信号与槽的连接 特点 观察者模式 定义 观察者模式结构图 实现简单的信号和槽 简介 信号槽机制与Windows下消息机制类似 消息机制是基于回调函数 Qt中用信号与槽来代替函数指针 使程序更安全简洁 信号和槽机制是
  • fmincon求解函数极值

    clear close all options fun1 46 971 5 094 x 1 80 234 x 2 0 173 x 1 2 46 994 x 2 2 3 695e 5 x 3 2 3 056 x 1 x 2 0 001 x 1
  • windows 下C++生成Dump调试文件与分析

    目录 1 前言 2 依赖库下载 3 项目配置 3 1 设置输出路径 3 2 拷贝依赖资源 3 3 将dbghelp h添加在工程中 3 4 配置lib文件路径 3 5 添加生成minidump文件方法 4 测试效果 5 打开dump文件进行
  • 提升网络安全防御能力的几个方面

    提升网络安全防御能力对于个人和组织来说都至关重要 网络安全是一个全面的概念 包括保护个人信息 防止恶意攻击和确保网络资源的安全 在这篇文章中 我将介绍几个方面来提高网络安全防御能力其中包括IP地址查询 首先 IP地址查询是一种网络安全工具可
  • C均值(K-means)聚类算法 实验

    文章目录 一 实验目的 二 实验原理 三 实验内容 四 实验步骤 1 1 随机创建100个样本的二维数据作为训练集并画出训练样本的散点图 1 2 3 进行聚类并画出聚类结果的散点图 2 1 导入iris数据集数据 2 2 3 进行聚类并画出
  • ROS系统开发——ROS,realsense风险和解决方案备忘录

    未能确认原因的重大风险问题 开启4个相机时 有时候会出现只能打开2个 或3个相机的情况 还有一个相机无法开启 2021 3 23 详细现象 长时间测试4个realsense相机过程中 使用roslaunch命令同时开启4个相机时 有时候随机
  • 【List】类型检查

    public static
  • @TableId(value = “id“,type = IdType.AUTO) 设置后无效的解决办法

    TableId value id type IdType AUTO TableId value id type IdType INPUT 刚开始自增一直是32位的 TableId value id type IdType AUTO priv
  • 如何查看中科院分区

    中科院分区和JCR分区查询 jcr分区查询官网 xing meng的博客 CSDN博客
  • 如何让自动化测试框架更自动化?

    一 引言 对于大厂的同学来说 接口自动化是个老生常谈的话题了 毕竟每年的MTSC大会议题都已经能佐证了 不是大数据测试 就是AI测试等等 越来越高大上了 不可否认这些专项的方向是质量智能化发展的方向 但是凡事都遵循2 8定律 80 的从事软
  • oracle中exp/imp命令详解

    ORACLE数据库有两类备份方法 第一类为物理备份 该方法实现数据库的完整恢复 但数据库必须运行在归挡模式下 业务数据库在非归挡模式下运行 且需要极大的外部存储设备 例如磁带库 第二类备份方式为逻辑备份 业务数据库采用此种方式 此方法不需要
  • 使用OpenCV+Python进行图像处理的初学者指南

    点击上方 小白学视觉 选择加 星标 或 置顶 重磅干货 第一时间送达 介绍 我们都知道一句话 每张照片都可以告诉我们一个故事 图像中可能隐藏着很多信息 我们可以用不同的方式和视角来解释它 那么 什么是图像 如何处理图像 简而言之 我们可以说
  • 类加载机制—详解

    1 类加载 class 文件中都是一个一个的二进制 通过前面个两个字节进行判断 2 双亲委托机制 class 文件通过类加载器进入到 JVM虚拟机中运行 2 1类加载器 类加载器分为两种 一种是引导类加载器 启动类加载器是已经提供好的 一种
  • 世间万物,音乐不可辜负

    世间万物 唯有爱不可辜负 爱 除了来自家人的亲情 恋人的爱情 朋友的友情 爱 还来自你对世间万物的感受 比如 美食 通过嗅觉 品尝到美味 又比如音乐 通过听觉 调动你的情绪 激发你的想象力 共情能力 愉悦你的身心 安慰你 鼓励你 今天 跟大
  • 大数据实战 Linux Ubuntu 20.04.1 server 最小化安装及其网络配置

    1 Uduntu 的诞生 Ubuntu是一个以桌面应用为主的Linux操作系统 其名称来自非洲南部祖鲁语或豪萨语的 ubuntu 一词 意思是 人性 我的存在是因为大家的存在 是非洲传统的一种价值观 buntu Linux是由南非人马克 沙
  • 【Linux篇】fwrite函数

    include
  • 深入理解 synchronized 关键字

    看书的时候 看到这里 觉得有必要记录一下 那就顺手写一下 先看一下 synchronized 的官方解释的翻译 synchronized 关键字可以实现一个简单的策略来防止线程干扰和内存一致性错误 如果一个对象对多个线程是可见的 那么该对象
  • node.JS之中转服务器

    经过前面node的学习 我们对node已经有了一定的了解下面我直接上中转服务器实现过程和思路说明 let http require http let https require https var iconv require iconv l
  • mysql的binlog详解

    author skate time 2012 03 27 mysql的binlog详解 什么是binlog binlog日志用于记录所有更新了数据或者已经潜在更新了数据 例如 没有匹配任何行的一个DELETE 的所有语句 语句以 事件 的形