Artifactory升级失败,需要postgres 9.5-> 9.6升级说明

时间:2019-02-21 18:00:31

标签: upgrade artifactory

我计划将工件从6.7.5升级到6.8.1。作为升级的一部分,我在github上检查了jfrog的仓库,看来他们有一个新的推荐的nginx和postgres版本。

当前的docker-compose使用的是postgres 9.5,而新的默认版本是9.6。但是简单地拉下postgres 9.6并不能进行就地升级。

  

FATAL:数据库文件与服务器不兼容详细信息:数据   目录是由PostgreSQL 9.5版初始化的,该版本不是   与此版本9.6.11兼容。

升级说明中没有提及有关升级的任何内容。

2 个答案:

答案 0 :(得分:1)

github(https://github.com/jfrog/artifactory-docker-examples)中提供的示例只是示例。 在生产中使用它们可能会导致问题,并且不能保证向后兼容。

要在升级时解决PostgreSQL问题,我建议:

  1. $ docker-compose -f yml-file-name.yml stop
  2. 编辑yml-file-name.yml并将docker.bintray.io/postgres:9.6.11更改为docker.bintray.io/postgres:9.5.2
  3. $ docker-compose -f yml-file-name.yml up -d

此后应升级Artifactory,但是它将继续使用旧版本的PostgreSQL DB

答案 1 :(得分:0)

我已经可以使用以下方法升级数据库:

  1. 使用旧数据库映像将所有数据库转储到SQL脚本中;批量存储以供将来导入:
mv -fv /data/postgresql /data/postgresql.old
mkdir -p /data/postgresql
chown --reference=/data/postgresql.old /data/postgresql
chmod --reference=/data/postgresql.old /data/postgresql
  1. 备份旧数据库目录并准备一个新目录:
postgres something
  1. 使用第1步中安装的转储脚本运行新的数据库映像。如果它以--version启动,则在设置新数据库时启动时会处理SQL脚本。我们只是不需要让服务器随后运行,所以我提供了docker-compose -f artifactory-pro.yml run --rm --no-deps -e POSTGRES_DB=postgres -e POSTGRES_USER=root -v sql_dump_volume:/docker-entrypoint-initdb.d postgresql postgres --version 来使入口点执行,导入数据并退出:
docker-compose -f artifactory-pro.yml up -d

完成所有这些操作后,我能够使用 正常启动Artifactory,并且正常启动,并像往常一样应用其余的架构和文件升级过程。

我还准备了a script,基本上可以完成上述步骤以及一些附加的检查和清理。如果发现有用,请随时使用。