通常,我对Temporal Database功能感到兴奋。
但是,数据库导出和还原不支持mysqldump。
我在文档中找不到任何资源(指向上面的链接),该资源表明哪种备份和还原方法可安全用于此类型的数据库。 Google搜索似乎没有帮助。
是否有人对在生产环境中使用这些MariaDB时态数据库有任何见解?或者更具体地说,是在开发环境中使用它们,然后将数据库转移到生产环境中,仍然保持数据库的历史完整吗?
我理解这是一个关于dev-ops的问题,但是对于如何使用此新功能以及如何使用该新功能,这似乎是一个非常重要的问题。是否有人在移动这些数据库并依靠生产过程中有见识?考虑到此问题(似乎非常重要)未在文档中涵盖,所以您只是想知道该技术的成熟程度。
答案 0 :(得分:1)
不幸的是,根据文档说明,mysqldump
将转储这些表,但不包括不可见的时态列-该工具将仅备份表的当前状态。
幸运的是,这里有两个选择;
您可以使用mariadb-enterprise-backup
或mariabackup
,它们应该支持新的格式端口数据格式并正确备份(这些工具执行二进制备份而不是表转储);
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/
因此,您可能会设置带有复制功能的数据库的dev-copy,然后仅从那里复制数据。但是,根据您的情况,mariabackup
也可以解决问题。
无论如何执行,在设置复制或在系统之间移动这些文件时,请注意系统时钟。当时钟不同步(或系统处于不同时区)时,您会遇到一些问题。也有关于此主题的一些官方文档(和缓解措施);
https://mariadb.com/kb/en/library/temporal-data-tables/#use-in-replication-and-binary-logs
看看您的其他评论-我不知道有什么方法可以直接从MariaDB本身获取给定日期(包括时间数据)的完整数据库图像。我认为此信息的存储方式不可行。但是,即使这样也有解决方法。您可以将上述方法与增量rdiff备份结合使用。然后,您将要做的就是解决该问题;
这将使您能够获取数据库在您选择的任何给定日期的外观的精确副本。 rdiff-backup还完全支持ssh,允许您执行类似的操作,
rdiff-backup -r 10D host.net::/var/lib/mariadb /my/tmp/mariadb
这将获取10天前备份文件的副本。