很抱歉,您没有提供需要改写的句子。请提供您希望改写的句子,我将为您改写为一个长尾词的。

2026-05-26 13:041阅读0评论SEO资源
  • 内容介绍
  • 相关推荐

本文共计1032个文字,预计阅读时间需要5分钟。

很抱歉,您没有提供需要改写的句子。请提供您希望改写的句子,我将为您改写为一个长尾词的。

本章博客,我们学习一下MySQL中的二进制日志,它记录了所有对MySQL数据库的CRUD操作,包括对表的增删改查操作记录,但不包括失败、回滚或未提交的操作。通过MySQL的二进制日志,可以追踪数据变更的完整历史。

铺垫

本篇博客我们学习一下MySQL 中的二进制日志,该日志记录了所有对MySQL数据库的CRUD事件,包括增删改查和对表的系列操作记录,对于失败、回滚或未提交的操作不会记录。通过MySQL的二进制日志增量,可以实现MySQL的复制和备份。

学习过程中检索到有资料提及,二进制日志(binlog)只会增加 1% 的 MySQL 负载,所以可以一直开启。

开启二进制日志

通过如下命令验证是否开启:

show variables like 'log_bin%';

各个参数的含义如下所示:

  • log_bin:是否开启 binlog 日志;
  • log_bin_basename:binlog 存放在位置
  • log_bin_index:设置 binlog 日志的索引文件的存放路径及索引文件名;

查看目前数据库的二进制文件

使用如下命令:

很抱歉,您没有提供需要改写的句子。请提供您希望改写的句子,我将为您改写为一个长尾词的。

show binary logs;

得到如下结果,二进制文件名以 mysql-bin.000xxx 命名。

还可以使用如下命令查看

show master logs;

二进制日志删除

删除某个日志之前的所有二进制文件,使用如下命令

purge binary logs to 'mysql-bin.000014';

得到结果如下所示:

也可以清除某个时间点之前的二进制日志

purge binary logs before '2022-03-22 12:12:00';

清除所有二进制日志文件

reset master;

查看二进制日志

使用如下命令可以查阅日志

show binlog events in 'mysql-bin.000014'

该命令标准格式如下所示:

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

参数解析:

  • IN 'log_name':要查询的binlog文件名(默认第一个二进制日志);
  • FROM pos:指定从哪个pos起始点开始查起(默认文件起始点);
  • LIMIT [offset,]:偏移量(默认0);
  • row_count:查询总条数(默认所有行)。

如果执行的时候出现如下错误

Error when executing command SHOW BINLOG EVENTS: Wrong offset or I/O error

该原因是由于 pos 设置不正确,工具就会报 Wrong offset or I/O error 的错误,在查看日志内容之前一定要首先定位好。

查看二进制日志文件,建议使用 mysqlbinlog 工具,在 bin 目录可以查找到。

查询日志过程中如果出现如下错误

mysqlbinlog: [ERROR] unknown variable 'default-character-set=utf8'

