mysql数据库如何开启binlog日志

首先我们要知道什么是binlog日志

binlog

MySQL数据库的二进制日志文件,记录了数据库更改的所有操作,但不包括SELECT和SHOW这类操作,这些操作对数据进行修改、管理操作、数据库修改等操作都会被记录在日志中。

对于一个sql,它常常被分为以下几种类型:

DDL:Data Definition Language,数据定义语言

复制代码
  #### 用来操作数据库、表、列等,比如 CREATE、ALTER、DROP

DML:Data Manipulation Language,数据操作语言

复制代码
  #### 用来操作表里的数据,比如 INSERT、UPDATE、DELETE

DCL:Data Control Language,数据控制语言

复制代码
  #### 用来操作访问权限等,比如 GRANT

DQL:Data Query Language,数据查询语言

复制代码
  #### 用来查询数据,比如 SELECT

TCL:Transaction Control Language,事务控制语言

复制代码
  #### 用于数据库的事务管理,比如 COMMIT,ROLLBACK

(binlog是不会记录查询操作的)

接下来我看先查看一下当前数据库是否已经开启:

  1. 我们可以通过以下命令查询binlog日志的开关是否开启,以及日志的存储位置
    1.

    sql 复制代码
    show variables like '%log_bin%';
  2. 执行上面的sql会得到下面结果

  3. 其主要字段含义分别如下:

    1. log_bin 表示是否开启 binlog(ON开启,OFF关闭)

    2. log_bin_basename 表示的是 binlog 所在的文件夹,在后面我们查看 binlog 具体内容的时候,会需要进入到这个文件夹进行查看。

    3. log_bin_index 表示的是 binlog 的索引文件,我们可以在其中找到所有的 binlog 日志

    4. log_bin_trustfunctioncreators是一个全局系统变量,主要影响MySQL对存储函数创建、修改权限的控制以及这些函数在二进制日志记录中的行为

      1. 在默认设置下(log_bin_trust_function_creators=OFF),创建或修改存储函数的用户不仅需要拥有常规的CREATE ROUTINE或ALTER ROUTINE权限,还需要额外的SUPER特权。这是因为存储函数如果未被声明为确定性(DETERMINISTIC)或明确表示不修改数据(通过NO SQL或READS SQL DATA特性),则可能存在对复制和数据恢复不利的行为,如产生不可重复的结果或执行非预期的更新操作。为了保障数据一致性,MySQL对此类操作施加了严格的权限要求。

      当设置log_bin_trust_function_creators=ON 时,这一严格要求被放宽。用户无需具备SUPER特权也能创建或修改存储函数,即使这些函数没有明确声明为确定性或不修改数据。这种设置下,MySQL假设函数创建者了解并能够确保他们所创建的函数对复制环境是安全的,从而降低了权限门槛。
      3.

      关于log_bin_trustfunctioncreators更多详细内容请参考博客:深入理解MySQL中的log_bin_trust_function_creators系统变量_log-bin-trust-function-creators-CSDN博客

    5. log_bin_use_v1_row_events: on 表示使用版本1二进制日志行,off 表示使用版本2二进制日志行

    6. sql_log_bin 用于主从复制,这个参数关闭后,主库的改动不会记录到 binlog,不会复制到从库

  4. 要想开启binlog日志,需要在/etc/my.cnf文件中加入以下内容

bash 复制代码
log-bin=mysql-bin  # 确认是打开状态,并指定存储日志位置
server-id=1  # MySQL将其视为一个正常的从服务器,并对其进行正常的主从复制操作。
binlog_format=row  # DDL 时是明文,DML是加密的
expire-logs-days=20 # 指定日志文件保留天数

最后重启MySQL

bash 复制代码
systemctl restart mysqld
相关推荐
高梦轩16 小时前
PG数据库
数据库·oracle
云草桑16 小时前
DBA mssql 解决排序规则冲突 QA prod 和开发配置都是一样的服务器排序规则 为啥开发环境的的存储过程需要 加这个COLLATE Chinese_PRC_CI_AS
数据库·dba·mssql
卤炖阑尾炎16 小时前
MySQL 故障排查与生产环境优化实战指南
数据库·mysql
小陈工16 小时前
2026年4月2日技术资讯洞察:数据库融合革命、端侧AI突破与脑机接口产业化
开发语言·前端·数据库·人工智能·python·安全
solihawk17 小时前
分区大表统计信息不准确引发的性能问题
数据库
一叶飘零_sweeeet17 小时前
击穿 MySQL InnoDB MVCC 底层:从 undo log、Read View 到隔离级别的全链路深度拆解
mysql·innodb·mvcc
百结21417 小时前
postgresql日常运用
数据库·postgresql·oracle
前进的李工18 小时前
MySQL大小写规则与存储引擎详解
开发语言·数据库·sql·mysql·存储引擎
CoovallyAIHub18 小时前
Sensors 2026 | 从无人机拍摄到跑道缺陷地图,机场巡检全流程自动化——Zadar机场全跑道验证
数据库·架构·github
殷紫川18 小时前
MySQL 锁等待与死锁根治全攻略:从底层原理到 innodb status 精准定位实战
mysql