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数 ...
随机推荐
- java基础-day33
第10天 Transaction事务 今日内容介绍 u 事务管理 u 转账案例 u 事务总结 第1章 事务管理 1.1 事务概述 l 事务指的是逻辑上的一组操作,组成这组操作的各个单元要么全都 ...
- Codeforces Round #265 (Div. 2) E. Substitutes in Number
http://codeforces.com/contest/465/problem/E 给定一个字符串,以及n个变换操作,将一个数字变成一个字符串,可能为空串,然后最后将字符串当成一个数,取模1e9+ ...
- hdu 5060 五种情况求圆柱体与球体交
http://acm.hdu.edu.cn/showproblem.php?pid=5060 官方题解http://bestcoder.hdu.edu.cn/给复杂了 实际上用圆柱体与球体体积差的积分 ...
- logrotate 日志切割工具
相关原理参见:https://www.cnblogs.com/sailrancho/p/4784763.html 一.相关目录: 程序:/usr/sbin/logrotate配置:/etc/logro ...
- What mind mapping software applications do you recommend.
选自 https://members.iqmatrix.co/creative-mind-maps I personally use Mindjet MindManager. This is one ...
- 设置cxGrid中RichEdit输入内容的格式
设置cxGrid中RichEdit输入内容的格式 (2013-09-05 23:25:31) 转载▼红鱼儿新浪博客 分类: Delphi 遇到这样的问题,利用cxGrid,将一列定义为RichEd ...
- 在linux上搭建nexus私服(CentOS7)
1.下载nexus安装包,下载地址 https://www.sonatype.com/download-oss-sonatype?hsCtaTracking=920dd7b5-7ef3-47fe-96 ...
- 工作随笔——elasticsearch数据冷热分离、数据冷备
概述: 适合日志类型的数据存储方案.即当日数据写入,历史数据只读. 节省部分硬件成本.热数据采用更好的硬件. 环境: 已有6个ES节点,使用docker-compose方式搭建. es1:master ...
- 01-Python的基础知识3
- 数字 - 数字常量: - 整型: - 概念: - 指代平常数学上的整数常量.Python中整型指代int类型. - 基本运算: - 可以执行平常的+,-,*,/ ,%以及其他操作 假设a=15,b ...
- iOS-自定义NavigationItem返回按钮【pop返回按钮】
在用navigationVC时,返回按钮有时候不想用系统的,这里用继承的方式把按钮替换了,同时也可以实现系统的右滑返回,很简单: 1.创建基类 BasePopViewController 创建一个用于 ...