如何在Docker主机中存储PostgreSQL状态

时间:2016-07-15 21:03:04

标签: linux macos postgresql docker filesystems

PostgreSQL对其数据文件夹的处理与Docker的主机安装文件夹不兼容。

它可能在安装了ext4文件系统的Linux下运行,但在运行

时在OS X或Windows上运行
docker run -it --rm -v `pwd`/test:/var/lib/postgresql/data postgres

initdb终止于随机磁盘写入错误,如:

creating template1 database in /var/lib/postgresql/data/base/1 ... 
FATAL:  could not write to file "pg_xlog/xlogtemp.25": Input/output error

FATAL:  could not close file "base/1/1249": Input/output error
FATAL:  could not close file "base/1/2603": Input/output error
CONTEXT:  writing block 0 of relation base/1/1247

使用命名卷时,一切运行良好,但命名卷实际上并不是保存数据的安全方法。例如,在Docker for Mac中,它们都隐藏在巨大的qcow2虚拟磁盘映像中。

您建议在非Linux主机中保留PostgreSQL状态的策略是什么?

我应该每隔n分钟将备份保存到已装入的文件夹中,并在启动时检查数据文件夹并在需要时从备份恢复吗?或者我应该只在指定的卷和主机安装的卷之间进行rsync?是否有任何项目/ Docker文件解决了这个问题?

0 个答案:

没有答案