MySQL-Binlog

MySQL之二进制日志

天涯浪子 提交于 2021-02-10 09:50:17
一、Binlog日志格式 根据日志定义的格式不一样,可以分为Statement格式、Row格式或者MIXED格式 mysql5.6----》 | binlog_format | STATEMENT | mysql5.7---》 | binlog_format | ROW | 理解三种不同的格式 A: Statement格式 说明:基于语句的,记录操作的sql语句 优点: binlog文件大小较小 易于理解,方便阅读 日志中包含原始SQL,方便统计和审计 缺点: 存在安全隐患,可能导致主从不一致 对一些系统函数不能复制,比如sysdate,uuid等 不支持不确定的SQL语句 (以上格式不推荐使用,但是在mysql5.7以前都是默认的格式) B: Row格式 说明: 记录操作的每一行数据 优点: 相比statement更加安全的复制格式 系统的特殊函数也可以复制 更少的锁 数据一致性高 缺点: binlog 文件会比较大 无法从binlog中看见用户执行的SQL 每个表最好都要有一个主键 (推荐使用) 从mysql5.7之后,默认的格式为Row格式 Table_map: 记录表的元数据信息 ROWS_EVENT分为三种:WRITE_ROWS_EVENT,UPDATE_ROWS_EVENT,DELETE_ROWS_EVENT,分别对应insert,update和delete操作。

记录MySQL 8在windows 10系统下用Delete语句删除了记录用自带的mysqlbinlog复原方法

穿精又带淫゛_ 提交于 2021-02-01 09:05:50
前提条件: 1.你的MySQL数据库开了binlog功能; 2.用了Delete删除语句,删除的是表里的记录,不是整个表; 怎么看我的MySQL数据开没开启binlog功能呢? 登入mysql,然后输入指令: show variables like '%log_bin%'; 第二个红框显示ON说明已经开启binlog功能; Variable_name Value log_bin ON 我安装MySQL 8 的时候没有注意这里,好像是默认打开的;在我的配置文件里也没有显示的有,可是就是开了,MySQL 8就是这么好用么?; 没打开binlog的怎么打开呢? 打开my.ini文件,添加如下配置,重启mysql即可开启 # log-bin log - bin = mysql - bin binlog_format = ROW 我没试过的啊,因为我的已经打开了的… 然后输入指令,查到有3个binlog日志文件: show binary logs ; 找到你的这几个文件位置,我的是在MySQL的安装目录下和bin文件夹平级的data目录下: 这3个文件的修改日期以15结尾的这个是最后修改的,我刚好是这个时候做了删除一条记录的测试,因此我重点准备放在这个文件上; 输入指令: show binlog events in 'binlog.000015' ; 看到有个Delete_rows

Docker下mysql容器开启binlog日志(保留7天)

安稳与你 提交于 2021-01-07 08:21:39
现有需求开启用Docker容器启动的mysql数据库的binlog,以作为 日志记录 和 数据恢复 , 我们了解了MySQL的binlog日志的开启方式以及binlog日志的一些原理和常用操作,我们知道,binlog有两大作用,一个是使用binlog恢复数据,另一个就是用来做主从复制。本篇笔记就是来记录如何使用开启binlog日志和做数据恢复。当然了,使用binlog日志所恢复的数据只能是部分数据,并不能够使用binlog日志来做数据库的备份,如果想要做数据库备份,依然要使用我们传统的备份方法,而binlog可以作为增量备份。 以供笔记和学习,以下就是开启binlog日志的步骤过程: 1.首先,在实现前我是在虚拟机上做的实验,环境如下: [root@localhost cloud]# cat /etc/centos-release CentOS Linux release 7.4.1708 (Core) 数据库镜像版本 [root@localhost cloud]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/mysql 5.7 5195076672a7 13 days ago 371 MB 2.下载mysql 数据库镜像 docker pull mysql:5.7 3

mysql数据库误删除后的数据恢复操作说明

