it编程 > 数据库 > Mysql

MySQL中如何开启二进制日志(Binlog)

8人参与 2025-03-06 Mysql

在 mysql 中开启二进制日志(binlog)可以帮助记录数据库的变更信息,这在数据恢复、主从复制等场景中非常有用。

下面不同 mysql 版本下开启 binlog 的方法:

windows系统

手动停止mysql,修改完配置再重新启动

1. 停止 mysql 服务

在修改配置文件之前,需要先停止 mysql 服务,以避免在修改过程中出现问题。

你可以通过以下两种常见方式停止服务:

使用服务管理器

使用命令行

以管理员身份打开命令提示符,执行以下命令:

net stop mysql

2. 找到并打开 my.ini 文件

my.ini 是 mysql 的配置文件,其位置通常取决于 mysql 的安装路径。

常见的位置如下:

找到 my.ini 文件后,使用文本编辑器(如记事本、notepad++ 等)打开它。

3. 编辑 my.ini 文件

my.ini 文件中找到 [mysqld] 部分,如果没有则手动添加。

[mysqld] 部分下添加或修改以下配置项:

[mysqld]
# 开启二进制日志
# 默认是在安装目录的data文件里面
log-bin = c:/mysql/logs/mysql-bin.log
# 设置服务器 id,必须为正整数,在主从复制场景中,每个服务器的 id 要唯一
server-id = 1
# 二进制日志格式,可选值有 statement、row、mixed
binlog_format = row

配置项说明:

补充:如果在 windows 系统中找不到 my.ini 文件

创建 my.ini 文件:

若系统中没有 my.ini 文件,你需要手动创建。一般情况下,该文件会存于 mysql 的安装目录或者 c:\programdata\mysql\mysql server x.xx.x 代表具体的 mysql 版本号)路径下。

4. 创建日志文件目录(如果需要)

如果你指定的日志文件目录不存在,需要手动创建该目录。例如,对于 c:/mysql/logs 目录,你可以通过以下步骤创建:

5. 启动 mysql 服务

完成 my.ini 文件的修改后,需要重新启动 mysql 服务,让配置生效。

同样可以通过以下两种方式启动服务:

使用服务管理器:

使用命令行:

以管理员身份打开命令提示符,执行以下命令:

net start mysql

6. 验证 binlog 是否开启

可以通过以下 sql 语句验证 binlog 是否已经成功开启:

show variables like 'log_bin';

在 mysql 命令行客户端(如 mysql command line client 或 mysql workbench)中执行上述语句,如果结果中的 valueon,则表示 binlog 已经开启。

你还可以查看当前使用的二进制日志文件:

show master status;

通过以上步骤,你就可以在 windows 系统中成功开启 mysql 的 binlog 功能。

ps:可以手动启停mysql

linux 系统

1. 停止 mysql 服务

在修改配置文件之前,需要先停止 mysql 服务。

以 linux 系统为例,使用以下命令停止服务:

sudo systemctl stop mysql

在 windows 系统中,可以通过服务管理器停止 mysql 服务。

2. 编辑 mysql 配置文件

通常 mysql 的配置文件为 my.cnf(linux)或 my.ini(windows)。

你可以使用以下命令打开该文件:

sudo vim /etc/mysql/my.cnf

在配置文件中找到 [mysqld] 部分,如果没有则添加,然后在该部分下添加或修改以下配置项:

[mysqld]
# 开启二进制日志
log_bin = /var/log/mysql/mysql-bin.log
# 设置服务器 id,必须为正整数,在主从复制场景中,每个服务器的 id 要唯一
server-id = 1
# 二进制日志格式,可选值有 statement、row、mixed
binlog_format = row

3. 创建日志文件目录并设置权限

如果指定的日志文件目录不存在,需要创建该目录,并设置合适的权限:

sudo mkdir -p /var/log/mysql
sudo chown -r mysql:mysql /var/log/mysql

4. 启动 mysql 服务

完成配置文件的修改后,启动 mysql 服务:

sudo systemctl start mysql

5. 验证 binlog 是否开启

可以通过以下 sql 语句验证 binlog 是否已经成功开启:

show variables like 'log_bin';

如果结果中的 valueon,则表示 binlog 已经开启。

你还可以查看当前使用的二进制日志文件:

show master status;

docker 容器中的 mysql

如果你使用 docker 部署 mysql,可以在启动容器时通过环境变量或挂载配置文件的方式开启 binlog。

使用环境变量

docker run -d \
  --name mysql \
  -e mysql_root_password=your_password \
  -e mysql_log_bin_enabled=1 \
  -e mysql_log_bin=/var/lib/mysql/mysql-bin.log \
  -e mysql_server_id=1 \
  -e mysql_binlog_format=row \
  -p 3306:3306 \
  mysql:8.0

挂载配置文件

创建一个包含 binlog 配置的 my.cnf 文件:

[mysqld]
log_bin = /var/lib/mysql/mysql-bin.log
server-id = 1
binlog_format = row

然后使用以下命令启动容器并挂载配置文件:

docker run -d \
  --name mysql \
  -e mysql_root_password=your_password \
  -v /path/to/your/my.cnf:/etc/mysql/my.cnf \
  -p 3306:3306 \
  mysql:8.0

其中 /path/to/your/my.cnf 是你本地 my.cnf 文件的路径。

通过以上步骤,你就可以在 mysql 中成功开启 binlog 功能。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

MySQL修改密码的四种方式详解

03-06

MyCat 垂直分片和水平拆分的实现

03-06

MySQL读写分离的项目时间实践

03-06

mysqlbinlog查看日志[ERROR]unknown variable ‘default-character-set=utf8’

03-08

Nginx中location实现多条件匹配的方法详解

03-05

MySQL逻辑备份的实现步骤

03-05

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论