Olá a todos!
Neste artigo, faremos a migração do banco de dados GitLab do PostgreSQL interno, que é instalado junto com o GitLab, para um PostgreSQL externo, que já está instalado em outro servidor.

NOTA
Todas as ações funcionam garantidamente no CentOS 7.7.1908, PostgreSQL 12 e GitLab 12.4.2-ee.0.
Preparação preliminar
Vamos realizar três ações antecipadamente:
1. No servidor No PostgreSQL, adicione uma regra no firewall para permitir conexões de entrada na porta PostgreSQL 5432/TCP.
No meu caso:
firewall-cmd --add-service=postgresql --zone=internal --permanent
success
firewall-cmd --reload
success2. Também 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 adicione abaixo a linha como a seguir. Onde — 10.0.0.2, é o endereço da sua interface.
No meu caso:
vi /var/lib/pgsql/12/data/postgresql.conf
# - Configurações de Conexão -
#listen_addresses = 'localhost' # qual(is) endereço(s) IP escutar;
listen_addresses = 'localhost, 10.0.0.2'
# lista de endereços separada por vírgula;3. Como o servidor GitLab se conectará ao banco de dados externo, isso precisa ser permitido no arquivo pg_hba.conf. O endereço do meu servidor GitLab é 10.0.0.4. servidor Abriremos o arquivo pg_hba.conf e adicionaremos a seguinte linha:
host all gitlab 10.0.0.4/24 md5
Isso ficará assim:E finalmente, reiniciamos o serviço postgresql:
# 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 md5systemctl restart postgresql-12.service
Exportação do banco de dados GitLabExecutaremos, no servidor GitLab, um backup do banco de dados:
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 esse backup 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” no PostgreSQLImportaremos o banco de dados no PostgreSQL:
sudo -u postgres psql -f /tmp/internal-gitlab.sql
Verifique se o banco de dados agora está no PostgreSQL:sudo -u postgres psql -l
Deve aparecer a seguinte linha:gitlabhq_production | gitlab | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
Configuração do GitLabApós a importação do banco de dados para o PostgreSQL, o usuário gitlab foi criado. Você precisa alterar a senha desse usuário.
Mudando a senha:
sudo -u postgres psql -c "ALTER USER gitlab ENCRYPTED PASSWORD 'SENHA' VALID UNTIL 'infinity';" Senha para o usuário postgres: ALTER ROLE
Em seguida, no servidor GitLab, no arquivo de configuração /etc/gitlab/gitlab.rb, vamos inserir todos os dados do PostgreSQL externo.Faremos um backup do arquivo gitlab.rb:
cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.orig
Agora, no final do arquivo gitlab.rb, adicionaremos estas linhas:Salve o arquivo /etc/gitlab/gitlab.rb e reconfira o GitLab:
# Отключить встроенный 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'] = '******'gitlab-ctl reconfigure && gitlab-ctl restart
E isso é tudo 🙂É isso mesmo 🙂
Por favor, se você deu uma nota baixa, deixe um comentário explicando o motivo.
Fonte: habr.com
