Replication 复制助手

用户可以使用多个函数来构建一个复制系统,其中RocksDB作为单个节点的存储引擎。

函数用于完整的数据库物理复制

检查点可以将数据库的物理快照构建到另一个文件系统目录,其中的文件尽可能多地与源文件进行硬链接。

另一种方法是使用Getlivefile(),结合DisableFileDeletion()和EnableFileDeletion()。GetLiveFiles()返回需要为数据库复制的完整文件列表。 为了防止在复制时压缩它们,用户可以首先调用DisableFileDeletion(),然后从GetLiveFiles()检索文件列表,复制它们,最后调用EnableFileDeletion()

功能流更新,并捕获

通过大多数系统将更新作为一个独立组件分发到副本,RocksDB还提供了一些api来实现这一点。

增量复制需要能够查找和跟踪数据库的所有最新更改。 API GetUpdatesSince允许应用程序跟踪RocksDB事务日志。 它可以连续地从RocksDB事务日志获取事务,并将它们应用到远程副本或远程备份。

复制系统通常希望用任意元数据对每个Put进行注释。此元数据可用于检测复制管道中的循环。 它还可以用于时间戳和顺序事务。为此,RocksDB支持一个名为PutLogData的API,应用程序可以使用该API用元数据对每个Put进行注释。 此元数据只存储在事务日志中,而不存储在数据文件中。通过PutLogData插入的元数据可以通过GetUpdatesSince API检索。

RocksDB事务日志是在数据库目录中创建的。当不再需要日志文件时,将其移动到存档目录。 归档目录存在的原因是,落后的复制流可能需要从日志文件中检索事务,这是过去的方式。 API GetSortedWalFiles返回所有事务日志文件的列表。