mysql旧日志_mysql-通过备份的旧数据+mysqlbin日志进行数据恢复-yc

测试服务器数据被误删除,使用备份的旧数据+mysqlbin日志进行大部份数据的恢复

步骤记录如下:

1、还原备份的数据;

2、先查看mysql-bin日志文件的时间

ll /var/lib/mysql/mysql-bin.*

-rw-rw---- 1 mysql mysql     117 Jun  7 03:10 /var/lib/mysql/mysql-bin.000065

-rw-rw---- 1 mysql mysql 3475332 Jun 29 18:13 /var/lib/mysql/mysql-bin.000066

比如备份的旧数据为2012-06-20号,则需要找到备份后日志所写入的文件;

mysql-bin.000065文件时间为2012-06-07,mysql-bin.000066文件时间为2012-06-29

则可以判断,20号后写入的日志文件为:mysql-bin.000066

3、使用mysqlbinlog进行确认

mysqlbinlog /var/lib/mysql-bin.000066 > /tmp/mysql.log

vi /tmp/mysql.log

/*!*/;

# at 622

#120607 11:37:56 server id 1  end_log_pos 792   Query   thread_id=56    exec_time=0     error_code=0

SET TIMESTAMP=1339040276/*!*/;

update postoffice.domain set po_status=1,relay_ip='192.168.146.174',is_service='1' where domain = 'luly180.com'

文件中,会有类似上述的一些信息;

# at 622——表示日志文件位置为622

#120607 11:37:56——表示操作时间为120607 11:37:56

根据时间点及操作的语句,在还原的数据库确认是否已经操作过;

查找到备份数据后第一个操作的语句及对应的时间;

以及误操作语句及对应的时间;

4、日志数据导出;

假设备份数据后第一个操作语句的时间为:2012-06-20 14:09:02

误操作前一条语句的时间为:2012-06-27 08:54:31

则导出这个时间段内的数据:

mysqlbinlog --start-date="2012-06-20 14:09:02" --stop-date="2012-06-27 08:54:31" /var/lib/mysql-bin.000066 > /tmp/mysql_restore.sql

5、对/tmp/mysql_restore.sql进行确认,是否为需要恢复的数据;

6、确认后,进行数据的恢复;

source /tmp/mysql_restore.sql;

7、对恢复后的数据进行确认;

#######################################################

附:mysql备份脚本,对/var/lib/mysql目录进行备份,备份文件如:mysql.20120702.tar.gz;再对两天前的文件进行清理;即只留最近三天的备份数据;

#!/bin/bash

#每天进行mysql数据库的备份,并且清理两天前的备份数据;

d=`date +'%Y%m%d'`

d1=`date -d '-3 day' +'%Y%m%d'`

cd /var/lib

tar czvf mysql.$d.tar.gz mysql

if [[ $? -ge 0 ]]

then

rm -rf /var/lib/mysql.$d1.tar.gz

fi

crond中增加每天定时04点30分,执行任务:

30 04 * * * root /usr/local/luly/backmysql.sh

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值