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 servidor Agregue una regla al firewall de PostgreSQL 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
success2. 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, entonces servidor Es necesario habilitar 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 md5Se 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 md5Y por último reiniciamos el servicio postgresql:
systemctl restart postgresql-12.serviceExportar 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.sqlLa copia de seguridad apareció en /tmp:
ls -lh
total 836K
-rw-r--r--. 1 root root 836K Nov 18 12:59 internal-gitlab.sqlCopiemos esta copia al servidor PostgreSQL:
scp /tmp/internal-gitlab.sql 10.0.0.2:/tmp/
internal-gitlab.sql 100% 835KB 50.0MB/s 00:00Importando "internal-gitlab.sql" a PostgreSQL
Importe la base de datos a PostgreSQL:
sudo -u postgres psql -f /tmp/internal-gitlab.sqlVerifique que la base de datos ahora esté en PostgreSQL:
sudo -u postgres psql -lDeberí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 ROLELuego, 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.origAhora 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 restartEso es todo :)
Gran petición. Si pones un signo menos, escribe el motivo en los comentarios.
Fuente: habr.com
