Migración de la base de datos de GitLab a PostgreSQL externo

Hola a todos!

En este artículo, migraremos la base de datos de GitLab del PostgreSQL interno, que está instalado con GitLab, al PostgreSQL externo, que ya está instalado en otro servidor.


NOTA
Se garantiza que todas las acciones funcionarán en CentOS 7.7.1908, PostgreSQL 12 y GitLab 12.4.2-ee.0.

Preparación preliminar


Haremos tres cosas por adelantado:

1. En el servidor PostgreSQL, agregue una regla al firewall que permita conexiones entrantes al puerto PostgreSQL 5432 / TCP.

En mi caso:

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

2. En el mismo lugar, pero en el archivo postgresql.conf, permita que la interfaz de red acepte conexiones entrantes desde el exterior. Abra el archivo postgresql.conf, busque la línea comentada " #listen_addresses = 'localhost' " y agregue la línea debajo de ella. Donde es 10.0.0.2, la dirección de su interfaz.

En mi 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. Dado que el servidor GitLab se conectará a una base de datos externa, esto debe habilitarse en el servidor PostgreSQL en el archivo pg_hba.conf. La dirección de mi servidor GitLab es 10.0.0.4.

Abra el archivo pg_hba.conf y agregue la línea allí:

 host all gitlab 10.0.0.4/24 md5 

Se verá así:

 # 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 

Finalmente, reinicie el servicio postgresql:

 systemctl restart postgresql-12.service 

Exportar base de datos de GitLab


Ejecutemos, en el servidor GitLab, una copia de seguridad de la base de datos:
 sudo -u gitlab-psql /opt/gitlab/embedded/bin/pg_dumpall -U gitlab-psql --host=/var/opt/gitlab/postgresql > /tmp/internal-gitlab.sql 


La copia de seguridad apareció en / tmp:

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

Copie esta copia en el servidor PostgreSQL:

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

Importar "internal-gitlab.sql" en PostgreSQL


Importe la base de datos a PostgreSQL:

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

Verifique que la base de datos esté ahora en PostgreSQL:

 sudo -u postgres psql -l 

La siguiente línea debería aparecer:

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

Configurando GitLab


Después de importar la base de datos a PostgreSQL, se creó el usuario de gitlab. Necesita cambiar la contraseña de este usuario.

Cambiar contraseña

 sudo -u postgres psql -c "ALTER USER gitlab ENCRYPTED PASSWORD '' VALID UNTIL 'infinity';" Password for user postgres: ALTER ROLE 

Luego, en el servidor GitLab en el archivo de configuración /etc/gitlab/gitlab.rb, especificaremos todos los datos del PostgreSQL externo.

Haga una copia de seguridad del archivo gitlab.rb:

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

Ahora al final del archivo gitlab.rb, agregue estas líneas:

 #   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'] = '******' 

Guarde el archivo /etc/gitlab/gitlab.rb y reconfigure GitLab:

 gitlab-ctl reconfigure && gitlab-ctl restart 

Eso es todo :)

Una gran solicitud Si pone un signo menos, escriba el motivo en el comentario.

Source: https://habr.com/ru/post/476258/


All Articles