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

Bonjour à tous!

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


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

Préparation préliminaire


Nous ferons 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 ajoutez une ligne en dessous comme ci-dessous. Où est 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 activé sur le serveur PostgreSQL dans le fichier pg_hba.conf. L'adresse de mon serveur GitLab est 10.0.0.4.

Ouvrez le fichier pg_hba.conf et ajoutez-y la ligne:

 host all gitlab 10.0.0.4/24 md5 

Cela 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 

Enfin, redémarrez le service postgresql:

 systemctl restart postgresql-12.service 

Exporter la base de données GitLab


Exécutons, sur le serveur GitLab, la sauvegarde de la base de données:
 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 

Copiez 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 

Importez "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 maintenant dans PostgreSQL:

 sudo -u postgres psql -l 

La ligne suivante doit apparaître:

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

Configuration de GitLab


Après l'importation de la base de données dans PostgreSQL, l'utilisateur gitlab a été créé. Vous devez modifier 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 allons spécifier toutes les données du PostgreSQL externe.

Faites une copie de sauvegarde du fichier gitlab.rb:

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

Maintenant, à la fin du fichier gitlab.rb, ajoutez ces lignes:

 #   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 :)

Une grosse demande. Si vous mettez un moins, écrivez la raison dans le commentaire.

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


All Articles