码迷,mamicode.com
首页 > 数据库 > 详细

mysqldump 逻辑备份的正确姿势

时间:2015-10-24 01:33:15      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:

在上一篇文章 MySQL 命令行工具之 mysqldump 深入研究 中,我们搞定了mysqldump的参数和基本原理。那么我们该怎么样最好的使用它的?它有哪些坑呢?

1. 利用mysqldump进行逻辑备份

1)全逻辑备份:

mysqldump -uxxx -p --flush-logs --delete-master-logs --all-databases > alldb.sql (每天晚上进行一次全备)

2)增量备份:

mysqladmin flush-logs (每小时刷一下,保存起来,进行了一次增量备份)

3)缺点:

1> --all-databases 包含了 mysql 数据库,其中包含了权限的数据,所以我们应该加上 --flush-privileges,在恢复时,权限才能生效;

     注意 --all-databases 包括了mysql数据库,但是不会包含 information_schema和performance_schema两个数据库。

2> 因为 mysqldump 默认启用了 --lock-tables,所以会导致在备份期间对所有表持有读锁: lock table tb read local,所以所有的update,delete语句

     会被阻塞。但是select语句和insert语句不会被阻塞。

3> --delete-master-logs 备份之后,会执行 purge logs to 语句。删除了备份之后的master上的binary log. 一般而言,我们不建议随便删除binary log.

     我们应该将它们保存起来,而不是直接删除。以防万一,要留条退路。

4> 该备份方式,虽然在整个备份过程中持有了 lock table tb read local,但是还是可以执行 insert 语句的。所以得到的不是一致性的备份。虽然得到的不是

     一致性的备份,但是因为flush log之后,所有的操作 也会记入新的binary log,所以如果使用了所有新的binary log来进行完全恢复的话,最后恢复的数据

     也是一致性的。当然不一致性的备份无法用于搭建slave。

     如果要得到一致性的备份的话,需要使用 --lock-all-tables 或者使用 --single-transaction 选项。前者使用了全局读锁,不允许任何修改操作。后者使用

     了事务的特性来得到一致性备份。

所以我们应该对上面的备份方式进行改良。

2. 使用mysqldump备份的最佳姿势

1)优化锁 和 得到一致性备份:

我们可以使用结合使用 --single-transaction 、--master-data=2 、--flush-logs 来达到将锁定时间大大减少的目的。同时有得到了一致性的备份,而且该一致性备份和 flush 的日志也是一致的;

2)去掉 --delete-master-logs 选项,改为在备份之后,将所有被刷新的 binary log 移到一个地方保存起来;

3)因为使用了 --single-transaction 选项,针对的只能是 innodb 数据,但是mysql数据是Myisam引擎的,所以我们最好将mysql数据库的备份分开来,

     另外专门针对 mysql 数据库进行一次操作。当然不分开来备份,可能也没有问题。

4)还要加上 --routines 来备份存储过程和函数,触发器默认会备份。

优化之后,我们得到:

mysqldump -uxxx -p --singel-transaction --master-data=2 --flush-logs --routines --databases db1 db2 db3 > alldb.sql;

mysqldump -uxxx -p --databases mysql > mysql.sql;

如何将mysql一起备份的话:

mysqldump -uxxx -p --singel-transaction --master-data=2 --flush-logs --routines --all-databases > alldb.sql;

3. 使用mysqldump来搭建slave环境

地方

4. 使用mysqldump备份的结果来进行 恢复

撒地方

mysqldump 逻辑备份的正确姿势

标签:

原文地址:http://www.cnblogs.com/digdeep/p/4906032.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!