Migración de base de datos GitLab a PostgreSQL externo

Hola a todos!

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

Migración de base de datos GitLab a PostgreSQL externo

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

Preparacion preliminar

Hagamos tres cosas por adelantado:

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

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 debajo agregue una línea como la siguiente. Donde - 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 estar permitido en el servidor PostgreSQL en el archivo pg_hba.conf. La dirección de mi servidor GitLab es 10.0.0.4.

Abramos el archivo pg_hba.conf y agreguemos 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

Y por último reiniciamos el servicio postgresql:

systemctl restart postgresql-12.service

Exportar una base de datos GitLab

Realicemos una copia de seguridad de la base de datos en el servidor GitLab:

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

Copiemos esta copia al 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" a PostgreSQL

Importe la base de datos a PostgreSQL:

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

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

sudo -u postgres psql -l

Debería aparecer la siguiente línea:

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ó un usuario de gitlab. Necesita cambiar la contraseña de este usuario.

Cambiar la 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, indicaremos todos los datos del PostgreSQL externo.

Hagamos una copia de seguridad del archivo gitlab.rb:

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

Ahora agregue estas líneas al final del archivo 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'] = '******'

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

gitlab-ctl reconfigure && gitlab-ctl restart

Eso es todo :)

Gran petición. Si pones un signo menos, escribe el motivo en los comentarios.

Fuente: habr.com

Añadir un comentario