AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 48170
Accepted
Arie K
Arie K
Asked: 2009-07-31 09:14:08 +0800 CST2009-07-31 09:14:08 +0800 CST 2009-07-31 09:14:08 +0800 CST

使用 Subversion 进行增量 MySQL 备份

  • 772

我们的 MySQL 数据库服务器托管数十个数据库,转储文件大小从 1 到 ~100 MB。

目前,我们的备份方法是mysqldump,包装在 shell 脚本中,并从 crontab 运行。这对我们很有用。唯一的主要缺点是存储转储文件需要大量存储空间。

由于 MySQL 数据库转储是文本文件,我自然会考虑将其存储在版本控制系统中,例如 Subversion。我记得 Subversion 只在每次提交中存储文件的增量。

推荐这种方法吗?是否有一些我们应该注意的问题?

backup mysql svn
  • 6 6 个回答
  • 3851 Views

6 个回答

  • Voted
  1. SirStan
    2009-07-31T09:19:30+08:002009-07-31T09:19:30+08:00

    MySQL 文档可能正是您所需要的。二进制增量备份!(对于通过 rsync/ftp/etc 的穷人从服务器也很好)。

    MySQL 支持增量备份:

    您必须使用 --log-bin 选项启动服务器以启用二进制日志记录;请参阅第 5.2.4 节,“二进制日志”。二进制日志文件为您提供了在执行备份之后将更改复制到数据库所需的信息。在您想要进行增量备份(包含自上次完整或增量备份以来发生的所有更改)的那一刻,您应该使用 FLUSH LOGS 轮换二进制日志。完成后,您需要将所有二进制日志复制到备份位置,范围从最后一次完整或增量备份到最后一个。这些二进制日志是增量备份;在恢复时,您可以按照第 6.3 节“时间点恢复”中的说明应用它们。下次进行完整备份时,您还应该使用 FLUSH LOGS、mysqldump --flush-logs 或 mysqlhotcopy --flushlog 轮换二进制日志。请参阅第 4.5.4 节,“mysqldump - 数据库备份程序”和第 4.6.9 节,“mysqlhotcopy - 数据库备份程序”。

    • 2
  2. Best Answer
    pQd
    2009-08-02T03:51:01+08:002009-08-02T03:51:01+08:00

    SirStan 提到的 binlog 是一个很好的方法。

    或者,您可以运行 mysqldumps,然后使用rdiff-backup创建转储文件的备份。rdiff 将保留 n 次最后备份 [您决定多少],并且将非常节省空间,因为它仅保留最新版本的文件 + 差异集的完整快照,从而允许它重建以前的版本。

    无论你在 svn 中放入什么,都保留在 svn 中。存储库只会增长——所以它是保存你的 sql 模式、源代码和文档的好地方;但不是来自 sql 的实际数据。

    • 2
  3. jonaz
    2009-08-02T02:58:57+08:002009-08-02T02:58:57+08:00

    使用 svn 会占用大量空间。

    假设你提交了 100mb 文件并且 svn 成为版本 1,那么如果你添加一个 200mb 的新文件,版本将是 2。

    您的 svn 存储库将是 300mb。

    如果您喜欢版本 1 中的文件,则必须 svn co -r 1 svnrepourl

    • 1
  4. sbell
    2011-07-01T06:07:06+08:002011-07-01T06:07:06+08:00

    我知道这个问题有点过时,但在我的公司,我们一直在尝试类似的东西。我们一直在提取大约 300 MB 大小的 xml 格式的备份(不是来自 MySQL,但仍然是简单的文本文件),并将它们提交到 SVN 存储库,每晚一个多星期。第一次提交将存储库设置为 41 MB,但此后的每次提交都较小。我们现在处于修订版 8,存储库的总大小只有 57 MB。这大约是它包含的所有历史大小的 2.5%!

    我刚刚使用相同的数据尝试了 rdiff-backup;下面是一个比较(所有大小以 MB 为单位):

    Backup # 备份大小 repo size delta rdiff size delta
    0 0 0.03 0.03 0 0
    1 286.05 41.49 41.46 286.05 286.05
    2 285.93 45.97 4.49 322.13 36.08
    3 286.23 50.52 4.54 323.27 1.14
    4 286.63 50.79 0.27 324.54 1.26
    5 287.46 55.52 4.73 326.54 2.00
    6 287.76 55.77 0.25 327.72 1.19
    7 288.15 56.14 0.37 328.98 1.26
    8 288.41 56.63 0.50 330.36 1.38
    

    看起来增量大致相同(有时 svn 更好,有时 rdiff-backup 更好),所以在整体大小上,SVN 获胜。rdiff 的一个优点是可以轻松删除旧备份,而使用 SVN,您必须执行svnadmin dump和svnadmin load才能删除旧版本。我想这是一个偏好问题,但 SVN 易于使用,并且有大量的工具可以支持它。

    • 1
  5. Sam Bauers
    2013-02-14T20:33:16+08:002013-02-14T20:33:16+08:00

    查看此脚本,它可以自动执行该过程,允许特定选择数据库和排除表 [免责声明我是作者] - http://mysql-svn-backup.redant.com.au/

    • 1
  6. Аркадий Петров
    2017-03-03T04:29:50+08:002017-03-03T04:29:50+08:00

    Percona XtraBackup支持 MySQL 数据库的增量热备份。

    • -2

相关问题

  • Exchange 2007 的备份解决方案

  • IIS 6.0 (Windows Server 2003) 备份的最佳实践?

  • 10TB数据和3台服务器的备份解决方案

  • 最佳混合环境(OS X + Windows)备份?[关闭]

  • 如何从 SQL Server 2008 中的备份中排除索引

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve