mysql对数据的更新操作记录在哪个日志中?


当前第2页 返回上一页

MySQL二进制日志(Binary Log)

二进制日志(Binary Log)也可叫作变更日志(Update Log),是 MySQL 中非常重要的日志。主要用于记录数据库的变化情况,即 SQL 语句的 DDL 和 DML 语句,不包含数据记录查询操作。

如果 MySQL 数据库意外停止,可以通过二进制日志文件来查看用户执行了哪些操作,对数据库服务器文件做了哪些修改,然后根据二进制日志文件中的记录来恢复数据库服务器。

默认情况下,二进制日志功能是关闭的。可以通过以下命令查看二进制日志是否开启,命令如下:

1

2

3

4

5

6

7

mysql> SHOW VARIABLES LIKE 'log_bin';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| log_bin       | OFF   |

+---------------+-------+

1 row in set, 1 warning (0.02 sec)

从结果可以看出,二进制日志是关闭的。

启动和设置二进制日志

在 MySQL 中,可以通过在配置文件中添加 log-bin 选项来开启二进制日志,格式如下:

1

2

[mysqld]

log-bin=dir/[filename]

其中,dir 参数指定二进制文件的存储路径;filename 参数指定二进制文件的文件名,其形式为 filename.number,number 的形式为 000001、000002 等。

每次重启 MySQL 服务后,都会生成一个新的二进制日志文件,这些日志文件的文件名中 filename 部分不会改变,number 会不断递增。

如果没有 dir 和 filename 参数,二进制日志将默认存储在数据库的数据目录下,默认的文件名为 hostname-bin.number,其中 hostname 表示主机名。

下面在 my.ini 文件的 [mysqld] 组中添加以下语句:

1

log-bin

重启 MySQL 服务器后,可以在 MySQL 数据库的数据目录下看到 LAPTOP-UHQ6V8KP-bin.000001 这个文件,同时还生成了 LAPTOP-UHQ6V8KP-bin.index 文件。此处,MySQL 服务器的主机名为 LAPTOP-UHQ6V8KP。

还可以在 my.ini 文件的 [mysqld] 组中进行如下修改。语句如下:

1

log-bin=C:log\mylog

重启 MySQL 服务后,可以在 C:log 文件夹下看到 mylog.000001 文件和 mylog.index 文件。

查看二进制日志

1. 查看二进制日志文件列表

可以使用如下命令查看 MySQL 中有哪些二进制日志文件:

1

2

3

4

5

6

7

8

mysql> SHOW binary logs;

+----------------------------+-----------+

| Log_name                   | File_size |

+----------------------------+-----------+

| LAPTOP-UHQ6V8KP-bin.000001 |       177 |

| LAPTOP-UHQ6V8KP-bin.000002 |       154 |

+----------------------------+-----------+

2 rows in set (0.00 sec)

2. 查看当前正在写入的二进制日志文件

可以使用以下命令查看当前 MySQL 中正在写入的二进制日志文件。

1

2

3

4

5

6

7

mysql> SHOW master status;

+----------------------------+----------+--------------+------------------+-------------------+

| File                       | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+----------------------------+----------+--------------+------------------+-------------------+

| LAPTOP-UHQ6V8KP-bin.000002 |      154 |              |                  |                   |

+----------------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

3. 查看二进制日志文件内容

二进制日志使用二进制格式存储,不能直接打开查看。如果需要查看二进制日志,必须使用 mysqlbinlog 命令。

mysqlbinlog 命令的语法形式如下:

1

mysqlbinlog filename.number

mysqlbinlog 命令只在当前文件夹下查找指定的二进制日志,因此需要在二进制日志所在的目录下运行该命令,否则将会找不到指定的二进制日志文件。

例 1

下面使用 mysqlbinlog 命令,来查看 C:\log 目录下的 mylog.000001 文件,代码执行如下:

1

2

3

4

5

6

7

8

C:\Users\11645>cd C:\log

C:\log>mysqlbinlog mylog.000001

/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;

/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;

DELIMITER /*!*/;

# at 4

#200527  9:33:37 server id 1  end_log_pos 123 CRC32 0x69738cfd  Start: binlog v 4, server v 5.7.29-log created 200527  9:33:37 at startup

......

由于日志内容较长,这里只展示了 mylog 中的部分内容。

使用 mysqlbinlog 命令时,可以指定二进制文件的存储路径。这样可以确保 mysqlbinlog 命令可以找到二进制文件。上面例子中的命令可以变为如下形式:

1

mysqlbinlog C:\log\mylog.000001

这样,mysqlbinlog 命令就会到 C:\log 目录下去查找 mylog.000001 文件。如果不指定路径,mysqlbinlog 命令将在当前目录下查找 mylog.000001 文件。

除了 filename.number 文件,MySQL 还会生成一个名为 filename.index 的文件,这个文件存储着所有二进制日志文件的列表,可以用记事本打开该文件。

小技巧:实际工作中,二进制日志文件与数据库的数据文件不放在同一块硬盘上,这样即使数据文件所在的硬盘被破坏,也可以使用另一块硬盘上的二进制日志来恢复数据库文件。两块硬盘同时坏了的可能性要小得多,这样可以保证数据库中数据的安全。

更多编程相关知识,请访问:编程入门!!

以上就是mysql对数据的更新操作记录在哪个日志中?的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

mysql怎么去除主键约束

mysql修改字段类型有哪些?

mysql主键,外键,非空,唯一,默认约束及创建表的方法

pymysql模块的操作实例

mysql隔离级别有几种

mysql数据库系统特权如何查看?

如何备份mysql

彻底解决mysql使用中文乱码的方法

mysql 无法启动的几种常见问题

mysql触发器(trigger)简明总结和使用实例

更多相关阅读请进入《mysql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...