MySQL的binlog(二进制日志)是一种记录数据库服务器上所有修改数据的日志文件。它主要用于数据复制和主从同步。binlog的主要作用是记录数据库的DDL(数据定义语言)操作和DML(数据操作语言)操作,以便在发生故障时进行恢复。
binlog的主要特点如下:
查看是否开启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.index和binlog.000057这两个文件都是MySQL的binlog日志文件,但他们在性质和用途上有所不同。
binlog.index文件是MySQL服务器自动创建的二进制索引文件,它用于加速对binlog日志文件的查找。当我们需要查看某个特定编号的binlog日志时,MySQL服务器会首先在这个索引文件中查找,如果找到了对应的日志文件,就直接读取该日志文件,从而提高了查询效率。
而binlog.000057文件则是一个实际的binlog日志文件,它记录了数据库的所有更改操作,包括DDL(数据定义语言)和DML(数据操作语言)语句(除了数据查询语句SELECT、SHOW等)。这些语句以“事件”的形式保存,描述了数据的更改情况。
总的来说,binlog.index文件主要起到索引的作用,提高了查询binlog日志的效率;而binlog.000057这样的文件则是实际存储所有数据库更改操作的地方。
修改配置文件,在原来内容后新增如下内容
# 开启binlog
log-bin=mysql-bin
# 选择ROW模式
binlog-format=ROW
# 配置MySQL replaction需要定义,不要和canal的slaveId重复
server_id=1
linux中就使用命令
sudo systemctl restart mysqld
show variables like 'log_bin';