MySQL-Binlog

带你解析MySQL binlog

蓝咒 提交于 2020-08-13 08:57:59
前言: 我们都知道,binlog可以说是MySQL中比较重要的日志了,在日常学习及运维过程中,也经常会遇到。不清楚你对binlog了解多少呢?本篇文章将从binlog作用、binlog相关参数、解析binlog内容三个方面带你了解binlog。 1.binlog简介 binlog即binary log,二进制日志文件。它记录了数据库所有执行的DDL和DML语句(除了数据查询语句select、show等),以事件形式记录并保存在二进制文件中。 binlog主要有两个应用场景,一是用于复制,master把它的二进制日志传递给slaves来达到master-slave数据一致的目的。二是用于数据恢复,例如还原备份后,可以重新执行备份后新产生的binlog,使得数据库保持最新状态。除去这两个主要用途外,binlog可以用于异构系统之间数据的交互,binlog完整保存了一条记录的前项和后项记录,可以用DTS服务,将MySQL数据以准实时的方式抽取到底层数据平台,比如HBase、Hive、Spark等,打通OLTP和OLAP。 binlog日志可以选择三种模式,分别是 STATEMENT 、 ROW 、 MIXED ,下面简单介绍下这三种模式: STATEMENT :基于SQL语句的复制,每一条会修改数据的sql语句会记录到binlog中。该模式下产生的binlog日志量会比较少

MySQL binlog 详解

自古美人都是妖i 提交于 2020-08-13 07:08:27
通过本文学习 MySQL 中 binlog 相关的内容,包括概述、配置及常用操作、数据恢复实战等。 1 概述 MySQL 的二进制日志 binlog 可以说是 MySQL 最重要的日志,它记录了所有的 DDL 和 DML 语句(除了数据查询语句 select ),以事件形式记录,还包含语句所执行的消耗的时间,MySQL 的二进制日志是事务安全型的。 DDL:Data Definition Language 数据库定义语言。主要的命令有 create、alter、drop 等,ddl 主要是用在定义或改变表(table)结构、数据类型、表之间的连接和约束等初始工作上,他们大多在建表时候使用。 DML:Data Manipulation Language 数据操纵语言。主要命令是 select/update/insert/delete ,就像它的名字一样,这 4 条命令是用来对数据库里的数据进行操作的语言。 二进制日志包括两类文件:二进制日志索引文件(文件名后缀为 .index ,如 mysql-bin.index ),用于记录所有的二进制文件;二进制日志文件(文件名后缀为 .00000* ,如 mysql-bin.000001 ),用于记录数据库所有的 DDL 和 DML (除了数据查询)语句事件。 binlog 日志两个最重要的使用场景:主从同步、数据恢复。 一般来说开启

mysql系列(十三)——慢查询分析工具(pt_query_digest)

百般思念 提交于 2020-08-13 03:19:57
一、安装 [root@192 ~]# wget percona.com/get/pt-query-digest [root@192 ~]# chmod u+x pt-query-digest 二、使用 常见参数 pt-query-digest [OPTIONS] [FILES] [DSN] --create-review-table 当使用--review参数把分析结果输出到表中时,如果没有表就自动创建。 --create-history-table 当使用--history参数把分析结果输出到表中时,如果没有表就自动创建。 --filter 对输入的慢查询按指定的字符串进行匹配过滤后再进行分析 --limit限制输出结果百分比或数量,默认值是20,即将最慢的20条语句输出,如果是50%则按总响应时间占比从大 到小排序,输出到总和达到50%位置截止。 --host mysql服务器地址 --user mysql用户名 --password mysql用户密码 --history 将分析结果保存到表中,分析结果比较详细,下次再使用--history时,如果存在相同的语句,且查 询所在的时间区间和历史表中的不同,则会记录到数据表中,可以通过查询同一CHECKSUM来比较某类型查询的历 史变化。 --review 将分析结果保存到表中,这个分析只是对查询条件进行参数化

如何远程备份MySQL binlog

