如何在gitlab中从内部Postgres数据库迁移到外部Postgres数据库

时间:2018-10-02 02:39:59

标签: postgresql migration gitlab

当前,我们在生产gitlab中将所有组件都放在一个docker容器中,在这里我们使用捆绑的postgres和redis。因此,所有内容都放在同一个容器中。我们也要使用外部postgres db和单独的容器进行redis,以遵循生产标准。

如何从内部postgres数据库迁移到外部postgres数据库?如果有人提供过程和步骤,将真的有帮助。我们是这个过程的新手。请让我们知道如果有人知道

感谢大家的投入,

PRS

2 个答案:

答案 0 :(得分:1)

您可以阅读文章“ Migrating GitLab from internal to external PostgreSQL”,其中涉及:

  • 使用pg_dumpall

    进行数据库转储/重新加载
    sudo -u gitlab-psql /opt/gitlab/embedded/bin/pg_dumpall \
     --username=gitlab-psql --host=/var/opt/gitlab/postgresql > /var/lib/pgsql/database.sql
    sudo -u postgres psql -f /var/lib/pgsql/database.sql
    

注意:yuo也可以使用数据库的备份,但前提是外部PostgreSQL版本与嵌入式版本完全匹配。

  • 设置密码

    sudo -u postgres psql -c "ALTER USER gitlab ENCRYPTED PASSWORD '***' VALID UNTIL 'infinity';"
    
  • 并修改GitLab配置:

也就是说:

# Disable the built-in Postgres
postgresql['enable'] = false
# Fill in the connection details
gitlab_rails['db_adapter'] = 'postgresql'
gitlab_rails['db_encoding'] = 'utf8'
gitlab_rails['db_host'] = '127.0.0.1'
gitlab_rails['db_port'] = 5432
gitlab_rails['db_database'] = "gitlabhq_production"
gitlab_rails['db_username'] = 'gitlab'
gitlab_rails['db_password'] = '***'
  • 应用巡回更改:

    gitlab-ctl reconfigure && gitlab-ctl restart
    

答案 1 :(得分:0)

@VonC

你好,让我知道我在下面完成的过程

当前,我们在一个使用捆绑的postgres和redis的docker gitlab容器中将所有内容全部打包。为了遵循生产标准,我们正在寻求为产品gitlab维护单独的postgres和redis实例。.我们已经在捆绑的数据库..中保存了数据,因此我们使用捆绑的postgres ..它生成了.tar文件来备份了当前的gitlab。接下来,我们确实更改了gitlab.rb以指向外部post gres db [相同版本] ..然后我们可以连接到gitlab,但是没有看到任何数据,因为那里没有任何数据,因为它是新数据库。后来我们使用外部postgres db进行了还原...现在我们可以看到所有数据了?我们可以用这种方法吗?现在,我们的gitlab已附加到外部postgres,我可以看到所有还原的数据。这个过程行得通吗?有什么失败吗?

此过程与pgdump和import有何不同?