mysql 二进制日志
1.日志类型
二进制日志记录了所有对mysql数据库的修改事件,包括增删改事件和对表结构的修改事件。
2.配置使用二进制日志
在my.ini 配置
log-bin=mysql-bin
3.二进制日志格式
基于段的日志格式
binlog_format=STATEMENT
记录了操作的sql语句。
优点:
日志记录量相对较小,节约磁盘及网络I/O,只对以一条记录修改或插入ROW格式所产生日量小于段产生的日志量。
缺点:
必须记录上下文信息,保证语句在从服务器上的执行结果和在主服务器上相同。
特定函数如UUID,USER()这样非确定性的函数无法复制。
可能造成mysql复制的主备服务器数据不一致,从而中断复制链路。
显示binlog 格式
show variables like 'binlog_format';
set session binlog_format=statement;
显示二进制日志
show binary logs;
//刷新日志
flush logs;
在命令行下执行:
mysqlbinlog ../data/mysql-bin.000003
基于行的日志格式
将my.ini 二进制格式修改为binlog_format=ROW
row 的优点
row格式可以避免MYSQL复制中出现主从不一致的问题,官方推荐这种格式。
同一个sql语句修改了10000条数据的情况下。基于段的日志只会记录这个SQL语句。基于行的日志会有10000条记录,分别记录每一行数据的修改。
1.是mysql主从复制更加安全。
2.对每一行数据修改比基于段的复制高效。
如果误操作修改了数据库中的数据,同时没有备份可以恢复时,我们就可以通过分析二进制日志,对日志中记录的数据修改操作做反向处理的方式来达到恢复数据的目的。
缺点:
记录日志量较大
binlog_row_image=[full,minimal,noblob]
full : 记录列的所有修改
minimal :只记录修改的列。
noblob :如果是text类型或clob字段,不记录 这些日志。
使用 mysqlbinlog -vv ../data/mysql-bin.000005 查看明细日志。
set session binlog_row_image=minimal
混合日志格式:
binlog_format=MIXED
特点:
根据sql语句由系统决定在记录端和基于行的日志格式中进行选择。
数据量大小由所执行的SQL决定。
如何选择二进制格式
建议
binlog_formart =mixed
or
binlog_format=row;
binlog_row_image=minimal;
4.复制方式:
1.基于SQL语句的复制(SBR)
优点:
生成日志量少,节约网络传输的ID.
并不要求对主从数据库的表定义完全相同。
相比于基于行的复制方式更为灵活。
缺点:
对于非确定事件,无法保证主从复制数据的一致性。
对于存储过程,触发器
2.基于行的复制(RBR)
优点:
可以应用于任何SQL的复制包括非确定性函数,存储过程等。
可以减少数据库锁的使用。
缺点:
要求主从数据库的表结构相同,否则就会中断复制。
5.复制工作方式
1.主服务器将变更写入二进制日志。
2.从读取主的二进制日志变更并写入到relay_log中。
基于日志点的复制,基于GTID的复制。
3.在从上重放relay_log中的日志。
基于SQL端的日志是在从库上重新执行记录的SQL。
基于行的日志则是在从库上直接应用对数据行的修改。
mysql 二进制日志的更多相关文章
- mysql 二进制日志后缀数字最大为多少
之前看到mysql二进制日志后面会加一个以数字递增为结尾的后缀,一直在想当尾数到达999999后会发生什么情况,先查了一下官网,对后缀有这样一句介绍:The server creates binary ...
- MySQL二进制日志的备份和恢复
二进制日志:记录数据库修改的相关操作,作用是即时点回复,主从复制 可以按时间滚动,也可以按大小滚动 server-id:服务器身份标识 一.二进制文件的删除方法,千万不要手动删除 PURGE BINA ...
- 删除MySQL二进制日志
服务器上的120G SSD硬盘空间用了92%,检查后发现,原来是 MySQL的二进制日志没有及时清除,占用了大量的空间, 于是直接用命令:reset master 一把删干净了. 1 reset ma ...
- MySQL二进制日志总结
二进制日志简单介绍 MySQL的二进制日志(binary log)是一个二进制文件,主要用于记录修改数据或有可能引起数据变更的MySQL语句.二进制日志(binary log)中记录了对MySQL数据 ...
- MySQL二进制日志(binary log)总结
本文出处:http://www.cnblogs.com/wy123/p/7182356.html (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错 ...
- MySQL二进制日志功能介绍
二进制日志记录所有更新数据的SQL语句,其中也包含可能更新数据的SQL语句,例如DELETE语句执行过程中无匹配的行.二进制日志中还包含了与执行SQL语句相关的内容,例如SQL语句执行的时间.错误代码 ...
- 查看mysql二进制日志报错问题
在排查网站被黑时想通过Mysql二进制日志找出修改字段时间,但是使用mysqlbinlog报错: [root@zfszsw1 bin]# ./mysqlbinlog /opt/mysql-bin.00 ...
- MySQl Study学习之--MySQl二进制日志管理
MySQl Study学习之--MySQl二进制日志管理 MySQL二进制日志(Binary Log) a.它包括的内容及作用例如以下: 包括了全部更新了数据或者已经潜在更新了数据(比方没 ...
- Mysql 二进制日志备份还原
Mysql 二进制日志备份还原 一.开启二进制日志 1.进入配置文件[mysqld]下添加配置 方案一 vim /etc/my.cnf log-bin = /usr/local/mysql/logs/ ...
- 浅析MySQL二进制日志
查看MySQL二进制文件中的内容有两种方式 1. mysqlbinlog 2. SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offs ...
随机推荐
- Oracle常用操作-----(二)
Oracle主要类型函数: 单行函数:只能输入一行结果,返回一个结果.常见的单行函数有: 字符函数 数字函数 转换函数 日期函数 2.聚合函数:同时可以对多行数据进行操作,并返回一个结果.(AVG.S ...
- C# UDP 连接通信 简单示例
Udp.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; using S ...
- CentOS 命令模式下设置静态IP
ASP.NET程序猿第一次修改IP,之前没有接触过Linux,有点伤不起... # cd /etc/sysconfig/network-scripts/ # ls 会看到 ifcfg-eth0 if ...
- 大型网站演化(转载 http://homeway.me/2014/12/10/think-about-distributed-clusters/)
0x01.大型网站演化 简单说,分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率. 集群主要分为:高可用集群(High Availability Clu ...
- 简介AngularJS中使用factory和service的方法
AngularJS支持使用服务的体系结构“关注点分离”的概念.服务是JavaScript函数,并负责只做一个特定的任务.这也使得他们即维护和测试的单独实体.控制器,过滤器可以调用它们作为需求的基础.服 ...
- jQuery的deferred对象详解(转载)
本文转载自: jQuery的deferred对象详解(转载)
- JQuery MultiSelect(左右选择框)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- [转]MySQL排序原理与案例分析
这篇文章非常好,就把他转过来 前言 排序是数据库中的一个基本功能,MySQL也不例外.用户通过Order by语句即能达到将指定的结果集排序的目的,其实不仅仅是Order by语句,Grou ...
- Knights of the Round Table-POJ2942(双连通分量+交叉染色)
Knights of the Round Table Description Being a knight is a very attractive career: searching for the ...
- javscript 中的术语和俚语
语言中俚语和方言.在JavaScript中也有一些俚语或者说是术语,看似奇淫巧技,还是有一些用处,有三种语言组件可以来构造术语:强转.逻辑运算符和位变换. 1.强转:在javascript和大部分的语 ...