[英]How to upgrade the pg_restore in docker postgres image 10.3 to 10.5
我使用 tableplus 作为我的一般管理员。
目前使用 10.3 的 docker postgres 映像进行生产和本地主机开发。
因为 tableplus 将他们的 postgres 10 驱动程序升级到 10.5,我不能再使用 pg_restore 来恢复使用 10.5 --format=custom
转储的备份文件
请参阅图片了解我如何使用 tableplus 进行备份。 以及它如何使用 10.5 驱动程序
我收到的错误消息是pg_restore: [archiver] unsupported version (1.14) in file header
我尝试在 localhost 中将 dockerfile 中的 postgres 标记从 10.3 更改为 10.5,但没有成功
原装 dockerfile
FROM postgres:10.3
COPY ./maintenance /usr/local/bin/maintenance
RUN chmod +x /usr/local/bin/maintenance/*
RUN mv /usr/local/bin/maintenance/* /usr/local/bin \
&& rmdir /usr/local/bin/maintenance
至
FROM postgres:10.5
COPY ./maintenance /usr/local/bin/maintenance
RUN chmod +x /usr/local/bin/maintenance/*
RUN mv /usr/local/bin/maintenance/* /usr/local/bin \
&& rmdir /usr/local/bin/maintenance
我的开发主机系统是 macOS。
我的开发 docker postgres 中有许多现有的数据库和模式。 所以我目前对如何在不破坏旧数据的情况下安全升级感到困惑。
可以指教吗?
此外,我认为长期是弄清楚如何在 docker 之外(即在我的主机系统内)拥有数据文件,以便每次我想升级我的 docker 映像以用于 postgres,我可以安全地这样做而不必担心。
我也想问一下如何切换到这样的设置。
如果我理解正确,您希望将使用 10.5 生成的自定义格式转储还原到 10.3 数据库中。
如果存档格式在 10.3 和 10.5 之间发生更改,则这是不可能的。
作为一种解决方法,您可以使用没有“存档版本”的“纯格式”转储(选项--format=plain
)。 但是还原过程中的任何问题都由您自己处理,因为不支持降级 PostgreSQL。
您应该始终使用相同的版本进行开发和生产,并且您应该始终使用最新的次要版本(当前为 10.13)。 其他一切都是自找麻烦。
docker cp ~/path/to/dump/in-host-system/2020-07-08-1.dump <name_of_postgres_container>:/backups
docker exec -it <name_of_postgres_container> bash
psql -U username -d dbname < backups/2020-07-08-1.dump
那可行
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.