MySQL之数据备份与和即时点还原(2)

可以看到当前使用的日志文件为'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 导入第二次增量备份

也可以将上面过程写成一个脚本,让其在半夜自动执行。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/d8e5cdd2b7bc554ba891200aaa21ad61.html