首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每个数据库的MySQL增量备份(不是全局备份)

问每个数据库的MySQL增量备份(不是全局备份)
EN

Database Administration用户
提问于 2014-05-16 14:11:29
回答 4查看 1K关注 0票数 1

在搜索免费/开放源码的MySQL增量备份解决方案时,我发现了许多方法来执行增量备份,它们似乎都依赖于mysqldump和binlog (或LSN)之类的“逻辑”备份/恢复方式,或者是“物理”备份方式(比如Percona的xtrabackup)。但是,在这两种情况下,唯一隐含的场景是全局备份数据库(所有数据库)。

我正在寻找为每个数据库提供增量备份的方法:有两个数据库服务器(主服务器和从服务器),每个服务器处理大量数据库。比方说,这些数据库中的每一个都属于不同的客户,而且其中一些数据库往往会变得非常大。虽然软件升级时,数据库模式有时会发生变化,在升级之前,我们必须确保备份是安全的,所以备份是必须的,但由于数据库大小,完全备份绝对不是一种方法。

请建议如何解决这一问题,或至少提出一些寻找解决方案的方法。

EN

回答 4

Database Administration用户

发布于 2014-05-17 18:04:46

您可以使用mysqlbinlog工具读取绑定日志,并生成逻辑更改流,如mysqldump备份。mysqlbinlog有一个选项--database=dbname,因此您只能提取与命名数据库相关的更改。

在这里了解更多有关使用此选项的信息:http://dev.mysql.com/doc/refman/5.6/en/mysqlbinlog.html#option_mysqlbinlog_数据库

两个注意事项:

  • 这假设您有一组连续的二进制日志,或者返回到最后一个完全备份,或者返回到最后一个增量转储。
  • 它实际上不是dbname更改的过滤器。它是应用于任何数据库的所有binlog事件的筛选器,而dbname被选择为默认数据库。因此,如果您有一个事件,其中有人更新了dbname2.tablename,而dbname是默认的,那么转储将包含对dbname2的更改。这使得将此方法用作每个数据库增量备份方法是不安全的,除非您100%肯定没有发生此类事务。

P.S.:你对LSN的评论有点不正确。Mysqldump对LSN一无所知,LSN是InnoDB重做日志的一个特性。Mysqldump检查二进制日志位置,如果使用--master-data选项,可以输出该位置。

票数 3
EN

Database Administration用户

发布于 2015-06-01 11:03:04

您可以使用https://sourceforge.net/projects/mysqlincrementalbackup/脚本。其网站上的说明:

在用于这些应用程序的混合环境中,MyISAM和InnodB的完整增量备份同时使用二进制日志和不影响正在运行的数据库的方法。不需要停止或锁定数据库,它只使用二进制日志来提取数据库的更新查询。此工具使用automysqlbackup脚本作为其完整备份的解决方案的一部分。

票数 1
EN

Database Administration用户

发布于 2014-05-16 14:15:28

您需要查看MySQL DUMP。您可以编写调用MYSQL DUMP的脚本来提取所需的备份。然后,您可以根据需要安排这些脚本运行。

有关更多细节,请参见这里

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/65238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档