廉价感情. 提交于 2020-08-09 12:14:52
以前备份binlog时,都是先在本地进行备份压缩,然后发送到远程服务器中。但是这其中还是有一定风险的,因为日志的备份都是周期性的,如果在某个周期中,服务器宕机了,硬盘损坏了,就可能导致这段时间的binlog就丢失了。 而且,以前用脚本对远程服务器进行备份的方式,有个缺点:无法对MySQL服务器当前正在写的二进制日志文件进行备份。所以,只能等到MySQL服务器全部写完才能进行备份。而写完一个binlog的时间并不固定,这就导致备份周期的不确定。 从MySQL5.6开始,mysqlbinlog支持将远程服务器上的binlog实时复制到本地服务器上。 mysqlbinlog的实时二进制复制功能并非简单的将远程服务器的日志复制过来,它是通过MySQL 5.6公布的Replication API实时获取二进制事件。本质上,就相当于MySQL的从服务器。与普通服务器类似,主服务器发生事件后,一般都会在0.5~1秒内进行备份。 备份命令 mysqlbinlog --read- from -remote-server --raw --host= 192.168 . 244.145 --port= 3306 --user=repl --password=repl --stop-never mysql-bin. 000001 解释如下: --read-from-remote-server

详细分析MySQL的日志(一)

纵饮孤独 提交于 2020-08-09 05:20:53
官方手册: https://dev.mysql.com/doc/refman/5.7/en/server-logs.html 不管是哪个数据库产品,一定会有日志文件。在MariaDB/MySQL中,主要有5种日志文件: 1.错误日志(error log):记录mysql服务的启停时正确和错误的信息,还记录启动、停止、运行过程中的错误信息。 2.查询日志(general log):记录建立的客户端连接和执行的语句。 3.二进制日志(bin log):记录所有更改数据的语句,可用于数据复制。 4.慢查询日志(slow log):记录所有执行时间超过long_query_time的所有查询或不使用索引的查询。 5.中继日志(relay log):主从复制时使用的日志。 除了这5种日志,在需要的时候还会创建DDL日志。本文暂先讨论错误日志、一般查询日志、慢查询日志和二进制日志,中继日志和主从复制有关,将在复制的章节中介绍。下一篇文章将介绍innodb事务日志,见: MySQL的事务日志 。 1.日志刷新操作 以下操作会刷新日志文件,刷新日志文件时会关闭旧的日志文件并重新打开日志文件。对于有些日志类型,如二进制日志,刷新日志会滚动日志文件,而不仅仅是关闭并重新打开。 mysql > FLUSH LOGS; shell > mysqladmin flush - logs shell >

删库不跑路,MySQL数据来恢复

帅比萌擦擦* 提交于 2020-08-06 21:14:58
日常工作中,总会有因手抖、写错条件、写错表名、错连生产库造成的误删库表和数据的事情发生。那么,如果连数据都恢复不了,还要什么 DBA。 1. 前言 数据恢复的前提的做好备份,且开启 binlog,格式为 row。如果没有备份文件,那么删掉库表后就真的删掉了,lsof 中还有记录的话,有可能恢复一部分文件。但若刚好数据库没有打开这个表文件,那就只能跑路了。如果没有开启 binlog,那么恢复数据后,从备份时间点开始的数据都没了。如果 binlog 格式不为 row,那么在误操作数据后就没有办法做闪回操作,只能老老实实地走备份恢复流程。 2. 直接恢复 直接恢复是使用备份文件做全量恢复,这是最常见的场景。 2.1 mysqldump 备份全量恢复 使用 mysqldump 文件恢复数据非常简单,直接解压了执行: gzip -d backup.sql.gz | mysql -u<user> -h<host> -P<port> -p 2.2 xtrabackup 备份全量恢复 恢复过程: # 步骤一:解压(如果没有压缩可以忽略这一步) innobackupex --decompress <备份文件所在目录> # 步骤二:应用日志 innobackupex --apply-log <备份文件所在目录> # 步骤三:复制备份文件到数据目录 innobackupex --datadir=

MySQL日志简介

