一 数据一致性
在上一篇文章中我们提到热拷贝(MySQL备份与恢复之热拷贝),热拷贝也就是在MySQL或者其他数据库服务在运行的情况下使用mysqlhotcopy命令进行备份。这篇文章我们讲解怎样保证数据一致性。现在假设有这样一种情况,我们总是在凌晨对数据库进行备份,假设在凌晨之后发生数据库异常,并且导致数据丢失。这样凌晨之前的数据我们已经做了备份,但是凌晨到发生异常这段时间的数据就会丢失(没有binlog的情况下)。好在InnoDB存储引擎支持事务,也支持Binlog,凌晨到发生异常这段时间的数据就可以通过日志文件进行备份。所以,日志文件是非常重要,非常关键的。我们备份不仅要对数据进行备份,如果条件允许还需要对二进制文件进行备份。当然备份好数据之后,可以清空二进制文件,但如果为了长远考虑,比如恢复出来的数据并不是我们想要的,我们就需要备份二进制文件了。还有一点切记,恢复数据需要转到测试数据库中做,不要在生产环境中做。待测试库中测试没有问题,再在生产环境中做。
二 示意图
三 保证数据一致性模拟
第一步,验证数据
[root@serv01 databackup]# rm -rf *[root@serv01 databackup]# lsmysql> use larrydb;Database changedmysql> 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: 1Changed: 1Warnings: 0mysql> 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: 1Changed: 1Warnings: 0mysql> select * from stu;+------+----------+------+| sid| sname| cid|+------+----------+------+|1 | larry007 |1 |+------+----------+------+1 row in set (0.00 sec)[root@serv01 data]# dateTue Sep 10 19:38:24 CST 2013
更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2013-11/93168p2.htm
相关阅读:MySQL备份和恢复具体实施 http://www.linuxidc.com/Linux/2012-12/76257.htmMySQL备份:mylvmbackup介绍与使用 http://www.linuxidc.com/Linux/2013-11/92423.htmLinux下通过mysqldump备份MySQL数据库成sql文件 http://www.linuxidc.com/Linux/2013-02/79793.htmLinux中使用mysqldump对MySQL数据库进行定时备份 http://www.linuxidc.com/Linux/2012-03/56063.htm磁盘管理——LVM http://www.linuxidc.com/Linux/2013-11/93165.htm
MySQL备份与恢复之热拷贝关于报错“ORA-01747: user.table.column, table.column 或列说明无效”的解决办法相关资讯 mysql备份与恢复
- MySQL备份与恢复之percona- (12/01/2013 20:16:43)
- MySQL备份与恢复之热拷贝 (11/26/2013 06:38:36)
- MySQL备份与恢复之真实环境使用冷 (11/26/2013 06:17:25)
| - MySQL备份与恢复之percona- (12/01/2013 20:10:57)
- MySQL备份与恢复之热备 (11/26/2013 06:34:04)
- MySQL备份与恢复之冷备 (11/26/2013 06:14:03)
|
本文评论 查看全部评论 (0)