一:大体介绍
MySQL通过在全备份基础上保证完整的二进制日志文件来达到增量备份的目的。
Ø 备份
1 开启二进制日志
2 全备(可以利用mysqldump)
Ø 恢复
1 利用全备进行恢复
2 利用全备以来的所有二进制日志进行完全恢复
二:具体实验步骤
2.1:开启二进制日志
---- mysql默认没有启二进制日志。
vi my.cnf
在[mysqld]下添加: log-bin=mysql-bin
--linux版本是my.cnf,一般会放在/etc/my.cnf,/etc/mysql/my.cnf,/usr/my.cnf
--winows下的是my.ini,一般会在安装目录的根目录
2.2:重启mysql服务
[root@target_pc mysql]# service mysql restart
Shutting down MySQL.. [ OK ]
Starting MySQL. [ OK ]
--然后可以在mysql data目录下看到“mysql-bin.数字编号”的文件,如mysql-bin.000001
2.3:准备测试数据
现有测试数据如下:
Database changed
+------+
| id |
+------+
| 1 |
| 2 |
+------+
2.4:对当前数据库dba做个全备
2.5 flush logs
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000007 | 3398 |
+------------------+-----------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.09 sec)
mysql> show binary logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000007 | 3445 |
| mysql-bin.000008 | 120 |
+------------------+-----------+
2 rows in set (0.00 sec)
2.6:模拟在全备后,进行新的DML操作
Query OK, 1 row affected (0.00 sec)
2.7:用全备恢复
Query OK, 0 rows affected (0.09 sec)
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000007 | 3445 |
| mysql-bin.000008 | 375 |
| mysql-bin.000009 | 120 |
+------------------+-----------+
3 rows in set (0.00 sec)
Warning: Using a password on the command line interface can be insecure.
+------+
| id |
+------+
| 1 |
| 2 |
+------+
2 rows in set (0.00 sec)
2.8:利用二进制日志恢复
Warning: Using a password on the command line interface can be insecure.
+------+
| id |
+------+
| 1 |
| 2 |
| 3 |
+------+
3 rows in set (0.01 sec)
---------------------------------华丽的分割线-------------------------------------
-----------下面的与本实验测试数据无关,但也是一种恢复案例------------------
---- 假如要恢复之前误删的表-------------------------------------------
DROP TABLE `iqe_ftpkpi`这个命令的end_log_pos为161349913。
于是恢复全量备份后运行以下命令:
mysqlbinlog --stop-position="161349912" “E:\MySQL Server5.5\data\log-bin.000022” \mysql -u root -pgoogle
mysqlbinlog --start-position="161349914" “E:\MySQL Server5.5\data\log-bin.000022” \mysql -u root -pgoogle
第一个命令将恢复到位置161349912为止的所有事务,
第二个命令将恢复从位置161349914直到二进制日志结束的所有事务,
由此可以跳过删除表操作恢复到当前时间的数据库。
--本文参考http://wenku.baidu.com/view/665ec743a417866fb84a8eaf.html