MySQL binlog设置和查看命令

本文详细介绍了如何在MySQL中开启binlog功能,配置相关参数,并提供了binlog的重置命令,包括删除指定日志、清理旧日志及完全重置。此外,还展示了如何使用mysqlbinlog工具查看binlog内容,对于数据库备份和恢复操作具有重要参考价值。

开启binlog

#编辑模式进入/etc/my.cnf
vim /etc/my.cnf
# i开始进行编辑
# 在#log bin 后面添加内容
[mysqld]
server_id=1
log_bin = mysql-bin
binlog_format = ROW
expire_logs_days = 30
# 重启mysql
service mysqld restart
# 或者
systemctl restart mysqld

重置命令

# 1、查看binlog日志
mysql> show binary logs;
# 2、删除某个日志文件之前的所有日志文件
purge binary logs to 'mysql-bin.000002';
# 3、清理2019-09-09 13:00:00前binlog日志
PURGE MASTER LOGS BEFORE '2022-04-28 13:00:00';
# 4、清理3天前binlog日志
PURGE MASTER LOGS BEFORE DATE_SUB(NOW( ), INTERVAL 3 DAY); 
--BEFORE,变量的date自变量可以为'YYYY-MM-DD hh:mm:ss'格式。这里的清理是指从此刻-3243600s前的文件,是此文件最后更新的时间。
--时间和文件名一定不可以写错,尤其是时间中的年和文件名中的序号,以防不小心将正在使用的binlog删除!!!
--切勿删除正在使用的binlog!!!
# 5、重置所有的日志
reset master;
# 6、手动切换binlog日志
flush logs 
--或者flush binary logs

查看binlog

# 查找mysqlbinlog的工具路径。
find / -name mysqlbinlog
# 将指定时间间隔存入read.txt中,-v是将二进制内容转成sql
mysqlbinlog  -v --start-datetime=``"2022-04-28 00:00:00" --stop-datetime=``"2022-04-28 23:59:59" /var/lib/mysql/mysql-bin.000002 > read.txt
# 

参考:
MySQL Binlog详解.
MySQL清理binlog日志.
mysql查看binlog日志 .
MySQL Reference Manual.

### 查看 MySQL 主库 Binlog 命令的方法 在 MySQL 中,可以通过以下方式查看主库的 Binlog 文件及其内容: 1. **使用 `SHOW MASTER STATUS` 命令** 该命令用于查看当前主库正在使用的 Binlog 文件以及其位置(Position)。执行如下命令: ```sql SHOW MASTER STATUS; ``` 输出结果通常包括以下字段: - File: 当前正在写入的 Binlog 文件名。 - Position: 当前 Binlog 文件中的位置。 - Binlog_Do_DB Binlog_Ignore_DB: 指定哪些数据库会被记录或忽略。 示例输出: ``` +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000003| 456 | test | | +------------------+----------+--------------+------------------+ ``` 这个命令可以快速了解当前主库的 Binlog 状态[^2]。 2. **使用 `mysqlbinlog` 工具查看 Binlog 内容** 如果需要查看 Binlog 文件的具体内容,可以使用 `mysqlbinlog` 工具。例如: ```bash mysqlbinlog /var/lib/mysql/mysql-bin.000003 ``` 该命令会将指定 Binlog 文件的内容以文本形式输出。如果只想查看特定范围的内容,可以结合 `--start-position` `--stop-position` 参数。例如: ```bash mysqlbinlog --start-position=100 --stop-position=200 /var/lib/mysql/mysql-bin.000003 ``` 此外,还可以将 Binlog 内容导出到 SQL 文件中,以便后续分析或恢复操作[^1]。 3. **通过 `SHOW BINARY LOGS` 查看所有 Binlog 文件** 如果需要列出主库上所有的 Binlog 文件,可以使用以下命令: ```sql SHOW BINARY LOGS; ``` 输出结果将显示所有可用的 Binlog 文件及其大小。例如: ``` +------------------+-----------+ | Log_name | File_size | +------------------+-----------+ | mysql-bin.000001| 12345 | | mysql-bin.000002| 67890 | | mysql-bin.000003| 23456 | +------------------+-----------+ ``` 这个命令可以帮助用户了解主库上有哪些 Binlog 文件存在[^2]。 4. **查看 Binlog 格式** 如果需要确认当前主库的 Binlog 格式(如 STATEMENT、ROW 或 MIXED),可以执行以下命令: ```sql SHOW GLOBAL VARIABLES LIKE 'binlog_format'; ``` 输出结果示例: ``` +---------------+-------+ | Variable_name | Value | +---------------+-------+ | binlog_format | ROW | +---------------+-------+ ``` 这个命令对于排查主从同步问题非常有用,尤其是在切换 Binlog 模式后[^3]。 5. **通过 `mysqlbinlog` 查找特定位置的 Binlog 数据** 如果知道某个事件的 Binlog 文件名位置,可以直接定位到该事件。例如: ```bash mysqlbinlog --start-position=456 /var/lib/mysql/mysql-bin.000003 ``` 这种方法适用于精确查找特定的 Binlog 数据[^4]。 --- ### 注意事项 - 在生产环境中使用 `mysqlbinlog` 工具时,建议将其输出重定向到文件,以避免直接在终端中查看大量数据。 - 如果主库启用了 GTID(全局事务标识符),可以使用 `SHOW MASTER STATUS` 结合 GTID 信息进行更高效的同步管理[^4]。 ```sql SHOW MASTER STATUS\G ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值