您现在的位置:首页 >> 低碳养生

手把手教你 MySQL 删库不跑路,首集 MySQL 的 binlog !

时间:2023-03-06 12:17:56

后,可执自为如下号令中止 mysql 罐(mysql1 是我这里罐的名字):

docker restart mysql1

中止此后,再次次可执自为 show variables like 'log_bin%'; 方能看得见 binlog 已经掀开了。

这里除了 log_bin 表达式外,还有两个表达式名也特别我们注目:

log_bin_basename:这个是无论如何转化成的 binlog 笔记机密文件的名称大写字母,换句话说道,根据大家现今所看得见的配有,无论如何转化成的 binlog 笔记机密文件叫好好 javaboy_logbin.xxx,这个机密文件中将但会用来日志所有的 DDL 和 DML 运算符惨剧。 log_bin_index:这个是 binlog 的引文机密文件,保存了所有 binlog 的书目,因为 binlog 可能但会有多个。我们可以来查阅一下今天的 javaboy_logbin.index 机密文件:

可以看得见,现今只有一个 logbin 机密文件。

三、罕见 binlog 可用

月里我们再次来简述几个罕见的 binlog 可用号令。

1、查阅所有 binlog 笔记

通过如下方式将我们可以查阅 binlog 笔记列所列:

show master logs;

可以看得见,我这里现今只有一个笔记机密文件,机密文件叫好好 javaboy_logbin.000001,File_size 所列示这个机密文件迁出的字节微小是 154。

2、查阅 master 状态

这个号令我们在架起 MySQL 主从的时候经常但会用到,如下:

这个时候可以看得见同类型 binlog 笔记机密字符串称以及最后一个可用惨剧的 Position 值(这个值有啥用,我们后面但会给大家简要简述)。

3、连续 binlog

短时间来说道,一个 binlog 写成满此后,但会启动时切换到下一个 binlog 开始写成,不过我们也可以可执自为一个 flush logs 号令来手动连续 binlog,手动连续 binlog 此后,就但会转化成一个新的 binlog 笔记机密文件,月里所有的 binlog 笔记都将日志到新的机密文件中。如下:

由上图可以看得见,我们连续笔记此后,再次通过 show master logs 去查阅笔记,挖掘出笔记机密文件已经多了一个新的转化成的了,然后再次通过 show master status 去查阅同类型笔记机密文件文档,挖掘出也已经变为 javaboy_logbin.000002。

4、重置 binlog

reset master 可以重置 binlog 笔记机密文件,让笔记重新的从 000001 开始日志,不过如果意味著主机有一个或者多个从机在运自为,那么该号令就运自为一定会(因为从机是通过 binlog 来实现元数据努该系统的,主机把 binlog 清空了,从机但会报找不到 binlog 的正确)。

5、查阅 binlog

由于 binlog 是小数笔记机密文件,所以要是直接打开,那称许是看一定会的:

一定会有看得见任何有用的文档。

为了查阅 binlog,MySQL 为我们提供了两个官方物件,我们一个一个来看,首到时是 mysqlbinlog 号令,如下:

虽然外表乱糟糟的,不过仔细看着实际上都有迹可循。因为我这里是一个新的内置的元数据努,而今只是创建了一个叫好好 javaboy 的努,然后创建了一个叫好好 user 的所列加了两条元数据,其他什么真的都一定会好好,所以创建努的脚本我们实际上能够从纷杂的机密文件中找。

转化成的笔记机密文件中亦有一个 end_log_pos 是笔记机密文件的 pos 点,这个无论如何在元数据只不过恢复的时候有用。

不过这种查阅方式将不够个性化,我们说道 binlog 是按照惨剧来日志笔记的,所以如果我们能够按照惨剧的方式将查阅笔记,就但会好很多,我们再次来到底如下一个号令:

show binlog events [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count];

这个所列示以惨剧的方式无论如何查阅 binlog,这里包括到几个变量:

log_name:可以所选要查阅的 binlog 笔记机密字符串,如果不所选的话,所列示查阅最早的 binlog 机密文件。 pos:从哪个 pos 点开始查阅,凡是 binlog 日志下来的可用都有一个 pos 点,这个实际上就是略低于我们可以所选从哪个可用开始查阅笔记,如果不所选的话,就都从该 binlog 的开头开始查阅。 offset:这是是bit,不所选默认就是 0。 row_count:查阅多少自为日志,不所选就是查阅所有。 我们来看一个有用的例子:

show binlog events in 'javaboy_logbin.000001';

这下就准确多了,我们可以看得见之前的所有可用,例如:

在 Pos 219-322 彼此间创建了一个努。 在 Pos 387-537 彼此间创建了一张所列。 在 Pos 677-780 彼此间添加了一条日志。 ... 四、元数据只不过恢复战术上

好啦,有了下面的基本知识准备,月里松哥来给大家手把手摄像一个删努/只不过恢复的情节。

我到时来说道说道我这个元数据努现今的情况。

这是一个新的内置的元数据努,而今我新的建了一个元数据努叫好好 javaboy,javaboy 努中新的建了一张所列叫好好 user,user 中亦有两条日志,如下:

今天假设我们均会(每周三清晨亦同)对元数据努进自为硬盘。

今天清晨亦同了,元数据努启动时硬盘开始了,我们通过如下号令将元数据努硬盘成 SQL 脚本,如下:

mysqldump -uroot -p ---flush-logs ---lock-tables -B javaboy>/root/javaboy.bak.sql

