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