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.
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