CentOS下利用mysqlbinlog恢复MySQL数据库

如果不小心对数据库进行误操作,而又没有及时备份怎么办?这恐怕是广大的coder经常遇到的一类问题。
我今天就因为不小心删除了某个数据库,但最后的备份是1个礼拜前的,唯一能解决的办法就是通过mysqlbinlog来恢复了。解决方案如下:

如果MySQL服务器启用了二进制日志,你可以使用mysqlbinlog工具来恢复从指定的时间点开始(例如,从你最后一次备份)直到现在或另一个指定的时间点的数据。
关于启用二进制日志的信息,参见5.11.3节,“二进制日志”。对于mysqlbinlog的详细信息,参见mysql手册8.6节,“mysqlbinlog:用于处理二进制日志文件的实用工具”。
要想从二进制日志恢复数据,你需要知道当前二进制日志文件的路径和文件名。
一般可以从配置文件(一般情况,Linux下为my.cnf ,windows系统下为my.ini,取决于你的系统)中找到路径。如果未包含在选项文件中,当服务器启动时,可以在命令行中以选项的形式给出。
启用二进制日志的选项为–log-bin。
要想确定当前的二进制日志文件的文件名,输入下面的MySQL语句:
SHOW BINLOG EVENTS \G;
或者还可以从命令行输入下面的内容:
mysql –user=root -pmypasswd -e ‘SHOW BINLOG EVENTS \G’ 将密码mypasswd替换为你的MySQL服务器的root密码。

比如得到的日志文件名为:
mysql-bin.000001 1. 指定恢复时间 对于MySQL5.1.54,可以在mysqlbinlog语句中通过–start-date和–stop-date选项指定DATETIME格式的起止时间。

举例说明,比如在今天下午14:02(今天是2012年3月15日),不小心执行SQL语句删除了一个数据表,但发现没有最新的备份(当然,这只是开发环境,并不是正式的生产环境,正式环境还得定时做数据备份)。要想恢复表和数据,可以通过mysqlbinlog恢复指定时间的备份,输入:
mysqlbinlog –stop-date=”2012-03-15 14:02:00″ /data1/log/mysql/mysql-bin.000001  | mysql -u root -pmypasswd
该命令将恢复截止到在–stop-date选项中以DATETIME格式给出的日期和时间的所有数据。

如果你没有检测到输入的错误的SQL语句,可能你想要恢复后面发生的数据库活动。
根据这些,你可以用起使日期和时间再次运行mysqlbinlog:
mysqlbinlog –start-date=”2012-03-15 00:01:00″ /data1/log/mysql/mysql-bin.000001  | mysql -u root -pmypasswd

在该行中,从今天凌晨0:01登录的SQL语句将运行,组合执行前夜的转储文件和mysqlbinlog的两行可以将所有数据恢复到今天凌晨0:01前一秒钟。
你应检查日志以确保时间确切。下一节介绍如何实现。

2. 指定时间段恢复 通过mysqlbinlog –start-date 和–stop-date恢复指定时间段的数据库活动记录,如下:
mysqlbinlog –start-date=”2012-03-09 02:00:00″ –stop-date=”2012-03-15 14:00:00″ /data1/log/mysql/mysql-bin.000001 > /tmp/mysql_restore_030915.sql
通过这种方式,就能获取最后一个备份的文件时间2012-03-09 02:00:00到今天删除数据库之前2012-03-15 14:02这段时间的数据库活动事务操作

原文地址:https://www.cnblogs.com/smilezgy/p/9545478.html

时间: 2024-08-29 06:13:39

CentOS下利用mysqlbinlog恢复MySQL数据库的相关文章

Linux CentOS下安装、配置mysql数据库

如果要在Linux上做j2ee开发,首先得搭建好j2ee的开发环境,包括了jdk.tomcat.eclipse的安装(这个在之前的一篇随笔中已经有详细讲解了Linux学习之CentOS(七)--CentOS下j2ee环境搭建),如果要开发web项目,我们当然可以安装一个myeclipse到Linux系统上去,这个安装方法和安装eclipse完全相同,就没有记录下来了,有了jdk.tomcat.eclipse我们就已经能进行我们的程序开发了,但是如果要做一个项目,哪怕是小的不能再小的项目都离不开数

