Migração de banco de dados GitLab para PostgreSQL externo

Olá a todos!

Neste artigo, migraremos o banco de dados GitLab do PostgreSQL interno, que é instalado com o GitLab, para o PostgreSQL externo, que já está instalado em outro servidor.

Migração de banco de dados GitLab para PostgreSQL externo

ПРИМЕЧАНИЕ
Todas as ações têm garantia de funcionamento no CentOS 7.7.1908, PostgreSQL 12 e GitLab 12.4.2-ee.0.

Preparação preliminar

Vamos fazer três coisas com antecedência:

1. No servidor PostgreSQL, adicione uma regra ao firewall que permita conexões de entrada para a porta 5432/TCP do PostgreSQL.

No meu caso:

firewall-cmd --add-service=postgresql --zone=internal --permanent
success
firewall-cmd --reload
success

2. No mesmo local, mas no arquivo postgresql.conf, permita que a interface de rede aceite conexões de entrada externas. Abra o arquivo postgresql.conf, encontre a linha comentada "#listen_addresses = 'localhost'" e abaixo dele adicione uma linha como abaixo. Onde - 10.0.0.2, o endereço da sua interface.

No meu caso:

vi /var/lib/pgsql/12/data/postgresql.conf
# - Connection Settings -

#listen_addresses = 'localhost'         # what IP address(es) to listen on;
listen_addresses = 'localhost, 10.0.0.2'
                                        # comma-separated list of addresses;

3. Como o servidor GitLab se conectará a um banco de dados externo, isso deve ser permitido no servidor PostgreSQL no arquivo pg_hba.conf. O endereço do meu servidor GitLab é 10.0.0.4.

Vamos abrir o arquivo pg_hba.conf e adicionar a linha lá:

host    all             gitlab               10.0.0.4/24             md5

Isso parecerá assim:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             postgres                                     md5

# IPv4 local connections:
host    all             postgres             127.0.0.1/32            md5
host    all             gitlab               10.0.0.4/24             md5

E finalmente, reiniciamos o serviço postgresql:

systemctl restart postgresql-12.service

Exportando um banco de dados GitLab

Vamos realizar um backup do banco de dados no servidor GitLab:

sudo -u gitlab-psql /opt/gitlab/embedded/bin/pg_dumpall -U gitlab-psql --host=/var/opt/gitlab/postgresql > /tmp/internal-gitlab.sql

O backup apareceu em /tmp:

ls -lh
total 836K
-rw-r--r--. 1 root root 836K Nov 18 12:59 internal-gitlab.sql

Vamos copiar esta cópia para o servidor PostgreSQL:

scp /tmp/internal-gitlab.sql 10.0.0.2:/tmp/
internal-gitlab.sql                                                                               100%  835KB  50.0MB/s   00:00

Importando "internal-gitlab.sql" para PostgreSQL

Importe o banco de dados para o PostgreSQL:

sudo -u postgres psql -f /tmp/internal-gitlab.sql

Verifique se o banco de dados agora está em PostgreSQL:

sudo -u postgres psql -l

A seguinte linha deve aparecer:

gitlabhq_production | gitlab   | UTF8     | en_US.UTF-8 | en_US.UTF-8 |

Configurando o GitLab

Após importar o banco de dados para o PostgreSQL, foi criado um usuário gitlab. Você precisa alterar a senha deste usuário.

Alterando a senha:

sudo -u postgres psql -c "ALTER USER gitlab ENCRYPTED PASSWORD 'ПАРОЛЬ' VALID UNTIL 'infinity';"
Password for user postgres:
ALTER ROLE

A seguir, no servidor GitLab, no arquivo de configuração /etc/gitlab/gitlab.rb, indicaremos todos os dados do PostgreSQL externo.

Vamos fazer uma cópia de backup do arquivo gitlab.rb:

cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.orig

Agora adicione estas linhas ao final do arquivo gitlab.rb:

# Отключить встроенный PostgreSQL.
postgresql['enable'] = false

# Данные для подключения к внешней базе. Указывайте свои.
gitlab_rails['db_adapter'] = 'postgresql'
gitlab_rails['db_encoding'] = 'utf8'
gitlab_rails['db_host'] = '10.0.0.2'
gitlab_rails['db_port'] = 5432
gitlab_rails['db_database'] = "gitlabhq_production"
gitlab_rails['db_username'] = 'gitlab'
gitlab_rails['db_password'] = '******'

Salve o arquivo /etc/gitlab/gitlab.rb e reconfigure o GitLab:

gitlab-ctl reconfigure && gitlab-ctl restart

Isso é tudo :)

Grande pedido. Se você colocar um sinal de menos, escreva o motivo nos comentários.

Fonte: habr.com

Adicionar um comentário