可以看到当前使用的日志文件为'master-bin.000023',事务位置为 MASTER_LOG_POS=4270;这样从4270这个位置进行二进制日志的备份便可,而4270之前的数据可以用备份直接进行还原;这样就做到了即时点数据还原
下面将演示完全备份+增量备份+数据即时点还原
[root@node1 data]# mysqldump -uroot -p --master-data=2 --flush-logs --all-databases --lock-all-tables > /root/All.sql 做完全备份
Enter password:
[root@node1 data]# mysql
mysql> use mydb;
Database changed
mysql> select * from test1;
+-----+-------+-----+
| cid | name | sid |
+-----+-------+-----+
| 1 | zxl | A |
| 3 | fade | C |
| 4 | faded | D |
| 5 | my | E |
+-----+-------+-----+
4 rows in set (0.00 sec)
mysql> delete from test1 where; 第一天进行了数据删除
Query OK, 1 row affected (0.01 sec)
mysql> flush logs;
Query OK, 0 rows affected (0.04 sec)
mysql> \q
[root@node1 data]# mysql -e 'show master status' 查看当前使用的二进制日志是哪个
+-------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| master-bin.000027 | 120 | | | |
+-------------------+----------+--------------+------------------+-------------------+
可以看到当前使用的日志为 master-bin.000027 ,则master-bin.000026为过去一天的增量产生的二进制日志
[root@node1 data]# cp master-bin.000026 /root/monday-increment.sql 进行第一次增量备份
或者用mysqlbinlog命令复制
[root@node1 data]# mysqlbinlog master-bin.000026 /root/monday-increment.sql
[root@node1 ~]# mysql
mysql> use mydb;
Database changed
mysql> insert into test1 (cid,name,sid) values (6,'jiamian','F'); 第二天进行了数据插入
Query OK, 1 row affected (0.06 sec)
mysql> \q
[root@node1 data]# cp master-bin.000027 /root/tuesday-increment.sql 进行第二次增量备份
[root@node1 ~]# cd /mydata/data/
[root@node1 data]# rm -rf ./* 删除所有数据,模拟数据崩溃
[root@node1 data]# service mysqld stop
ERROR! MySQL server PID file could not be found!
[root@node1 data]# killall mysqld
[root@node1 data]# cd /usr/local/mysql/
[root@node1 mysql]# scripts/mysql_install_db --usr=mysql --datadir=/mydata/data/ 先初始化
[root@node1 data]# service mysqld start 在启动mysqld
Starting MySQL SUCCESS!
进行数据恢复
[root@node1 data]# mysql -uroot -p < /root/All.sql 导入完全备份
[root@node1 data]# mysql -uroot -p < /root/monday-increment.sql 导入第一次增��备份
[root@node1 data]# mysql -uroot -p < /root/tuesday-increment.sql 导入第二次增量备份
也可以将上面过程写成一个脚本,让其在半夜自动执行。