【问题标题】:Backing up MariaDB Temporal Database备份 MariaDB 时态数据库
【发布时间】:2019-06-18 19:49:46
【问题描述】:

一般来说,Temporal Database 功能让我很兴奋。

但是,数据库导出和恢复不支持 mysqldump。

我在文档(链接到上面)中找不到任何资源表明哪些备份和恢复方法可以安全地用于此类数据库。谷歌搜索似乎没有帮助。

是否有人对在生产环境中使用这些 MariaDB 时态数据库有任何见解?或者更具体地说,在开发环境中使用它们,然后将数据库转移到生产环境并仍然保持数据库的历史记录完整?

我理解这是一个开发运维问题,但如何使用和围绕这个新功能似乎是一个非常核心的问题。是否有人对移动这些数据库并在生产中依赖该过程有见解?只是想知道这项技术有多成熟,因为文档中没有涵盖这个问题(这似乎很重要)。

【问题讨论】:

    标签: mariadb temporal-database


    【解决方案1】:

    不幸的是,正如文档所述,虽然 mysqldump 将转储这些表,但不包括不可见的临时列 - 该工具只会备份表的当前状态。

    幸运的是,这里有几个选项;

    您可以使用mariadb-enterprise-backupmariabackup,它们应该支持时态数据的新格式并正确备份(这些工具执行二进制备份而不是表转储);

    https://mariadb.com/docs/usage/mariadb-enterprise-backup/#mariadb-enterprise-backup https://mariadb.com/kb/en/library/full-backup-and-restore-with-mariabackup/

    不幸的是,我们发现该工具有些不可靠——尤其是在使用 MyRocks 存储引擎时。但是,它在不断改进。

    为了解决这个问题,在我们的生产服务器中,我们利用了从属复制——它可以在我们的所有节点上保持时间数据(以及其他所有内容)的完整性。然后,我们通过关闭从节点并直接复制数据库数据文件来进行辅助备份。有关如何设置复制的更多信息,请参阅文档;

    https://mariadb.com/kb/en/library/setting-up-replication/

    因此,您可以通过复制设置数据库的开发副本,然后从那里复制数据。但是,在您的情况下,mariabackup 也可以解决问题。

    无论您如何操作,在设置复制或在系统之间移动这些文件时,请注意系统时钟。当时钟不同步(或者系统位于不同的时区)时,您可能会遇到一些问题。还有一些关于这个主题的官方文档(和缓解措施);

    https://mariadb.com/kb/en/library/temporal-data-tables/#use-in-replication-and-binary-logs

    查看您的附加评论 - 我不知道有任何方法可以直接从 MariaDB 本身获取数据库在给定日期(包括时间数据)时的完整图像。我不认为这些信息的存储方式使这成为可能。但是,即使是这样,也有一种解决方法。您可以将上述方法与增量 rdiff 备份结合使用。那么你会做些什么来解决它;

    1. 使用上述任一方法备份数据库。
    2. 对这些备份文件使用 rdiff-backup (https://www.nongnu.org/rdiff-backup/),每天运行一次。

    这将允许您获取数据库在您选择的任何给定日期的查看方式的精确副本。 rdiff-backup 也完全支持 ssh,允许你做类似的事情,

    rdiff-backup -r 10D host.net::/var/lib/mariadb /my/tmp/mariadb

    这将获取这些备份文件 10 天前的副本。

    【讨论】:

      猜你喜欢
      • 2020-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-20
      • 2021-09-20
      • 2018-12-01
      • 2021-12-08
      • 2015-04-21
      相关资源
      最近更新 更多