这里有几个变量跟大家说道明了下:

-u、-p 这两个就不用说道了。 ---flush-logs:这个所列示在嵌入之前到时连续 binlog,连续 binlog 此后将但会转化成新的 binlog 机密文件,不足之处的可用都存在新的 binlog 中。 ---lock-tables:这个所列示开始嵌入前,瞄准所有所列。无需注意到的是当嵌入多个元数据努时,---lock-tables 分别为每个元数据努瞄准所列,因此这个附加不可保证嵌入机密文件中的所列在元数据努彼此间的逻辑差异性,并不相同元数据努所列的嵌入状态可以只不过并不相同。 -B:这个所列示所选嵌入的元数据努名称,如果常用 ---all-databases 或者 -A 代替 -B 所列示嵌入所有的元数据努。 以上号令可执自为顺利进行后,但会在 /root 书目下聚合一个 javaboy.bak.sql 机密文件,该机密文件就是硬盘的 sql 机密文件了。

这是星期六清晨亦同发生的真的。

月里到了星期日凌晨,来休假了,一顿可用后,往元数据努中又添加了两条可用,如下:

月里,小 X 今天跟为首发生争执了很不爽,决定移除跑路:

为首挖掘出了闻知,当即促请于是就只不过恢复元数据。这时候该你所列现了。

首到时,我们有星期六清晨的硬盘机密文件,到时用那个机密文件进自为元数据只不过恢复:

只不过恢复此后,今天到星期六凌晨清晨亦同的元数据有了。

从星期六凌晨清晨亦同到星期日的元数据今天一定会了。

这个时候我们就要除此以外 binlog 来只不过恢复了。大家还记得,我们星期六清晨亦同可执自为硬盘的时候,用了一个变量叫作 ---flush-logs,常用了该变量所列示从硬盘那一刻起,新的 binlog 将转化成在一个新的笔记机密文件中,对于我们这里来说道,新的 binlog 机密文件当然就是 javaboy_logbin.000002 了,我们去查阅一下该机密文件:

show binlog events in 'javaboy_logbin.000002';

我这里聚合的该机密文件较为长,我撷取用其中一之外:

可以看得见,在 764-865 这个 Pos 中发生了删努跑路惨剧,那么我们只无需回放该机密文件将元数据只不过恢复到 764 这个位置方能。

由于 javaboy_logbin.000002 机密文件是在星期六清晨亦同硬盘此后转化成的新的机密文件,因此这个机密文件从开端到 764 这个 Pos 彼此间的可用,就是星期六清晨亦同到删努之前的可用了。

那么我们来看下通过 binlog 来只不过恢复元数据的号令:

mysqlbinlog /var/lib/mysql/javaboy_logbin.000002 ---stop-position=764 ---database=javaboy | mysql -uroot -p

那么这里包括到两个变量:

---stop-position=764 所列示只不过恢复到 764 这个 Pos,不所选的话就把按整个机密文件只不过恢复了,如果按意味著机密文件只不过恢复的话,由于这个 binlog 机密文件中亦有移除元数据努的运算符,那么就但会导致可执自为完该 binlog 此后,javaboy 努又被移除了。 ---database=javaboy 所列示只不过恢复 javaboy 这个努。 另外还有一个我们这里一定会用到的变量叫作 ---start-position,这个所列示开端的 Pos,不所选的话所列示从头开始元数据只不过恢复。

好啦,弄完此后,再次来查阅元数据努:

元数据只不过恢复啦~

所有可用之前,记得该硬盘就硬盘(消除你可用错了又回不去),松哥为了省事上面省略了一些硬盘可用。

五、小结

好啦,今天这短文主要是和恰巧们分享了 MySQL 的 binlog 笔记,并通过一个小近来来摄像如何通过 binlog 实现元数据努的删努只不过恢复。好啦,感兴趣的恰巧可以没用哦(别在原材料努上试哦)~

写作者丨苏杭一点雨

来源丨大众号:苏杭一点雨(ID:a_javaboy)

dbaplus社群欢迎广大人员撰稿,撰稿邮件:editor@dbaplus.cn

格外多干货

四期精选“元数据努”趣味直播回看:

元数据努前沿技术开发有系统与应用趋势阐释:

金融业元数据努转型与国产化改造:

主流关系型分布式元数据努-II与所设计战术上:

金融级元数据努架构所设计与运维有系统:

注目大众号dbaplus社群应有【220318】,可获取用配套PPT哦~

户外活动推荐

2022 Gdevops全球性迅捷运维峰但会·广州终点站将于6月底17日举办活动,精选元数据努热门诉求,共同阐释元数据努朝向技术开发交融及国产化下的终究,之外诉求到时自为剧透:

【工商银自为】架构应用MySQL治理有系统(白鱼) 【平安银自为】元数据努计算机系统化运维有系统之故障自愈 【浙江移动】“AN”浪潮下元数据努计算机系统运维的有系统与思考 【哔哩哔哩】B终点站大型户外活动实际上的元数据努应有 【vivo】万级实例规模下的元数据努可用性应有有系统 【快速手】快速手在NewSQL元数据努的追寻和有系统 …… 点击链接理解格外多文档及应征:_track=SOHU

贵州癫痫治疗医院
无锡哪家医院治疗前列腺炎最好
云南男科医院去哪家好
沈阳妇科哪家医院最好
合肥精神心理医院排行
相关阅读