江枫思渺然 提交于 2020-12-27 01:00:58
在日常运维工作中,对于mysql数据库的备份是至关重要的!数据库对于网站的重要性使得我们对mysql数据的管理不容有失! 然后,是人总难免会犯错误,说不定哪天大脑短路了来个误操作把数据库给删除了,怎么办??? 下面,就mysql数据库误删除后的恢复方案进行说明。 一、工作场景 (1)MySQL数据库每晚12:00自动完全备份。 (2)某天早上上班,9点的时候,一同事犯晕drop了一个数据库! (3)需要紧急恢复!可利用备份的数据文件以及增量的binlog文件进行数据恢复。 二、数据恢复思路 (1)利用全备的sql文件中记录的CHANGE MASTER语句,binlog文件及其位置点信息,找出binlog文件中增量的那部分。 (2)用mysqlbinlog命令将上述的binlog文件导出为sql文件,并剔除其中的drop语句。 (3)通过全备文件和增量binlog文件的导出sql文件,就可以恢复到完整的数据。 三、实例说明 ---------------------------------------- 首先,要确保mysql开启了binlog日志功能 在/etc/my.cnf文件里的[mysqld]区块添加: log-bin=mysql-bin 然后重启mysql服务 ---------------------------------------- (1

MySQL binlog server

扶醉桌前 提交于 2020-12-23 00:32:39
从5.6版本开始,可以利用 mysqlbinlog命令把远程机器的日志备份到本地目录,这样就更加方便快捷的实现一个binlog server。 环境介绍:192.168.56.100是备份服务器,192.168.56.101是需要备份binlog的MySQL服务器。 重点参数介绍: -R,--read-from-remote-server 代表从远程MySQL服务器上读取binlog。 -raw 以binlog格式存储日志,方便后期使用。 --stop-never 连接到远程的MySQL服务器上读取日志,直到远程的服务关闭后才会退出,或者被kill掉。 mysql-bin.*** 代表从哪个日志开始备份。 --stop-never-slave-server-id mysqlbinlog 相当于从库拉取主库的日志,所有需要server-id来做一个唯一的标识。 操作如下: 现在56.100 创建一个binlog的备份目录: mkdir -p /data/binlogbak 再在56.100上执行远程复制binlog命令,从 mysql-binlog.00008 开始备份,运行下命令时,会把文件传到此文件下,所以要切换到 /data/binlogbak 下运行: mysqlbinlog --raw --read-from-remote-server --stop-never -

MySQL高可用架构(MHA)与Atlas读写分离

非 Y 不嫁゛ 提交于 2020-12-14 22:11:50
1.1 MHA简介 1.1.1 MHA软件介绍   MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中, MHA能做到在10~30秒之内自动完成数据库的故障切换操作 ,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。   MHA能够在较短的时间内实现自动故障检测和故障转移,通常在10-30秒以内;在复制 框架中,MHA能够很好地解决复制过程中的数据一致性问题,由于不需要在现有的 replication中添加额外的服务器,仅需要一个manager节点,而一个Manager能管理多套复制,所以能大大地节约服务器的数量;另外,安装简单,无性能损耗,以及不需要修改现 有的复制部署也是它的优势之处。   MHA还提供在线主库切换的功能,能够安全地切换当前运行的主库到一个新的主库中 (通过将从库提升为主库),大概 0.5-2秒 内即可完成。   该软件由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点)。MHA Manager可以单独部署在一台独立的机器上管理多个master-slave集群

MySQL之mysqldump数据备份还原

主宰稳场 提交于 2020-11-25 02:04:08
一 mysqldump指令实现数据备份、mysql指令实现数据还原   经常有朋友问我,DBA到底是做什么的,百科上说:数据库管理员(Database Administrator,简称DBA),是从事管理和维护数据库管理系统(DBMS)的相关工作人员的统称,属于运维工程师的一个分支,主要负责业务数据库从设计、测试到部署交付的全生命周期管理。DBA的核心目标是保证数据库管理系统的稳定性、安全性、完整性和高性能。   百科出来的内容总是那么的专业,让人看完之后的感觉是很解释的很好,但是我没有看懂或者似懂非懂的模糊感。。哈哈,其实我认为,DBA主要做三件事情:1.保证公司的数据不丢失不损坏 2.提高数据库管理系统的工作性能   对于现在的公司来讲,数据变得尤为重要,可以说最重要,你的网站可以无法访问,服务器可以宕机,但是数据绝对不能丢,所以我们本节内容就冲着如果保护好数据而来的。本篇博客的内容并不是很深入,毕竟不是专业的DBA,只是作为超哥的讲课内容,让大家学一些数据备份的基本操作,入门级别咱们只讲一下mysqldump指令,至于如果做主从复制,双机热备,数据库高可用,数据库集群,大家可以去看我其他的博客,博客写完了,目前还在整理,整理好之后我就发出来供大家批评指正,共同学习~~~,因为毕竟咱们学的是开发,本篇内容就当作是拓展自己的知识领域吧,对你来讲都是很有好处的~~~大家加油吧  

