首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MYSQL-如何开启(Binlog)

MYSQL-如何开启(Binlog)

作者头像
运维小路
发布2025-09-30 15:42:34
发布2025-09-30 15:42:34
1250
举报
文章被收录于专栏:运维小路运维小路

作者介绍:简历上没有一个精通的运维工程师,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

数据库是一个系统(应用)最重要的资产之一,所以我们的数据库将从以下几个数据库来进行介绍。

MySQL(本章节)

PostgreSQL

MongoDB

Redis

Etcd

前面介绍了二进制日志的用途,本小节就通过实际案例来介绍他的实际用处,试想一下这个场景,你维护一个单机版的MYSQL,每天定时备份数据,如果某天这个节点宕机,数据无发找回,我们应该怎么办?

思路

1.把备份数据存储到MYSQL数据目录之外的磁盘,可避免单盘故障,还可以考虑再把他同步到异地。

2.开启Binlog日志,把Binlog日志存储到另外磁盘,可规避备份数据及时性的问题。

实操

1.MYSQL开启Binlog

我们这里复用我们前面yum安装的数据库。

代码语言:javascript
复制
#创建对应的数据目录,并设置权限
#这里的路基需要和下面配置文件对应,我这里实际是在一个分区,真实环境这里就是其他磁盘及分区

mkdir -p /data/mysql-binlogs/
chown mysql.mysql /data/mysql-binlogs/
代码语言:javascript
复制
vi /etc/my.conf
#在[mysqld]下面添加

# 开启binlog,并设置基础路径和文件名
log-bin=/data/mysql-binlogs/mysql-bin
# 设置binlog索引文件路径
log_bin_index=/data/mysql-binlogs/mysql-bin.index
# 必须设置server-id
server-id=1
# 设置binlog格式(推荐ROW格式)
binlog_format=ROW
# 设置binlog过期时间(天),这里基于前面的需求设置的2天
expire_logs_days=2
# 设置单个binlog文件大小
max_binlog_size=100M
代码语言:javascript
复制
#重启服务
systemctl restart mysqld

2.检查Binlog日志文件

代码语言:javascript
复制
[root@localhost ~]# ll /data/mysql-binlogs/
total 8
-rw-r----- 1 mysql mysql 154 Sep 23 23:25 mysql-bin.000001
-rw-r----- 1 mysql mysql  37 Sep 23 23:25 mysql-bin.index
[root@localhost ~]# 

3.MYSQL里面检查

代码语言:javascript
复制
mysql> SHOW VARIABLES LIKE 'log_bin%';
+---------------------------------+-------------------------------------+
| Variable_name                   | Value                               |
+---------------------------------+-------------------------------------+
| log_bin                         | ON                                  |
| log_bin_basename                | /data/mysql-binlogs/mysql-bin       |
| log_bin_index                   | /data/mysql-binlogs/mysql-bin.index |
| log_bin_trust_function_creators | OFF                                 |
| log_bin_use_v1_row_events       | OFF                                 |
+---------------------------------+-------------------------------------+
5 rows in set (0.03 sec)

mysql> SHOW VARIABLES LIKE 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 1     |
+---------------+-------+
1 row in set (0.00 sec)

4.尝试插入大量数据

5.再次查看Binlog

可以发现Binlog日志已经开始了自动轮转。

代码语言:javascript
复制
#binlog日志列表
mysql> SHOW BINARY LOGS;
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.000001 |    331947 |
| mysql-bin.000002 |   2589124 |
+------------------+-----------+
2 rows in set (0.02 sec)

#当前正在使用的binglog文件
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 |  2615876 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.11 sec)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-09-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维小路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MongoDB
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档