比方说,我有一个有点重要的数据库,但是我并不关心每一个事务。 在暴露之前 – 这是一个存储zabbix状态数据的数据库,所以我真的不在乎ascii控制代码碰到TTY时是否会丢失一两分钟的交易。
如果我想将该数据库复制到另一个主机,我可以做传统的数据库复制,实质上重复pipe道上的事务日志。 有一些问题(比如我会有很多的作家到主数据库和奴隶将只有一个线程插入副本数据),但我也会得到一个“只读奴隶”运行我的报告反对。 而有人来到城里就会明白发生了什么事。 两者都是有价值的,我完全同意。
但是 – 如果我想要聪明呢? 很聪明,我将在打开压缩的ZFS文件系统上运行我的postgresql数据库。 现在,我的数据库正在ZFS上运行,如果我决定需要它,我可以只将zfssend发送到另一个盒子并应用它,或者只是归档zfs发送stream以供以后重播?
在目标机器上进行“不洁净关机后重新清理并重放事务日志”后,生成的数据库是否可用? 假设现在我也想要一个只读的从属服务器来运行我的报告,我可以重播ZFS,创build一个快照,并根据快照启动数据库吗?
ZFS发送/接收基于ZFS快照的作品。 除非您停顿数据库,否则为ZFS发送提供初始源的快照将会崩溃一致 。
您可以使用ZFS发送/接收将该快照发送到其他主机或ZFS文件系统。 我不明白你的意思归档发送stream。 ZFS发送/接收是primefaces的,所以我不确定你有保存stream的能力。
如果您需要ZFS文件系统的只读副本,则可以创buildZFS快照并将该快照克隆到新的文件系统安装点。
此时,您可以根据需要在新的安装上执行操作。