binlog日志是什么

binlog介绍

MySQL的binlog(二进制日志)是一种记录数据库服务器上所有修改数据的日志文件。它主要用于数据复制和主从同步。binlog的主要作用是记录数据库的DDL(数据定义语言)操作和DML(数据操作语言)操作,以便在发生故障时进行恢复。

binlog的主要特点如下:

  1. 二进制格式:binlog以二进制格式存储,因此占用空间较小,传输速度快。
  2. 顺序写:binlog是顺序写入磁盘的,因此对磁盘的写入性能较好。
  3. 不可修改:binlog一旦写入,就不可修改。这保证了数据的完整性和一致性。
  4. 可追加:binlog可以追加到文件末尾,不会覆盖原有的内容。
  5. 支持GTID(全局事务标识符):GTID是一种用于标识事务的唯一标识符,可以避免主从同步时的冲突和误操作。

查看是否开启binlog日志

show variables like 'log_bin';

要查看MySQL服务器上的binlog状态,可以使用以下命令:

SHOW MASTER STATUS;

使用以下命令查看所有binlog日志列表:

SHOW MASTER LOGS;

要查看当前正在写入的binlog文件名和位置,可以使用以下命令:

SHOW BINLOG EVENTS;

要查看所有的binlog文件列表,可以使用以下命令:

SHOW BINARY LOGS;

查看binlog日志保存路径

SHOW VARIABLES LIKE 'datadir';

刷新log日志,立刻产生一个新编号的binlog日志文件,跟重启一个效果,可以执行以下命令:

FLUSH LOGS;

清空所有binlog日志,可以执行以下命令:

RESET MASTER;

binlog文件长啥样

binlog日志是什么_第1张图片
这些文件就是binlog日志文件

binlog.index和binlog.000057这两个文件都是MySQL的binlog日志文件,但他们在性质和用途上有所不同。

binlog.index文件是MySQL服务器自动创建的二进制索引文件,它用于加速对binlog日志文件的查找。当我们需要查看某个特定编号的binlog日志时,MySQL服务器会首先在这个索引文件中查找,如果找到了对应的日志文件,就直接读取该日志文件,从而提高了查询效率。

而binlog.000057文件则是一个实际的binlog日志文件,它记录了数据库的所有更改操作,包括DDL(数据定义语言)和DML(数据操作语言)语句(除了数据查询语句SELECT、SHOW等)。这些语句以“事件”的形式保存,描述了数据的更改情况。

总的来说,binlog.index文件主要起到索引的作用,提高了查询binlog日志的效率;而binlog.000057这样的文件则是实际存储所有数据库更改操作的地方。

内容对比

.index
binlog日志是什么_第2张图片
.000057
binlog日志是什么_第3张图片

mysql开启binlog

window下找my.ini linux下找my.cnf

修改配置文件,在原来内容后新增如下内容

# 开启binlog
log-bin=mysql-bin 
# 选择ROW模式
binlog-format=ROW 
# 配置MySQL replaction需要定义,不要和canal的slaveId重复
server_id=1 

binlog三种模式说明

  • statement【语句级】
    binlog会记录每一次执行写操作的语句
    优点:节省空间 例:批量操作:通过性别批量更新姓名,只会记录一条语句
    缺点:有可能造成数据不一致 例如:语句中存在UUID() now() 随机数等函数,使用binlog恢复数据时,会产生不一样的数据
  • row【行级】
    binlog会记录每次操作后每行的变化
    优点:保证数据的绝对一致性
    缺点:占用空间大
  • mixed【混合日志记录】
    默认是【statement】模式,特殊情况时会使用row模式(包含UUID、自增[auto_increment]等)
    优点:节省空间,同时兼顾了一定的一致性
    缺点:还有极个别情况依旧会造成不一致

重启mysql服务

windows就在搜索中搜索服务
binlog日志是什么_第4张图片

linux中就使用命令

sudo systemctl restart mysqld

查看bin是否开启

show variables like 'log_bin';

binlog日志是什么_第5张图片

你可能感兴趣的:(mysql,mysql)