假设每个 PostgreSQL 上都有 64 位操作系统版本,且每次只运行一个副本,我可以在 Dropbox 中托管我的 PostgreSQL 数据库文件并期望在这三个平台上实现二进制兼容性吗?
多年来,我一直将开发环境托管在 Dropbox 中,在 MacBook Pro 和廉价的 Linux 上网本之间无缝切换。现在我又添加了一台 Windows 上网本,一切都运行良好,但下一个变化是未知的:
我正在将开发从 SQLite 转移到 PostgreSQL(以匹配生产数据库)。我可以在这三个平台上独立运行 PostgreSQL,但保持数据同步很麻烦。如果我直接在 Dropbox 中托管 PostgreSQL 的数据库文件会怎样?有人试过吗?这样做有效吗?
答案1
我首先看到的一个问题是,DATA 目录中的配置文件和类似文件存在换行兼容性问题。
我建议您首先明确地实施这一改变。
答案2
不,数据库文件在不同的操作系统(如 Windows、Linux、FreeBSD 或 OS X)之间不兼容。它可能看起来可以工作一段时间,但这并不能保证。
原则上,将数据库目录存储在 Dropbox 中是可行的,但您需要非常小心地防止并发访问。此外,根据我的经验,Dropbox 在保留文件权限方面做得不是很好,而 PostgreSQL 在这方面可能会很挑剔。
我认为对于您的应用程序,rsync 或 unison 或其他手动触发同步的方法效果会更好。如果您需要跨平台保持数据同步,那么您可能应该使用 pg_dump 和 pg_restore。