删除数据库,但是把二进制日志文件复制出去,假设日志文件和数据不在同一目录存储,不然如果连二进制日志文件也删除了就没有办法做时间点恢复了
[root@localhost date]# cp mysql-bin.000008 /root/
[root@localhost date]# rm -rf ./*
这时就会发现MySQL停止不了了,所以只要关闭进程
[root@localhost date]# service mysqld stop
MySQL server PID file could not be found! [失败]
[root@localhost date]# killall mysqld
初始化MySQL数据库
[root@localhost date]# cd /usr/local/mysql/
[root@localhost mysql]# scripts/mysql_install_db --user=mysql --datadir=/mydate/date/
首先还原完全备份的数据库文件
[root@localhost ~]# mysql -uroot -p < alldatabases.sql
这时数据就恢复到了完全备份之前
被删除的大于80岁的两个用户还存在
mysql> USE jiaowu;
Database changed
mysql> SELECT * FROM tutors;
+-----+--------------+--------+------+
| TID | Tname | Gender | Age |
+-----+--------------+--------+------+
| 1 | HongQigong | M | 93 |
| 2 | HuangYaoshi | M | 63 |
| 3 | Miejueshitai | F | 72 |
| 4 | OuYangfeng | M | 76 |
| 5 | YiDeng | M | 90 |
| 6 | YuCanghai | M | 56 |
| 7 | Jinlunfawang | M | 67 |
| 8 | HuYidao | M | 42 |
| 9 | NingZhongze | F | 49 |
+-----+--------------+--------+------+
9 rows in set (0.00 sec)
将第一次和第二次备份的二进制文件转化为sql文件,然后导入第一次的增量备份和第二次的增量备份
[root@localhost ~]# mysqlbinlog mysql-bin.000007 > diyici.sql
[root@localhost ~]# mysqlbinlog mysql-bin.000008 > dierci.sql
[root@localhost ~]# mysql -uroot -p < diyici.sql
Enter password:
[root@localhost ~]# mysql -uroot -p < dierci.sql
Enter password:
这时数据就恢复了
mysql> SELECT * FROM tutors;
+-----+--------------+--------+------+
| TID | Tname | Gender | Age |
+-----+--------------+--------+------+
| 2 | HuangYaoshi | M | 63 |
| 3 | Miejueshitai | F | 72 |
| 4 | OuYangfeng | M | 76 |
| 6 | YuCanghai | M | 56 |
| 7 | Jinlunfawang | M | 67 |
| 8 | HuYidao | M | 42 |
| 9 | NingZhongze | F | 49 |
| 10 | zhangsan | M | NULL |
+-----+--------------+--------+------+
注意:生产环境:在恢复数据库的时候关闭二进制日志文件,不然就产生很多没有用的记录,数据恢复完成后开启记录二进制日志文件
临时性关闭二进制日志记录
mysql> SET sql_log_bin=0;
Query OK, 0 rows affected (0.00 sec)
开启二进制日志文件记录
mysql> SET sql_log_bin=1;
Query OK, 0 rows affected (0.00 sec)
Linux下通过mysqldump备份MySQL数据库成sql文件
Linux中使用mysqldump对MySQL数据库进行定时备份