IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MySQL日志系列(2):binlog日志管理 -> 正文阅读

[大数据]MySQL日志系列(2):binlog日志管理

目录

传送门

binlog

日志索引文件

?查看当前日志文件SQL命令

?binlog日志文件更新

binlog日志文件删除

自动删除日志文件配置

手动删除日志文件

暂时停止binlog日志

使用binlog恢复数据


传送门

在前面讨论过MySQL的各种日志MySQL日志系列(1):MySQL各种日志

这里重点讨论一下binlog日志

binlog

binlog就是通常意义的二进制日志,文件一般是binlog.index文件(文件名称可以自定义)

前面介绍了如何配置及查看日志,具体可查看MySQL日志系列(1):MySQL各种日志

日志索引文件

binlog日志生成的时候,一般会有一个binlog.index文件,这个文件并不存储真正的日志,而是binlog日志的索引文件,可以打开查看一下内容

?其中的binlog.000001~binlog.000016就是具体的日志文件,在同一个日志目录中

?查看当前日志文件SQL命令

除了可以在服务器的MySQL日志目录查看日志文件以外,还可以通过日志命令查看

show BINARY logs;

?binlog日志文件更新

binlog日志文件以"000001"结尾,一般日志文件个数跟MySQL启动次数相同,就是说,每启动一次就会生成一个新的日志文件,并且序号递增。

比如现在重启一次MySQL

service mysql restart

再查看一下日志文件,会发现新增了一个日志文件,binlog.000017

?一般生产是很少重启MySQL服务器的,都是运行特别长时间的服务,那如果都记录在一个文件中,会造成文件特别大,所以可以通过配置日志文件大小来切割文件:在MySQL配置my.cnf里面设置参数:max_binlog_size = 100M,这种,表示如果文件达到100M兆,就会生成的新的文件。注意这里的大小一般不能超过1G或者小于4096B,默认为1G

binlog日志文件删除

MySQL提供了2种删除日志文件的方式,自动和手动。

自动删除日志文件配置

在MySQL配置my.cnf里面设置参数:expire_logs_days = 10,表示10天之后自动删除日志文件,不配置默认为0,表示不删除

手动删除日志文件

全部删除

手动删除日志,当然不是直接rm删除,而是通过MySQL提供的安全删除SQL命令去执行

reset master

执行该命令会删除所有的binlog文件,并且会重新生成,序号从"000001"开始

指定范围删除

-- 删除比文件名编号小的所有日志文件
purge master logs to 'log_name';
-- 删除指定日期之前的所有日志
purge master logs before 'date';

比如,删除指定"binlog.000018"日志文件以前的所有日志

PURGE MASTER logs to 'binlog.000018';

文件编号小于18的都被删除了

具体命令可以参考SQL Statements for Controlling Replication Source Servers

暂时停止binlog日志

binlog日志是默认关闭的,在配置文件中一旦配置开启之后,就无法关闭了。

必须通过修改配置文件,并且重启MySQL服务器才能停止。不过可以通过SQL命令临时停止binlog日志功能:

SET sql_log_bin = 0;

然后将值改为1,又恢复binlog日志记录。

比如,先关闭binlog日志功能,然后插入nacos库一条记录

INSERT INTO `nacos`.`config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) 
VALUES ('13', 'test13', 'DEFAULT_GROUP', 'test:\r\n  id: aa', 'e761ae7c0bf7356db9d8104423581b6b', '2022-06-18 14:40:49', '2022-06-18 14:40:49', 'nacos', '112.45.96.24', '', '', NULL, NULL, NULL, 'yaml', NULL, '');

然后查看一下binlog日志文件binlog.000019,没有任何变化 ,开启binlog日志之后,再插入一条记录

INSERT INTO `nacos`.`config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) 
VALUES ('14', 'test14', 'DEFAULT_GROUP', 'test:\r\n  id: aa', 'e761ae7c0bf7356db9d8104423581b6b', '2022-06-18 14:40:49', '2022-06-18 14:40:49', 'nacos', '112.45.96.24', '', '', NULL, NULL, NULL, 'yaml', NULL, '');

然后查看一下binlog日志文件binlog.000019,日志文件增加了?

即可以通过SQL命令动态的暂停/恢复binlog日志记录功能

SET sql_log_bin = {0 | 1};

使用binlog恢复数据

binlog的一大功能就是用来恢复数据,如果MySQL数据意外丢失,可以用binlog日志来恢复,SQL命令为

mysqlbinlog [option] filename | mysql -uuser -ppass

其中

  • option是一些可选参数,比较重要的两对是--start-date,--stop-date和--start-position,--stop-postion:分别代表恢复的起始时间,起始位置

比如,对于刚才的那张表`nacos`.`config_info`,现在的数据是5条数据

刚才插入"test14"这条数据时,是开启了binglog日志的,"test13"是没有记录的。

现在先关闭临时关闭binlog日志功能

SET sql_log_bin = 0;

然后删除data_id为"test13","test14"这2条数据

DELETE from `nacos`.`config_info`  where data_id in('test13','test14');

现在再查询一下表`nacos`.`config_info`,刚才2条数据没有了?

现在执行一下恢复命令,

./mysqlbinlog --skip-gtids=true /data/mysql/bin_log/binlog.000001 | ./mysql -uroot -p
  • 注意可能要加--skip-gtids=xxx参数

具体原因可参考:mysqlbinlog 恢复数据没生效_雅冰石的博客-CSDN博客_mysqlbinlog恢复数据失败

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-09-25 23:15:32  更:2022-09-25 23:17:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年3日历 -2024/3/29 17:27:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码