Migration de la base de données GitLab vers PostgreSQL externe

Bonjour à tous!

Dans cet article, nous allons migrer la base de données GitLab de PostgreSQL interne, installé avec GitLab, vers PostgreSQL externe, déjà installé sur un autre serveur.

Migration de la base de données GitLab vers PostgreSQL externe

NOTE
Toutes les actions sont garanties de fonctionner sur CentOS 7.7.1908, PostgreSQL 12 et GitLab 12.4.2-ee.0.

Préparation préliminaire

Faisons trois choses à l'avance :

1. Sur le serveur PostgreSQL, ajoutez une règle au pare-feu qui autorise les connexions entrantes au port PostgreSQL 5432/TCP.

Dans mon cas:

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

2. Au même endroit, mais dans le fichier postgresql.conf, autorisez l'interface réseau à accepter les connexions entrantes de l'extérieur. Ouvrez le fichier postgresql.conf, recherchez la ligne commentée "#listen_addresses = 'localhost'" et en dessous, ajoutez une ligne comme ci-dessous. Où - 10.0.0.2, l'adresse de votre interface.

Dans mon cas:

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. Puisque le serveur GitLab se connectera à une base de données externe, cela doit être autorisé sur le serveur PostgreSQL dans le fichier pg_hba.conf. L'adresse de mon serveur GitLab est 10.0.0.4.

Ouvrons le fichier pg_hba.conf et ajoutons-y la ligne :

host    all             gitlab               10.0.0.4/24             md5

Il ressemblera à ceci:

# 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

Et enfin, on redémarre le service postgresql :

systemctl restart postgresql-12.service

Exporter une base de données GitLab

Effectuons une sauvegarde de la base de données sur le serveur GitLab :

sudo -u gitlab-psql /opt/gitlab/embedded/bin/pg_dumpall -U gitlab-psql --host=/var/opt/gitlab/postgresql > /tmp/internal-gitlab.sql

La sauvegarde est apparue dans /tmp :

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

Copions cette copie sur le serveur PostgreSQL :

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

Importation de "internal-gitlab.sql" dans PostgreSQL

Importez la base de données dans PostgreSQL :

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

Vérifiez que la base de données est désormais dans PostgreSQL :

sudo -u postgres psql -l

La ligne suivante devrait apparaître :

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

Configuration de GitLab

Après avoir importé la base de données dans PostgreSQL, un utilisateur gitlab a été créé. Vous devez changer le mot de passe de cet utilisateur.

Changer le mot de passe :

sudo -u postgres psql -c "ALTER USER gitlab ENCRYPTED PASSWORD 'ПАРОЛЬ' VALID UNTIL 'infinity';"
Password for user postgres:
ALTER ROLE

Ensuite, sur le serveur GitLab, dans le fichier de configuration /etc/gitlab/gitlab.rb, nous indiquerons toutes les données du PostgreSQL externe.

Faisons une copie de sauvegarde du fichier gitlab.rb :

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

Ajoutez maintenant ces lignes à la fin du fichier 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'] = '******'

Enregistrez le fichier /etc/gitlab/gitlab.rb et reconfigurez GitLab :

gitlab-ctl reconfigure && gitlab-ctl restart

C'est tout :)

Grosse demande. Si vous mettez un moins, écrivez la raison dans les commentaires.

Source: habr.com

Ajouter un commentaire