我们的系统目前正在将tplog备份到S3。根据我所读到的内容,只要确保这些文件位于kdb期望的位置,就可以在RDB在白天出现问题时进行恢复。
然而,我没有看到关于如何使用tplog来恢复HDB的解释。我也想创建另一个备份系统来将hdb文件夹同步到S3。这将需要更多的工作来设置和使用至少两倍的存储空间,而且是冗余的。因此,如果没有必要,我想避免这个额外的步骤。
如果我们无法访问HDB文件夹,是否有办法从tplog中恢复HDB,或者我是否需要为HDB文件夹添加另一个备份系统?谢谢。
发布于 2016-03-02 02:01:16
将日志文件重放到HDB。
.Q.hdpf[`::;get `:tpLOgFile;.z.d;`sym]根据我的经验,如果您正在从TP日志文件构建HDB,使用get函数加载tp日志文件,并使用dpft保存它,这是非常有效的。
如果您想要使用-11!函数,那么您必须提供一个更新函数(-11!从tp日志文件中读取每一行并调用更新函数,然后将数据插入到内存表中),以将数据加载到内存中,然后将数据保存在磁盘上。
在这两种情况下,您都必须将数据加载到内存中,但是通过使用get函数,您可以跳过upd函数调用
-11!函数对于构建关系数据库非常有效,因为它不会加载完整的日志文件。
有关更多详细信息,请阅读下面的链接http://www.firstderivatives.com/downloads/q_for_Gods_July_2014.pdf
发布于 2016-02-27 12:28:41
好的,实际上找到了一个类似问题的论坛答案,以及一个用于重放日志文件的脚本。
https://groups.google.com/forum/#!topic/personal-kdbplus/E9OkvJKGrLI
Jonny Press说:
通常的方法是使用-11!以重播日志文件。一个基本的脚本如下所示
// load schema
\l schema.q
// define upd
upd:insert
// replay log file
-11!`:schema2015.07.09
// save
.Q.hdpf[`::;`:hdb;2015.07.09;`sym]这会将完整的日志文件读取到内存中。因此,您需要有可用的RAM。
TorQ有一个TP日志重放脚本:
https://github.com/AquaQAnalytics/TorQ/blob/master/code/processes/tickerlogreplay.q
https://stackoverflow.com/questions/35665614
复制相似问题