docker mysql通过bin-log位置/时间恢复数据

先清空bin-log,生产环境就不要执行reset master;因为会清空所有bin-log日志内容。

确保开启了bin-log日志
/etc/my.cnf

#服务器ID必须唯一
server-id=1
#log-bin的名称默认存放在/var/lib/mysql目录下(可选)
log-bin=mysql-bin
#日志格式:MIXED、STATEMENT、ROW(可选)
binlog_format=MIXED
#设置一个 binlog 文件的最大字节(如100MB)
max_binlog_size=104857600
#日志保存天数(可选)
expire_logs_days=30

先清空日志(生产环境不要reset master;这样做!)

mysql -uroot -p
mysql> reset master;
mysql> show variables like '%log_bin%';
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      156 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+

然后创建数据库,写入数据,可以用工具,也可以用sql,我就用工具了。

在这里插入图片描述
创建了一个demo库和一张quality_testing表,以及一行数据。

删除数据库,通过bin-log恢复数据

mysql> SHOW BINLOG EVENTS IN 'mysql-bin.000001';

在这里插入图片描述
因此得出:我们只要8078结束即可恢复已经被删除的数据。

mysql> exit
#退出容器里的数据库,回到容器,执行恢复数据语句。如果不填start-position则恢复binlog从头到stop-position的数据
root@8c33acc9c8cc:/# /usr/bin/mysqlbinlog --no-defaults --stop-position=8078 --database=demo  /var/lib/mysql/mysql-bin.000001 | /usr/bin/mysql -uroot -p123456
#执行完,数据已经恢复了。重新进入容器里的mysql
root@8c33acc9c8cc:/# mysql -uroot -p123456
mysql> SHOW BINLOG EVENTS IN 'mysql-bin.000001';

如果想按时间恢复,不填start-datetime="2022-10-20 00:00:00"则从binlog日志开头恢复到结束时间为止。

mysqlbinlog -v --start-datetime="2022-10-20 00:00:00" --stop-datetime="2022-10-20 16:50:00" mysql-bin.000001 | /usr/bin/mysql -uroot -p123456
其它相关命令
#重置日志
reset master;
#查看是否开启日志
show variables like '%log_bin%';
#查看日志列表
SHOW MASTER LOGS;
#查看当前binlog以及当前位置
SHOW MASTER STATUS;
#查看binlog内容
##从哪个位置开始
show binlog events in 'mysql-bin.000001' FROM 396;
##获取多少行
SHOW BINLOG EVENTS IN 'mysql-bin.000001' limit 10,5;
#开启新日志binlog,即:新增文件mysql-bin.000002,并使用新文件进行记录日志
FLUSH LOGS;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值