MySQL数据备份与还原(mysqldump)

梦想与她 提交于 2020-11-24 19:26:31
一 mysqldump指令实现数据备份、mysql指令实现数据还原   经常有朋友问我,DBA到底是做什么的,百科上说:数据库管理员(Database Administrator,简称DBA),是从事管理和维护数据库管理系统(DBMS)的相关工作人员的统称,属于运维工程师的一个分支,主要负责业务数据库从设计、测试到部署交付的全生命周期管理。DBA的核心目标是保证数据库管理系统的稳定性、安全性、完整性和高性能。   百科出来的内容总是那么的专业,让人看完之后的感觉是很解释的很好,但是我没有看懂或者似懂非懂的模糊感。。哈哈,其实我认为,DBA主要做三件事情:1.保证公司的数据不丢失不损坏 2.提高数据库管理系统的工作性能   对于现在的公司来讲,数据变得尤为重要,可以说最重要,你的网站可以无法访问,服务器可以宕机,但是数据绝对不能丢,所以我们本节内容就冲着如果保护好数据而来的。本篇博客的内容并不是很深入,毕竟不是专业的DBA,只是作为超哥的讲课内容,让大家学一些数据备份的基本操作,入门级别咱们只讲一下mysqldump指令,至于如果做主从复制,双机热备,数据库高可用,数据库集群,大家可以去看我其他的博客,博客写完了,目前还在整理,整理好之后我就发出来供大家批评指正,共同学习~~~,因为毕竟咱们学的是开发,本篇内容就当作是拓展自己的知识领域吧,对你来讲都是很有好处的~~~大家加油吧  

MySQL数据备份与还原(mysqldump)

∥☆過路亽.° 提交于 2020-11-24 09:43:36
一 mysqldump指令实现数据备份、mysql指令实现数据还原   经常有朋友问我,DBA到底是做什么的,百科上说:数据库管理员(Database Administrator,简称DBA),是从事管理和维护数据库管理系统(DBMS)的相关工作人员的统称,属于运维工程师的一个分支,主要负责业务数据库从设计、测试到部署交付的全生命周期管理。DBA的核心目标是保证数据库管理系统的稳定性、安全性、完整性和高性能。   百科出来的内容总是那么的专业,让人看完之后的感觉是很解释的很好,但是我没有看懂或者似懂非懂的模糊感。。哈哈,其实我认为,DBA主要做三件事情:1.保证公司的数据不丢失不损坏 2.提高数据库管理系统的工作性能   对于现在的公司来讲,数据变得尤为重要,可以说最重要,你的网站可以无法访问,服务器可以宕机,但是数据绝对不能丢,所以我们本节内容就冲着如果保护好数据而来的。本篇博客的内容并不是很深入,毕竟不是专业的DBA,只是作为超哥的讲课内容,让大家学一些数据备份的基本操作,入门级别咱们只讲一下mysqldump指令,至于如果做主从复制,双机热备,数据库高可用,数据库集群,大家可以去看我其他的博客,博客写完了,目前还在整理,整理好之后我就发出来供大家批评指正,共同学习~~~,因为毕竟咱们学的是开发,本篇内容就当作是拓展自己的知识领域吧,对你来讲都是很有好处的~~~大家加油吧  

Mysql 工具mysqlbinlog

浪子不回头ぞ 提交于 2020-11-21 03:59:57
【1】mysqlbinlog工具 在Windows环境下,安装完成Mysql后,在安装目录bin下会存在mysqlbinlog.exe应用程序。 binlog是二进制内容文件,人类是无法直视的。而mysqlbinlog这个工具是用来辅助人类查看Mysql数据库binlog文件内容的。 (1)但是,利用mysqlbinlog将binlog文件转换为人类可读的内容时报错: D:\MySql\mysql-8.0.12-winx64\bin>mysqlbinlog.exe ../data/binlog.000114 mysqlbinlog: [ERROR] unknown variable 'default-character-set=utf8mb4' (2)分析原因 因为mysqlbinlog这个工具无法识别binlog中的配置中的default-character-set=utf8mb4这个指令。 (3)解决方案 两个方法可以解决这个问题 [1] 修改配置 在MySQL的配置my.ini中将default-character-set=utf8mb4 修改为 character-set-server=utf8mb4,但这种方式需要重启MySQL服务,如果你的MySQL服务正在忙,估不宜选用这种方案。 [2] 加参数--no-defaults 用mysqlbinlog.exe --no