两个方法可以解决这个问题

  • 在MySQL的配置中将 default-character-set=utf8 修改为 character-set-server = utf8 ,然后重启MySQL服务。
  • 用 mysqlbinlog --no-defaults mysql-bin.xxxx 命令打开。
  • 第二种方法添加的参数是 --no-default ,表示不读取任何选项文件。

    其中的语句被 Base64 加密了,可以增加如下参数

    --base64-output=decode-rows –v

    此时完整的命令如下所示:

    mysqlbinlog.exe --no-defaults --base64-output=decode-rows -v D:\phpstudy_pro\Extensions\MySQL5.7.26\.000001

    binlog恢复数据的2种情况

    二进制文件可以用于恢复文件,这部分内容你可以检索一下相关资料进行学习。

    数据库丢失或者drop

  • 恢复系统自动备份
  • 用binlog恢复系统备份时间到此刻的的数据
  • update与delete误操作

  • 恢复系统自动备份
  • 从binlog日志中删除误操作的语句,然后执行binlog恢复其他的数据
  • 但是有一点需要注意,如果删除了部分数据,但是没有提前备份数据库,或者二进制日志没有记录数据添加的语句,是无法还原的。

    橡皮擦的第 <font color=red>597</font> 篇原创博客。

    本文共计1032个文字,预计阅读时间需要5分钟。

    很抱歉,您没有提供需要改写的句子。请提供您希望改写的句子,我将为您改写为一个长尾词的。

    本章博客,我们学习一下MySQL中的二进制日志,它记录了所有对MySQL数据库的CRUD操作,包括对表的增删改查操作记录,但不包括失败、回滚或未提交的操作。通过MySQL的二进制日志,可以追踪数据变更的完整历史。

    铺垫

    本篇博客我们学习一下MySQL 中的二进制日志,该日志记录了所有对MySQL数据库的CRUD事件,包括增删改查和对表的系列操作记录,对于失败、回滚或未提交的操作不会记录。通过MySQL的二进制日志增量,可以实现MySQL的复制和备份。

    学习过程中检索到有资料提及,二进制日志(binlog)只会增加 1% 的 MySQL 负载,所以可以一直开启。

    开启二进制日志

    通过如下命令验证是否开启:

    show variables like 'log_bin%';

    各个参数的含义如下所示:

    • log_bin:是否开启 binlog 日志;
    • log_bin_basename:binlog 存放在位置
    • log_bin_index:设置 binlog 日志的索引文件的存放路径及索引文件名;

    查看目前数据库的二进制文件

    使用如下命令:

    很抱歉,您没有提供需要改写的句子。请提供您希望改写的句子,我将为您改写为一个长尾词的。

    show binary logs;

    得到如下结果,二进制文件名以 mysql-bin.000xxx 命名。

    还可以使用如下命令查看

    show master logs;

    二进制日志删除

    删除某个日志之前的所有二进制文件,使用如下命令

    purge binary logs to 'mysql-bin.000014';

    得到结果如下所示:

    也可以清除某个时间点之前的二进制日志

    purge binary logs before '2022-03-22 12:12:00';

    清除所有二进制日志文件

    reset master;

    查看二进制日志

    使用如下命令可以查阅日志

    show binlog events in 'mysql-bin.000014'

    该命令标准格式如下所示:

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

    参数解析:

    • IN 'log_name':要查询的binlog文件名(默认第一个二进制日志);
    • FROM pos:指定从哪个pos起始点开始查起(默认文件起始点);
    • LIMIT [offset,]:偏移量(默认0);
    • row_count:查询总条数(默认所有行)。

    如果执行的时候出现如下错误

    Error when executing command SHOW BINLOG EVENTS: Wrong offset or I/O error

    该原因是由于 pos 设置不正确,工具就会报 Wrong offset or I/O error 的错误,在查看日志内容之前一定要首先定位好。

    查看二进制日志文件,建议使用 mysqlbinlog 工具,在 bin 目录可以查找到。

    查询日志过程中如果出现如下错误

    mysqlbinlog: [ERROR] unknown variable 'default-character-set=utf8'

    两个方法可以解决这个问题

  • 在MySQL的配置中将 default-character-set=utf8 修改为 character-set-server = utf8 ,然后重启MySQL服务。
  • 用 mysqlbinlog --no-defaults mysql-bin.xxxx 命令打开。
  • 第二种方法添加的参数是 --no-default ,表示不读取任何选项文件。

    其中的语句被 Base64 加密了,可以增加如下参数

    --base64-output=decode-rows –v

    此时完整的命令如下所示:

    mysqlbinlog.exe --no-defaults --base64-output=decode-rows -v D:\phpstudy_pro\Extensions\MySQL5.7.26\.000001

    binlog恢复数据的2种情况

    二进制文件可以用于恢复文件,这部分内容你可以检索一下相关资料进行学习。

    数据库丢失或者drop

  • 恢复系统自动备份
  • 用binlog恢复系统备份时间到此刻的的数据
  • update与delete误操作

  • 恢复系统自动备份
  • 从binlog日志中删除误操作的语句,然后执行binlog恢复其他的数据
  • 但是有一点需要注意,如果删除了部分数据,但是没有提前备份数据库,或者二进制日志没有记录数据添加的语句,是无法还原的。

    橡皮擦的第 <font color=red>597</font> 篇原创博客。