使用引用文件进行Postgres复制

时间:2017-08-18 17:12:20

标签: postgresql replication

我有一个postgres数据库,其中包含对文件系统上文件的引用。这些引用是简单的VARCHAR值,因此我知道没有保证引用完整性:

CREATE TABLE user (
    username VARCHAR(50) PRIMARY KEY,
    age INTEGER,
    template VARCHAR(100) -- Filepath of a file on disk
);

INSERT INTO
    user   (username,   age,   template)
    VALUES ('bob',      32,    '/templates/cool-template.html');

这很好,缺乏参照完整性不是一个问题。 现在我去设置标准的流式复制(我按照"如何使用"标题下的this page上的教程。)

复制任何文件系统文件(例如" cool-template.html")以及postgres数据库内容的最佳方式是什么?我不想要将文件存储在数据库中。我已经知道我可以独立rsync任何文件,但有更好的方法吗? postgres是否提供了某种可以触发文件备份的钩子?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

你说的最简单的解决方案是使用虚拟rsync(通过cron或钩子触发),只是确保你不仅要同步现有文件(如果是这样的话,你会切断同步删除一个文件)。

rsync -avh source/ dest/ --delete

您还可以使用amazongoogle存储桶存储您的数据(它不会被复制,但这仍然是一种非常安全且高度可用的解决方案)。

如果您有足够的信心,可以使用DRBDCeph来创建存储群集(除非您真的知道自己在做什么,否则两个节点)。

我亲自去亚马逊或谷歌共享存储:风险低,维护不多,易于理解和使用。