数据库误删某表恢复方法,这个前提是针对每天有备份的数据库 ,如果没有备份 恢复起来会非常非常麻烦,所以奉劝大家还是要备份!备份!备份!
站在用户的角度思考问题,与客户深入沟通,找到行唐网站设计与行唐网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站建设、网站设计、企业官网、英文网站、手机端网站、网站推广、域名与空间、网站空间、企业邮箱。业务覆盖行唐地区。
/*首先查看一下数据表中的数据*/MariaDB [drop_test] select * from python_test;+----+-----------+------------+| id | name | class_time |+----+-----------+------------+| 1 | 字典 | 3 || 2 | 列表 | 2 || 3 | 函数 | 5 || 4 | 装饰器 | 2 || 5 | 迭代器 | 2 |+----+-----------+------------+5 rows in set (0.00 sec)
/*备份*/mysqldump -uroot -p111111 -B drop_test drop_test.sql
/*再插入数据后删除数据库*/MariaDB [drop_test] INSERT INTO python_test(id,name,class_time) value(6,'生成器',2);
Query OK, 1 row affected (0.01 sec)
MariaDB [drop_test] INSERT INTO python_test(id,name,class_time) value(7,'类的方法',5);
Query OK, 1 row affected (0.00 sec)
删除数据库
MariaDB [drop_test] drop database drop_test ;
Query OK, 1 row affected (0.01 sec)
切记这个时候不要有任何的操作!!!
/*这个时候要将当前的binlog日志拷贝到其他目录,以免后续操作对binlog日志产生影响*/cp /var/lib/mysql/mysql-bin.000006 /home
/*执行命令*/mysqlbinlog -d drop_test mysql-bin.000006 006bin.sql
编辑006bin.sql将里面的drop全部删除
最后则是开始恢复数据
/*首先恢复备份文件*/mysql -uroot -p111111 drop_test drop_test.sql
/*查看数据库备份文件*/MariaDB [(none)] show databases;+--------------------+| Database |+--------------------+| information_schema || drop_test || for_bak || lhc || mysql || performance_schema || test |+--------------------+7 rows in set (0.00 sec)/*备份的数据已经恢复了*/MariaDB [drop_test] show tables;+---------------------+| Tables_in_drop_test |+---------------------+| python_test |+---------------------+1 row in set (0.00 sec)
MariaDB [drop_test] select * from python_test;+----+-----------+------------+| id | name | class_time |+----+-----------+------------+| 1 | 字典 | 3 || 2 | 列表 | 2 || 3 | 函数 | 5 || 4 | 装饰器 | 2 || 5 | 迭代器 | 2 |+----+-----------+------------+5 rows in set (0.00 sec)
接下来恢复备份之后被删除的数据
mysql -uroot -p111111 drop_test 006bin.sql
/*恢复后查看数据*/MariaDB [drop_test] select * from python_test;+----+--------------+------------+| id | name | class_time |+----+--------------+------------+| 1 | 字典 | 3 || 2 | 列表 | 2 || 3 | 函数 | 5 || 4 | 装饰器 | 2 || 5 | 迭代器 | 2 || 6 | 生成器 | 2 || 7 | 类的方法 | 5 |+----+--------------+------------+7 rows in set (0.00 sec)
1、首先构建测试环境数据create table t1(a varchar(10),b varchar(10));insert into t1 values('1','1');insert into t1 values('2','2');commit;。
2、模拟误修改,将t1表中的b字段更新为错误数据 "123456"update t1 set b='123456' where a='1';commit;select * from t1;。
3、将恢复工具上传到服务器并进行解压。unzip binlog2sql-master.zip。
4、得到误修改时的binlog文件(show binary logs;),实验环境是mysql-bin.000011。
5、通过 binlog2sql.py 脚本的到所有 对表 t1 的修改操作。python binlog2sql.py -hlocalhost -P23307 -ubinlog2sql -p'binlog2sql' -dtest -tt1 --start-file='mysql-bin.000011'。
6、得到了误删除的sql的准确位置在1382-1615之间,使用 _**-B**_ 选项生成回滚sql。python binlog2sql.py -hlocalhost -P23307 -ubinlog2sql -p'binlog2sql' -dtest -tt1 --start-file='mysql-bin.000011' --start-position=1382 --stop-position=1615 -B。
7、执行得到的回滚语句进行误操作恢复。就完成了。
使用mysql中的日志功能。 首先:将最近的二进制类型的日志文件存成文本文件导出,命令如下:
mysqlbinlog F:/wamp/mysql-bin.000045 F:/test.txt
其次:打开保存的txt文件,文件格式如下:
其中at 1099代表第1099个命令(姑且这么记),查询这些命令,看看需要回复的命令在什么地方,然后执行命令。
最后:执行回复命令,如下:
mysqlbinlog --start-position="123" --stop-position="531" F:/wamp/mysql-bin.000045 F:/test.txt | mysql -uroot -p
这样就可以完成数据库的回复了!!!