首页 / MYSQL / mysql从binlog恢复数据
mysql从binlog恢复数据
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql从binlog恢复数据,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2557字,纯文字阅读大概需要4分钟。
内容图文
![mysql从binlog恢复数据](/upload/InfoBanner/zyjiaocheng/512/aad77c68af224929ad5d2b57e10b8386.jpg)
修改好之后, 重启mysql服务:
systemctl restart mysqld.service
好了, 现已开启了binlog了, 可以在 /var/lib/mysql下找到如下文件:
先登录进去mysql的命令行( mysql -uroot -pxxxxxx ), 看一下状态:
可以看到当前是使用mysql-bin.000001这个文件来记录binlog的. 当前位置是154, 我观察到对每个binlog在文件, 当还没有什么操作的时候, 位置都会是154.
也可以看一下binlog相关的几个变量:
2. 测试恢复数据
下面添加一些测试数据:
create database testbindb; use testbindb; create table test_order(id int(10), primary key(id) ) engine=innodb; insert into test_order values(1); insert into test_order values(2); insert into test_order values(3); insert into test_order values(4); insert into test_order values(5); insert into test_order values(6); insert into test_order values(7);
完事看一眼表:
然后删除这个表:
drop table test_order;
然后把binlog强制写入并重开一个binlog文件:
flush logs;
再看一眼表, 已经不在了:
再看一眼状态:
可以看到已经在使用第二个binlog文件了, 相当于之前的建表, 添加测试数据, 再删除表等操作都记录在了mysql-bin.000001里了.
先看一眼这个binlog文件里的内容:
假设我们删除表的操作是误操作, 所以我们希望数据可以恢复到删除前一个操作结束后的状态.
使用mysqlbinlog命令可以达到目的:
mysqlbinlog /var/lib/mysql/mysql-bin.000001 --start-position 154 --stop-position 2327 | mysql -uroot -p
这里表示要把 mysql-bin.000001 文件里位置154到2327之间的操作进行恢复. 这里有两个要注意的地方:
- binlog文件位置要使用绝对路径, 否则会说找不到文件, 从而无法恢复
- 后面接的 | mysql -uroot -p 不能省略, 我个人认为是恢复的时候需要登录, 可以理解
恢复完成后, 刚刚删除的那张表就回来了:
mysqlbinlog命令据说还有以下参数可用:
- --start-datetime:从二进制日志中读取指定等于时间戳或者晚于本地计算机的时间
- --stop-datetime:从二进制日志中读取指定小于时间戳或者等于本地计算机的时间 取值和上述一样
- --start-position:从二进制日志中读取指定position 事件位置作为开始。
- --stop-position:从二进制日志中读取指定position 事件位置作为事件截至
mysql从binlog恢复数据
标签:参数 alt 有一个 找不到文件 datetime systemctl 目的 删除表 位置
本文系统来源:https://www.cnblogs.com/lihan829/p/11408061.html
内容总结
以上是互联网集市为您收集整理的mysql从binlog恢复数据全部内容,希望文章能够帮你解决mysql从binlog恢复数据所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。