首先
1查看binlog日志是否开启
mysql> show variables like ‘log_%’;
如没有则打开mysql的bin log功能:
对于mysql也是支持增量备份,但要打开mysql的bin log功能。
我们修改mysql的配置文件。linux是/etc/my.cnf,windows是mysql的安装目录/my.ini
我们在[mysqld]下面加上log-bin一行代码
[mysqld]
log-bin=mysql-bin
使用 service 启动:service mysql restart。
之后自己也做了一个简单的测试,对数据进行恢复,具体如下:
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里面数据插入的纪录,把删除之前的数据进行恢复
因为删掉的只是一条数据,位置在718~764之间,所以用binlog查出插入的步骤。重新插入(恢复记录)。
从binlog日志恢复数据
a、恢复命令的语法格式:
mysqlbinlog mysql-bin.0000xx | mysql -u用户名 -p密码 数据库名
b、常用参数选项解释:
–start-position=875 起始pos点
--stop-position=954 结束pos点
--start-datetime=“2016-9-25 22:01:08” 起始时间点
--stop-datetime=“2019-9-25 22:09:46” 结束时间点
--database=ops指定只恢复ops数据库(一台主机上往往有多个数据库,只限本地log日志)
c、不常用选项:
-u --user=name 连接到远程主机的用户名
-p --password[=name]连接到远程主机的密码
-h --host=name 从远程主机上获取binlog日志
–read-from-remote-server从某个Mysql服务器上读取binlog日志
d、小结:实际是将读出的binlog日志内容,通过管道符传递给myslq命令。
这里使用命令 mysqlbinlog binlog.000004 --start-position=656 --stop-position=718 |mysql -u root -p
重新查询:已经有数据了。
查看日志,已经把delete的一条记录插入了。如果是删除多条或者drop,就要把破坏的数据按日志重新写入一遍。