别等时光非礼了梦想. 提交于 2020-08-06 10:57:22
MySQL中的日志主要分为以下几种: 查询日志 慢查询日志 错误日志 二进制日志 中继日志 事务日志 说明: 支持本文实验使用的linux系统是CentOS7版本,使用的数据库是base源自带的MariaDB,数据库使用的存储引擎使用默认的InnoDB 1、查询日志 记录查询语句、日志存储位置 日志的存放位置有两个地方:一是存储在指定文件中,一是存储在指定的表中。考虑到I/O压力,一般二者不会同时记录 MariaDB [mysql]> SHOW VARIABLES LIKE 'general%'; +------------------+-------------+ | Variable_name | Value | +------------------+-------------+ | general_log | ON | | general_log_file | centos7.log | +------------------+-------------+ 2 rows in set (0.00 sec) #general_log默认是关闭的 从上述代码可以看出,查询日志具有两个变量; 下面来查看general_log表的详细信息: MariaDB [mysql]> DESC general_log; +--------------+------------------+-

Mysql 通过binlog日志恢复数据

主宰稳场 提交于 2020-08-05 23:36:34
Binlog日志,即binary log,是二进制日志文件,有两个作用,一个是增量备份,另一个是主从复制,即主节点维护一个binlog日志文件,从节点从binlog中同步数据,也可以通过binlog日志来恢复数据 1,登录mysql查看binlog日志的状态,输入show variables like ‘%log_bin%’;查看binlog为off关闭状态 2,开启mysql binlog日志,进入mysql配置文件(vi /etc/my.cnf) 在mysqld区域内添加如下内容,①server-id = 1(单个节点id) ②log-bin= /var/lib/mysql/mysql-bin(位置一般和mysql库文件所在位置一样) ③expire_logs_days = 10(表示此日志保存时间为10天), 重启mysqld ,再次查看binlog日志开启状态为ON 3,Binlog日志包括两类文件;第一个是二进制索引文件(后缀名为.index),第二个为日志文件(后缀名为.00000*),记录数据库所有的DDL和DML(除了查询语句select)语句事件 4,查看所有binlog日志文件列表:show master logs; 5,查看最后一个binlog日志的编号名称及其最后一个操作事件pos结束点的值:show master status; 6,Flush logs

MYSQL数据库学习系列五

我是研究僧i 提交于 2020-07-28 04:24:52
MYSQL数据库学习系列五 五.MYSQL运维实践 5.1-MySQL日志系统 什么是日志 日志(log)是一种顺序记录事件流水的文件 记录计算机程序运行过程中发生了什么 多种多样的用途 o帮助分析程序问题 o分析服务请求的特征、流量等 o判断工作是否成功执行 o等等…… MySQL日志的分类 服务器日志 o记录进程启动运行过程中的特殊事件,帮助分析MySQL服务遇到的问题 o根据需求抓取特定的SQL语句,追踪性能可能存在的问题的业务SQL 事务日志 o记录应用程序对数据的所有更改 o可用于数据恢复 o可用于实例间数据同步 分类 日志名称 服务器日志 服务错误日志 服务器日志 慢查询日志 服务器日志 综合查询日志 事务日志 存储引擎事务日志 事务日志 二进制日志 服务错误日志 记录实例启动运行过程中重要消息 配置参数 olog_error = /data/mysql_data/node-1/mysql.log 内容并非全是错误消息 如果mysqld进程无法正常启动首先查看错误日志 慢查询日志 记录执行时间超过一定阈值的SQL语句 配置参数 slow_query_log = 1 slow_query_log_file = /data/mysql_data/node-1/mysql-slow.log long_query_time = 5

mysqlbinlog 工具用法

为君一笑 提交于 2020-07-27 01:12:00
打开binlog日志 /etc/my.cnf的[mysqld]下添加或修改 log-bin=mysql-bin 基本用法:mysqlbinlog binlog日志 --start-position= 初始位置 --stop-position= 结束位置 -r pos.sql 复制日志到pos.sql --start-datetime 指定开始时间 --stop-datetime 指定结束时间 -d 截取指定库的binlog 来源: oschina 链接: https://my.oschina.net/u/3966437/blog/4277416