完全掌握MySql之写入Binary Log的流程

1. Binary Log简介

MySQL数据库提供了 Binary Log (二进制日志)。它记录了所有对MySQL数据库操作的详细记录,如:对数据库的更改(insert, update)和对数据库表构成的更改(add column, drop table) 等。Binary Log通常是用于以下几个方面:

恢复数据

复制(replication)

安全策略规范

性能分析与优化

2. Binary Log的生成方式

MySQL有两个组件能够生成Binary Log:

MySQL Server

MySQL Client

2.1 MySQL Server的Binary Log生成方式:

MySQL Server会自动将所有事务写入Binary Log文件,并在文件末尾记录一个实现的唯一标识(Log Position)。MySQL自动将Log Position的值保存到该数据库的.offset文件中。

2.2 MySQL Client的Binary Log生成方式:

MySQL Client通过使用 'mysqlbinlog' 命令来生成Binary Log。模拟MySQL的Slave方式,先从Master数据库取得Binary Log并储存为本地文件,之后通过分析在Master上发生的事务,并将其在Slave端执行,这样Slave数据库就与Master数据库同步了。

3. Binary Log的写入流程

当MySQL Server执行任何change操作时(Binary Log中出现的所有信息均基于MySQL的大部分关系型数据库的change操作)都会更新MySQL Binary Log文件,而MySQL Client则会模拟MySQL Slave方式更新Binary Log文件。

MySQL Server

MySQL Server启动,检查是否启用了Binary Log

MySQL Server开始一个新的事务

MySQL Server写入Binary Log头部

BEGIN;

#在这里打开 Binary Log 文件.

Server执行SQL语句和更新

UPDATE mytable SET column1='value1' WHERE data='foo';

INSERT INTO mytable (column1, column2) VALUES ('a', 'b');

Server关闭当前事务

COMMIT;

MySQL Client

MySQL Client连接到MySQL Server,并请求接收Binary Log。

MySQL Client从MySQL Server连接取得Binary Log,并开始解析.

MySQL Client将解析后的更改应用于自己的数据库,这样两个数据库就基本相同了。

4. 总结

Binary Log是MySQL数据库的一个非常重要的组成部分,可用于数据恢复,复杂,安全策略规范以及性能分析与优化。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

数据库标签