mysql的binlog的操作

mysql的binlog日志

binlog日志的好处,binlog可以使我们进行数据恢复和主从复制的操作。
目前我使用的版本是mysql 5.7高版本的可能会有一些不同。但是基本都是一样的。

开启binlog日志

1、 查看是否开启了binlog日志

show variables like "%log_bin%"

查看log_bin 默认情况下是off(关闭)
在这里插入图片描述
2、 编辑配置文件

vim /etc/my.cnf
[mysqld]
# 设置唯一id
server_id = 2
#设置日志路径,注意路经需要mysql用户有权限
log-bin=mysql-bin
# 设置日志格式
binlog_format = MIXED
#设置binlog清理时间
expire_logs_days = 30
#binlog每个日志文件大小
max_binlog_size = 100M
#binlog缓存大小
binlog_cache_size = 4M
#最大binlog缓存大小
max_binlog_cache_size = 512M

扩展: binlog日志的各个级别详情
简单描述:
Row Level: 记录的方式是行,即如果批量修改数据,记录的不是批量修改的SQL语句事件,而是每条记录被更改的SQL语句
Statement Level: 记录每一条修改数据的SQL语句
Mixed: MySQL会根据执行的每一条具体的sql语句来区分对待记录的日志形式,也就是在Statement和Row之间选择一种。
查看binlog类型:

show global variables like "%binlog_format%";

详情: https://blog.csdn.net/qq_38826019/article/details/119718031
3、 重启mysql

systemctl restart mysqld

log_bin 变为on 表示成功。

show variables like "%bin_%"

通过binlog实现数据恢复

1、查看binlog当前在使用那个文件

show master status;

在这里插入图片描述

2、截断日志文件,生成新的日志文件。

sql命令行:
flush-logs

日志文件从 mysql-bin.000025 变为 mysql-bin.000026,而 mysql-bin.000015 则记录着刚刚 insert 命令的日志。

3、 查看日志文件的内容
注意:在查看日志内容的时候,不建议查看当前数据库正在操作的日志文件,可能会出现问题。所以一定要记着flush-logs

show binlog events in 'mysql-bin.000025'; 

在这里插入图片描述
4、 通过Binlog恢复数据

linux命令行:
/usr/bin/mysqlbinlog --database=要恢复的数据库名 /var/lib/mysql/bin-log-1.000025 | /usr/bin/mysql -uxxx -pxxxx -v 要恢复的数据库名

/usr/bin/mysqlbinlog 为binlog命令
--database=hello 指定数据库为hello的日志
/var/lib/mysql/bin-log-1.000001 为binlog日志
| 为管道符
/usr/bin/mysql -uroot -p123456zy -v 要恢复的数据库名 
 连接mysql、并指定需要恢复的数据库 -v 为显示详细信息

5、 通过指定的位置恢复数据

linux命令行:
/usr/bin/mysqlbinlog --start-position=573 --stop-position=718 --database=hello /var/lib/mysql/bin-log-1.000001 | /usr/bin/mysql -uroot -p123456zy -v hello

--start-position=573 开始位置
--stop-position=718  结束位置

在这里插入图片描述

6、 通过指定时间恢复数据

linux命令行:
/usr/bin/mysqlbinlog --start-datetime="2021-06-27 20:58:18" --stop-datetime="2021-06-27 20:58:35" --database=hello /var/lib/mysql/bin-log-1.000001 | /usr/bin/mysql -uroot -p123456zy -v hello

--start-datetime="2021-06-27 20:58:18" 开始时间

--stop-datetime="2021-06-27 20:58:35" 结束时间

查看时间信息:

linux命令行:
/usr/bin/mysqlbinlog --no-defaults /var/lib/mysql/bin-log-1.000001

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值