MySQL和Mariadb二进制日志binlog详解
Mariadb/mysql提供了4中不同的日志,分别是错误日志(error.log)、普通日志(general log)、慢日志(slow log)以及二进制日志(binlog)。错误日志记录了系统启动、运行以及停止过程中遇到的一些问题;普通日志记录了Mariadb执行的所有语句以及语句开始执行的时间等信息,用户可以选择性的打开它;慢日志记录了Mariadb所有慢查询的相关信息;而二进制日志则以事件的形式记录了mariadb的库表结构以及表数据的所有变更信息。
一:binlog的作用
l 复制:在Mariadb/mysql的主从结构中,主库的binlog记录了主库的所有更改操作,从库通过读取主库的binlog,在本地重放获取的binlog,这样从库就拥有和主库相同的数据,达到复制目的。
l 备份恢复:binlog记录了数据库的所有更改信息,所以当Mariadb/mysql发生崩溃的时候,能够以最近备份点作为起点,然后执行在备份点之后产生的binlog中所有事件,实现数据库最大可能的恢复。
- index文件按照书序记录了Mariadb/Mysql使用的所有binlog文件,管理binlog文件。
二:binlog·的3种格式
- STATEMENT:顾名思义,STATEMENT格式的binlog记录的是数据库上执行的原生SQL语句
l ROW:这种格式的binlog记录的是数据表的行是怎样被修改的。
l MIXED:如果设置了这种格式,Mariadb/Mysql会在一些特定的情况下自动从STATEMENT格式切换到ROW格式。例如,包含UUID等不确定性函数的语句,引用了系统变量的语句,等等。
三:开启binlog
[mysqld]
log-bin = base-name
BINLOG_FORMAT = ROW
四:binlog的相关参数
- max_binlog_size参数 此参数来限定单个binlog文件的大小。binlog文件可能会大于max_binlog_size参数设定的阀值,因为一个事务所产生的所有事件必须记录在同一个binlog文件中。
- binlog过滤器 拥有root权限的用户可以通过执行SET sql_log_bin = 0命令来禁用当前会话,该回话执行的所有操作都不会记录在binlog中。
sync_binlog参数;默认情况下syc_binlog=0,binlog文件在每次写入内容后是不会立刻持久化到磁盘上的具体的持久化操作会交给操作系统来做。真阳当操作系统崩溃的时候,对binlog文件进行的修改可能会丢失,从而造成binlog文件的数据丢失和不一致性。为了避免发生这种情况,可以将sync_binlog配置成1,这样在将事务写入到binlog文件之后会立即执行fsync操作将binlog文件的修改同步到磁盘上。但这样会降低Mariadb的性能,因为sync是个昂贵的系统调用,也可以将sync_binlog配置成一个整数N,指定在写入N个是事务之后才执行一次fsync操作。
bin-log事件
通过执行show binlog events in "binlog-file"命令来查看指定binlog文件中的事件。如果binlog格式为STATEMENT ,还能看出具体执行的SQL语句。
五:清理binlog
手动清理binlog的方式有两种,一种是使用Mariadb提供的purge命令,一种是通过系统自带的rm命令
purge {binary | master } logs to "binlog-file-name"
purge {binary | master } logs before "datetime-expi"
其中第一种形式的purge命令的作用是将binlog—file-name之前的所有binlog文件清理掉,而第二种形式的purge命令是将最后修改时间早于datetime-expi的binlog文件清理掉
使用rm命令手动清理binlog的流程如下。
(1)确保你的mysql处于停止状态
(2)使用rm命令按顺序删除binlog文件
(3)修改index文件,把已经删除的binlog文件从index文件中删除
自动清理binlog
在启动mysql server的时候,携带expire_log_days=N 参数(0≤N≤99),或则在配置文件中添加expire_logs_days=N选项,这样mysql只会保存N天的binlog,过期的binlog会被自动清理掉。
六:MySQL和Mariadbmysqlbinlog工具
mysqlbilog工具可以将binlog中事件包含的信息以文本的形式打印出来。
mysqlbinlog [options] binlog-file ...
通过mysqlbinlog进行恢复主要有一下两步,
1:使你的数据库恢复到最近备份点的状态
2:执行mysqlbinlog your-bin-log | mysql -u root -p ,将binlog中记录的修改,反映到数据库中。(如果有多个binlog文件,本步需要执行多次)
MySQL和Mariadb二进制日志binlog详解的更多相关文章
- MySQL日志功能详解
MySQL日志功能详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查询日志 它是用来保存所有跟查询相关的日志,这种日志类型默认是关闭状态的,因为MySQL的用户有很多,如果 ...
- MySQL 日志管理详解
大纲 一.日志分类 二.日志详解 注:MySQL版本,Mysql-5.5.32(不同版本的mysql变量有所不同) 一.日志分类 错误日志 查询日志 慢查询日志 二进制日志 中继日志 事务日志 滚动日 ...
- mysql数据恢复,binlog详解
个人博客:mysql数据恢复,binlog详解 binlog日志恢复数据,是挽救错误操作和数据损坏一根救命稻草,所以认识和使用binglog对于技术人员还是很有必要的 binlog一般用于 主从复制 ...
- mysql导出csv/sql/newTable/txt的方法,mysql的导入txt/sql方法...mysql备份恢复mysqlhotcopy、二进制日志binlog、直接备份文件、备份策略、灾难恢复.....................................................
mysql备份表结构和数据 方法一. Create table new_table_nam备份到新表:MYSQL不支持: Select * Into new_table_name from old_t ...
- MySQL Binlog详解
MySQL Binlog详解 Mysql的binlog日志作用是用来记录mysql内部增删改查等对mysql数据库有更新的内容的记录(对数据库的改动),对数据库的查询select或show等不会被bi ...
- mysql dba系统学习(6)二进制日志binlog之二
MySQL 5.5 中对于二进制日志 (binlog) 有 3 种不同的格式可选:Mixed,Statement,Row,默认格式是 Statement.总结一下这三种格式日志的优缺点.MySQL R ...
- mysql 开发进阶篇系列 39 mysql日志之二进制日志(binlog)
一.概述 二进制日志(binlog)记录了所有的DDL(数据定义语言)语句和DML(数据操纵语言)语句,但是不包括数据查询语句, 语句以"事件"的形式保存,它描述了数据的更改过程, ...
- (转)总结之:CentOS 6.5 MySQL数据库的基础以及深入详解
总结之:CentOS 6.5 MySQL数据库的基础以及深入详解 原文:http://tanxw.blog.51cto.com/4309543/1395539 前言 早期MySQL AB公司在2009 ...
- MySQL数据库使用mysqldump导出数据详解
mysqldump是mysql用于转存储数据库的实用程序.它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等.接下来通过本文给大家介绍MySQL数 ...
随机推荐
- lowbit(x)
int Lowbit(int x) { return x&(-x); } lowbit当中x,-x,补码,反码,傻傻分不清楚.我们先看看两个二进制数相减的问题 两个二进制数相减的相关问题 两个 ...
- hdu 3191 次短路的长度和个数
http://acm.hdu.edu.cn/showproblem.php?pid=3191 求次短路的长度和个数 相关分析在这里http://blog.csdn.net/u012774187/art ...
- 创建Pods私有库
Pods私有库创建步骤 创建私有 Spec Repo 创建Pod项目工程文件 创建podspec文件 本地测试podsspec文件 向Spec Repo提交podspec Pod库使用 更新维护pos ...
- 5.css背景以及书写位置
1.样式表书写位置 ◆内嵌式写法 <head> <style type=”text/css”> 样式表写法 </style> </head> 2.◆外链 ...
- Ocelot——初识基于.Net Core的API网关
前言 前不久看到一篇<.NET Core 在腾讯财付通的企业级应用开发实践>,给现在研究.Net Core及想往微服务方向发展的人来了一剂强心针.于是我也就立刻去下Ocelot的源码及去阅 ...
- NLog配置JsonLayout中文输出为unicode问题
日志输出现要改为json格式,网上查询layout配置为JsonLayout就可以了,结果发现输出中文为unicode编码,看很多文章说配置encode="false"就可以了,结 ...
- 【.NET架构】BIM软件架构02:Web管控平台后台架构
一.前言 之前一篇叙述的是Revit插件(桌面软件)的软件架构,本篇将开始叙述Web项目的架构方案.今年一月在老东家加入BIM平台部门,为一些大型国家项目搭建BIM管控平台,业主使用管控 ...
- sharepoint support ashx file
Hello, I did the steps from the tutorial you are using. I have received the same error when I did no ...
- 【JavaScript】js 中一些需要注意的问题
关于js中逻辑运算符 sort()方法 1. 关于js中逻辑运算符:|| 和 && 在js逻辑运算中,0."".null.false.undefined.NaN都会 ...
- [学习笔记]BSGS
\(\%\%\% Fading\) 早就会了,我最近才理解,当时颓废太多忘学了 1.[SDOI2013]随机数生成器 当天正好在学数列,回来发现用必修五的知识就没了-- 不过特判好烦啊. \(Code ...