mysql 一致性备份_MySQL备份与恢复之保证数据一致性

一 数据一致性

在上一篇文章中我们提到热拷贝(MySQL备份与恢复之热拷贝),热拷贝也就是在MySQL或者其他数据库服务在运行的情况下使用mysqlhotcopy命令进行备份。这篇文章我们讲解怎样保证数据一致性。现在假设有这样一种情况,我们总是在凌晨对数据库进行备份,假设在凌晨之后发生数据库异常,并且导致数据丢失。这样凌晨之前的数据我们已经做了备份,但是凌晨到发生异常这段时间的数据就会丢失(没有binlog的情况下)。好在InnoDB存储引擎支持事务,也支持Binlog,凌晨到发生异常这段时间的数据就可以通过日志文件进行备份。所以,日志文件是非常重要,非常关键的。我们备份不仅要对数据进行备份,如果条件允许还需要对二进制文件进行备份。当然备份好数据之后,可以清空二进制文件,但如果为了长远考虑,比如恢复出来的数据并不是我们想要的,我们就需要备份二进制文件了。还有一点切记,恢复数据需要转到测试数据库中做,不要在生产环境中做。待测试库中测试没有问题,再在生产环境中做。

二 示意图

4ebb8d5068e5e92adec283621afd248c.png

三 保证数据一致性模拟

第一步,验证数据

[root@serv01 databackup]# rm -rf *

[root@serv01 databackup]# ls

mysql> use larrydb;

Database changed

mysql> show tables;

+-------------------+

| Tables_in_larrydb |

+-------------------+

| class |

| stu |

+-------------------+

2 rows in set (0.00 sec)

mysql> select * from class;

+------+--------+

| cid | cname |

+------+--------+

| 1 | linux |

| 2 | Oracle |

+------+--------+

2 rows in set (0.00 sec)

mysql> select * from stu;

+------+---------+------+

| sid | sname | cid |

+------+---------+------+

| 1 | larry01 | 1 |

| 2 | larry02 | 2 |

+------+---------+------+

2 rows in set (0.00 sec)

第二步,备份数据

[root@serv01 databackup]# mysqldump -uroot -p123456 --database larrydb > larrydb.sql

[root@serv01 databackup]# ll larrydb.sql

-rw-r--r--. 1 root root 2613 Sep 10 19:34 larrydb.sql

第三步,清空日志,因为已经做了备份,所以不需要以前的日志

mysql> show binary logs;

+------------------+-----------+

| Log_name | File_size |

+------------------+-----------+

| mysql-bin.000001 | 27320 |

| mysql-bin.000002 | 1035309 |

| mysql-bin.000003 | 1010 |

| mysql-bin.000004 | 22809 |

| mysql-bin.000005 | 9860 |

| mysql-bin.000006 | 5659 |

| mysql-bin.000007 | 126 |

| mysql-bin.000008 | 10087 |

| mysql-bin.000009 | 8293 |

| mysql-bin.000010 | 476 |

| mysql-bin.000011 | 218 |

| mysql-bin.000012 | 126 |

| mysql-bin.000013 | 1113 |

| mysql-bin.000014 | 1171 |

| mysql-bin.000015 | 126 |

| mysql-bin.000016 | 107 |

| mysql-bin.000017 | 107 |

| mysql-bin.000018 | 13085 |

+------------------+-----------+

18 rows in set (0.00 sec)

mysql> reset master;

Query OK, 0 rows affected (0.01 sec)

mysql> show binary logs;

+------------------+-----------+

| Log_name | File_size |

+------------------+-----------+

| mysql-bin.000001 | 107 |

+------------------+-----------+

1 row in set (0.00 sec)

第四步,更新数据

mysql> insert into class values(3,'Devel');

Query OK, 1 row affected (0.01 sec)

mysql> update class set cname="dab" where cid=2;

Query OK, 1 row affected (0.01 sec)

Rows matched: 1 Changed: 1 Warnings: 0

mysql> select * from class;

+------+-------+

| cid | cname |

+------+-------+

| 1 | linux |

| 2 | dab |

| 3 | Devel |

+------+-------+

3 rows in set (0.00 sec)

mysql> select * from stu;

+------+---------+------+

| sid | sname | cid |

+------+---------+------+

| 1 | larry01 | 1 |

| 2 | larry02 | 2 |

+------+---------+------+

2 rows in set (0.00 sec)

mysql> delete from stu where cid=2;

Query OK, 1 row affected (0.00 sec)

mysql> update stu set sname="larry007" where sid=1;

Query OK, 1 row affected (0.00 sec)

Rows matched: 1 Changed: 1 Warnings: 0

mysql> select * from stu;

+------+----------+------+

| sid | sname | cid |

+------+----------+------+

| 1 | larry007 | 1 |

+------+----------+------+

1 row in set (0.00 sec)

[root@serv01 data]# date

Tue Sep 10 19:38:24 CST 2013

相关阅读:

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值