ZFS / ZFS 发送数据库复制

ZFS / ZFS 发送数据库复制

假设我有一个相当重要的数据库,但我实际上并不关心其中的每一笔交易。在您开始讽刺之前,这是一个存储 zabbix 状态数据的数据库,因此说实话,当 ASCII 控制代码击中 TTY 时,我并不关心是否会丢失一两分钟的交易。

如果我想将该数据库复制到另一台主机,我可以进行传统的数据库复制,本质上是通过管道重播事务日志。这样做存在一些问题(例如,我将有很多写入主数据库的写入者,而从属数据库只有一个线程插入副本数据),但我也会得到一个“只读从属数据库”来运行我的报告。而其他人来到城镇就会明白发生了什么。两者都很有价值,我完全同意。

但是——如果我想更聪明一点呢?为了更聪明,我将在 ZFS 文件系统上运行我的 postgresql 数据库并启用压缩。现在我的数据库在 ZFS 上运行,我是否可以将该流 zfssend 到另一个框并应用它,或者只是存档 zfs send 流以供以后重播(如果我决定需要它)?

在目标机器上“非正常关机后清理并重放事务日志”之后,生成的数据库是否可用?假设现在我还想要一个只读从属服务器来运行我的报告,我可以重放 ZFS、创建快照并根据快照启动数据库吗?

答案1

ZFS 发送/接收基于ZFS 快照除非您停顿数据库,否则您拍摄的用于提供 ZFS 发送初始源的快照将是崩溃一致

您可以使用ZFS 发送/接收将该快照发送到另一台主机或 ZFS 文件系统。我不明白你的意思归档发送流。ZFS 发送/接收是原子的,所以我不确定您是否有能力保存流。

如果你需要 ZFS 文件系统的只读副本,你可以拍摄 ZFS 快照并克隆将该快照复制到新的文件系统挂载点。

此时,您可以根据需要对新的坐骑执行操作。

相关内容