版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
前续
误删数据库的小朋友们,来看看这个帖子
工具:
1、 Percona XtraBackup
2、 Mysql binlog
限制条件:
Percona XtraBackup只能使用在Linux系统中
步骤
使用Percona XtraBackup恢复之前保存的文件
1、 去阿里的数据恢复下载db备份文件,例如:backup.tar.gz
2、 下载阿里的 rds_backup_extract.sh (https://help.aliyun.com/knowledge_detail/41817.html)
3、 解压 步骤1 下载的内容(backup.tar.gz)
bash rds_backup_extract.sh -f backup.tar.gz(下载的文件) -C /home/mysql/data(解压目录)
4、 恢复数据
innobackupex --defaults-file=/home/mysql/data/backup-my.cnf (配置文件) --apply-log /home/mysql/data (回滚日志)
5、 修改配置文件准备启动db
删除/home/mysql/data/backup-my.cnf下的
#innodb_fast_checksum
#innodb_page_size
#innodb_log_block_size
6、 启动db,启动过程中注意观察log,部分配置不适合当前的mysql版本
mysqld_safe --defaults-file=/home/mysql/data/backup-my.cnf --user=mysql --datadir=/home/mysql/data &
7、 登录db
mysql -uroot
8、 创建用户前需要执行的命令
delete from mysql.db where user<>’root’ and char_length(user)>0;delete from mysql.tables_priv where user<>’root’ and char_length(user)>0;flush privileges;
使用mysql binlog恢复数据
1、下载binlog文件
2、通过mysqlbinlog恢复执行sql
mysqlbinlog -d badge(恢复db名) --skip-gtids=true D:\log\mysql-bin.000907 > test3
3、 打开test3分析数据
- 开始事物的时间:
SET TIMESTAMP=1350355892/*!*/;
BEGIN
- sqlevent起点
#at 1643330 :
为事件的起点,是以1643330字节开始。
- sqlevent 发生的时间点
#121016 10:51:32
:是事件发生的时间,
- serverId
server id 1 :为master 的serverId
- sqlevent终点及花费时间,错误码
end_log_pos 1643885
:为事件的终点,是以1643885 字节结束。
4、 根据事务开始时间或者at选择开始恢复点,根据end_log_post选择结束点执行命令
mysqlbinlog -d badge --stop-datetime="2017-08-01 01:31:00"(开始时间) --stop-position=234871(结束点) --start-position=1382(开始点) --skip-gtids=true(去除gtid) D:\xiaohui\log\mysql-bin.000907 > test3
5、 恢复binlog到db中
mysql -uroot
use badge
source test3
相关知识:
show binary logs; –查看本机的binlog
show binlog events bin-log.0001(log名); –查看本机binlog内容