1.第一步,查询语句:select*fromtable_name或select*fromtable_namewhere条件,如下图。
2.第二步,增加语句或插入数据insertintotable_name(clus...)values(values...)实例如图
3.修改数据:updatetablenamesetxx=xx,xxx=xxwherexxx=xxxandxxx=xxx,如下图。
4.第四步,删除语句deletetable_namewhere条件实例如图。
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'commitselect * 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的bin log功能:对于mysql也是支持增量备份,但要打开mysql的bin log功能。
我们修改mysql的配置文件。linux是/etc/my.cnf,windows是mysql的安装目录/my.ini
我们在[mysqld]下面加上log-bin一行代码,如下面。
[mysqld]
log-bin=mysql-bin
复制代码
加完后重起mysql即可。
某客户更新数据的时候,误删了数据库的内容,因为数据库做了主从,但是没有做备份(备份很重要啊!)幸好开启了bin-log,之后只好把整个日志的记录拿回来本地进行恢复。
之后自己也做了一个简单的测试,对数据进行恢复,具体如下:
1、新建一个表
CREATE TABLE `lynn`.`sn_test` ( `name` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL , `age` INT( 3 ) NOT NULL ) ENGINE = MYISAM
2、插入多条数据
INSERT INTO `lynn`.`sn_test` (`name`, `age`) VALUES ('lynn1', '1')
INSERT INTO `lynn`.`sn_test` (`name`, `age`) VALUES ('lynn2', '2')
INSERT INTO `lynn`.`sn_test` (`name`, `age`) VALUES ('lynn3', '3')
INSERT INTO `lynn`.`sn_test` (`name`, `age`) VALUES ('lynn4', '4')
3、查看数据并删除
mysql>select * from sn_test
+-------+-----+
| name | age |
+---------+---+
| lynn1 | 1 |
| lynn2 | 2 |
| lynn3 | 3 |
| lynn4 | 4 |
+---------+-----+
4 rows in set (0.00 sec)
mysql>delete from sn_test
Query OK, 4 rows affected (0.00 sec)
mysql>select * from sn_test
Empty set (0.00 sec)
4、mysqlbinlog恢复数据
mysqlbinlog mysql-bin.000006 >1.sql
查看1.txt里面数据插入的纪录,把删除之前的数据进行恢复
mysqlbinlog mysql-bin.000006 --start-position=2471 --stop-position=2876 | mysql -uroot -p123
重新登录,查看数据,OK,已经成功恢复了
对于数据库 *** 作,应该注意如下问题:
1、要常备份(全备,增量备份),出了问题可以最快恢复数据;
2、 *** 作数据库前,要把需要 *** 作的数据库或者表dump出来;
3、需要把bin-log打开,就算没有做上面的两步,也可以通过日志恢复数据
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)