Hallo allemaal!
In dit artikel migreren we de GitLab-database van de interne PostgreSQL, die samen met GitLab wordt geïnstalleerd, naar de externe PostgreSQL die al op een andere server is geïnstalleerd.

OPMERKING
Alle stappen zijn gegarandeerd uitvoerbaar op CentOS 7.7.1908, PostgreSQL 12 en GitLab 12.4.2-ee.0.
Voorbereiding
Voordat we beginnen, voeren we drie acties uit:
1. Op de server Voeg een regel toe aan de firewall van PostgreSQL om inkomende verbindingen op PostgreSQL-poort 5432/TCP toe te staan.
In mijn geval:
firewall-cmd --add-service=postgresql --zone=internal --permanent
success
firewall-cmd --reload
success2. Ook daar, maar in het bestand postgresql.conf, moet je de netwerkinterface toestaan om inkomende verbindingen van buitenaf te accepteren. Open het bestand postgresql.conf, zoek de gecommentarieerde regel «#listen_addresses = ‘localhost’» en voeg eronder de volgende regel toe. Waar — 10.0.0.2, het adres van jouw interface.
In mijn geval:
vi /var/lib/pgsql/12/data/postgresql.conf
# - Verbindinginstellingen -
#listen_addresses = 'localhost' # op welk IP-adres(sen) te luisteren;
listen_addresses = 'localhost, 10.0.0.2'
# komma-gescheiden lijst van adressen;3. Aangezien de GitLab-server verbinding maakt met de externe database, moet dit op de server postgresql worden toegestaan in het bestand pg_hba.conf. Het adres van mijn GitLab-server is 10.0.0.4.
We openen het bestand pg_hba.conf en voegen daar de regel toe:
host all gitlab 10.0.0.4/24 md5Dit zal er als volgt uitzien:
# 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 md5En ten slotte herstarten we de service postgresql:
systemctl restart postgresql-12.serviceExporteren van de GitLab-database
Laten we op de GitLab-server een back-up van de database maken:
sudo -u gitlab-psql /opt/gitlab/embedded/bin/pg_dumpall -U gitlab-psql --host=/var/opt/gitlab/postgresql > /tmp/internal-gitlab.sqlDe back-up is verschenen in /tmp:
ls -lh
total 836K
-rw-r--r--. 1 root root 836K Nov 18 12:59 internal-gitlab.sqlLaten we deze back-up naar de PostgreSQL-server kopiëren:
scp /tmp/internal-gitlab.sql 10.0.0.2:/tmp/
internal-gitlab.sql 100% 835KB 50.0MB/s 00:00Importeren van «internal-gitlab.sql» in PostgreSQL
Laten we de database in PostgreSQL importeren:
sudo -u postgres psql -f /tmp/internal-gitlab.sqlControleer of de database nu in PostgreSQL staat:
sudo -u postgres psql -lEr zou een regel zoals deze moeten verschijnen:
gitlabhq_production | gitlab | UTF8 | en_US.UTF-8 | en_US.UTF-8 |Configureren van GitLab
Na het importeren van de database in PostgreSQL is de gebruiker gitlab aangemaakt. Je moet het wachtwoord van deze gebruiker wijzigen.
Laten we het wachtwoord wijzigen:
sudo -u postgres psql -c "ALTER USER gitlab ENCRYPTED PASSWORD 'WACHTWOORD' VALID UNTIL 'infinity';"
Password for user postgres:
ALTER ROLEVervolgens geven we op de GitLab-server in het configuratiebestand /etc/gitlab/gitlab.rb alle gegevens van de externe PostgreSQL op.
Laten we een back-up maken van het bestand gitlab.rb:
cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.origNu voegen we deze regels aan het einde van het bestand gitlab.rb toe:
# Отключить встроенный 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'] = '******'We slaan het bestand /etc/gitlab/gitlab.rb op en configureren GitLab opnieuw:
gitlab-ctl reconfigure && gitlab-ctl restartDat is alles 🙂
Een groot verzoek. Als je een min heeft gegeven, geef dan de reden in de reacties.
Bron: habr.com
