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
相关推荐
yookay zhang1 分钟前
达梦数据复制软件DMDRS
数据库
拾忆,想起20 分钟前
TCP滑动窗口:网络世界的“智能流量阀门”
java·网络·数据库·网络协议·tcp/ip·php·哈希算法
懒羊羊不懒@30 分钟前
【MySQL | 基础】概念
数据库·mysql
yookay zhang43 分钟前
达梦新云文档数据库分享
数据库
laplace01233 小时前
Java八股—MySQL
java·mysql·oracle
熙客4 小时前
TiDB:分布式关系型数据库
java·数据库·分布式·tidb
你想考研啊7 小时前
oracle导出 导入
数据库·oracle
韩立学长9 小时前
基于Springboot的旧时月历史论坛4099k6s9(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
TDengine (老段)10 小时前
TDengine 字符串函数 CONCAT_WS 用户手册
android·大数据·数据库·时序数据库·tdengine·涛思数据
IT 小阿姨(数据库)10 小时前
PostgreSQL 之上的开源时序数据库 TimescaleDB 详解
运维·数据库·sql·postgresql·开源·centos·时序数据库