CentOS下每天自动备份mysql数据库

每天自动备份mysql数据库的脚本,并且自动发送到你指定的邮箱面,这样vpser再也不会为丢失数据烦恼啦. mysqldump -uuser -ppassword –databases db1 db2 db3 > /home/website/backups/databackup.sql tar zcf /home/website/backups/databackup.sql.tar.gz /home/website/backups/ echo "主题:数据库备份" |mutt  

linux(centos)下每天自动备份mysql数据库

1.先在服务器下建文件夹以下3个文件夹:mkdir /bak,mkdir /bak/  bakmysql,mkdir /bak/bakmysqlold .在/bak/bakmysql文件夹下建一个shell脚本:touch /bak/bakmysql/backup.sh .给文件授权:chmod 755 /bak/bakmysql/backup.sh . 2.编辑shell脚本:vi /bak/bakmysql/backup.sh #!/bin/sh cd /bak/bakmysql echo 

CentOS 下利用Rsyslog+LogAnalyzer+MySQL部署日志服务器

一.安装并设置LAMP环境       yum -y install httpd mysql* php* 二.安装Rsyslog     服务器端:    yum install  rsyslog rsyslog-mysql      rsyslog-mysql :将日志传送到MySQL 数据库     mysql -uroot -p1234 < /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql    配置数据权限    # mysql -uroo

CentOS 6.5下利用Rsyslog+LogAnalyzer+MySQL部署日志服务器

一.简介 LogAnalyzer 是一款syslog日志和其他网络事件数据的Web前端.它提供了对日志的简单浏览.搜索.基本分析和一些图表报告的功能.数据可以从数据库或一般的syslog文本文件中获取,所以LogAnalyzer不需要改变现有的记录架构.基于当前的日志数据,它可以处理syslog日志消息,Windows事件日志记录,支持故障排除,使用户能够快速查找日志数据中看出问题的解决方案. LogAnalyzer 获取客户端日志会有两种保存模式,一种是直接读取客户端/var/log/目录下的

如何在删除ibdata1和ib_logfile的情况下恢复MySQL数据库

昨天,有个朋友对公司内部使用的一个MySQL实例开启binlog,但是在启动的过程中失败了(他也没提,为何会失败),在启动失败后,他删除了ibdata1和ib_logfile,后来,能正常启动了,但所有的表通过show tables能看到,但是select的过程中却报“Table doesn't exist”. 于是,建议他试试可传输表空间. 同时,自己也测试了下,确实可行. 测试版本 MySQL 5.6.32 社区版 首先,创建测试数据 在这里创建两张表.之所以创建两张相同的表是为了方便后续的

Centos 5.2下安装多个mysql数据库

一.编译安装第一个MySQL 5.1.33 cd /opt/usr/sbin/groupadd mysql/usr/sbin/useradd -g mysql mysql -s /bin/nologin -d /usr/local/mysqltar -zxvf mysql-5.1.33.tar.gzcd mysql-5.1.33/./configure --prefix=/usr/local/mysql/ --enable-assembler --with-extra-charsets=comp

利用Xtrabackup进行mysql数据库的备份

利用Xtrabackup来实现数据库的备份 Xtrabackup是有percona公司开发的一款开源备份工具,它与ibbackup这个备份工具不同的是.ibbackup是一个收费的备份工具,而且在其备份性能上,ibbackup不如Xtrabackup.ibbackup和Xtrabackup都对Innodb存储引擎支持在线物理完全备份和在线物理增量备份,对MyISAM存储引擎来说,只支持温备份而已.更对关于两者的特性比较,请参考http://www.percona.com/software/per

烂泥:通过binlog恢复mysql数据库

本文首发于烂泥行天下. 在上一篇文章,我们讲解了有关mysql的binlog日志的基础知识.这篇文章,我们来讲解如何通过mysql的binlog日志来恢复数据库. 在使用binlog日志来恢复数据库之前,我们有一些前提工作需要做.步骤如下: 1.创建新的数据库ailanni 2.创建新的表ilannitable 3.向表ilannitable插入数据 4.刷新mysqlbin日志 5.完整备份ailanni数据库 6.删除表ilannitable插入的部分数据 7.删除数据库ailanni 8.