Migration der GitLab-Datenbank auf externes PostgreSQL

Hallo an alle!

In diesem Artikel migrieren wir die GitLab-Datenbank von internem PostgreSQL, das mit GitLab installiert wird, zu externem PostgreSQL, das bereits auf einem anderen Server installiert ist.

Migration der GitLab-Datenbank auf externes PostgreSQL

HINWEIS
Alle Aktionen funktionieren garantiert unter CentOS 7.7.1908, PostgreSQL 12 und GitLab 12.4.2-ee.0.

Vorbereitende Vorbereitung

Machen wir vorab drei Dinge:

1. Fügen Sie auf dem PostgreSQL-Server eine Regel zur Firewall hinzu, die eingehende Verbindungen zum PostgreSQL-Port 5432/TCP zulässt.

In meinem Fall:

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

2. Erlauben Sie an derselben Stelle, aber in der Datei postgresql.conf, dass die Netzwerkschnittstelle eingehende Verbindungen von außen akzeptiert. Öffnen Sie die Datei postgresql.conf und suchen Sie die auskommentierte Zeile „#listen_addresses = 'localhost'" und fügen Sie darunter eine Zeile wie unten ein. Wobei - 10.0.0.2, die Adresse Ihrer Schnittstelle.

In meinem Fall:

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. Da der GitLab-Server eine Verbindung zu einer externen Datenbank herstellt, muss dies auf dem PostgreSQL-Server in der Datei pg_hba.conf zugelassen werden. Meine GitLab-Serveradresse ist 10.0.0.4.

Öffnen wir die Datei pg_hba.conf und fügen dort die Zeile hinzu:

host    all             gitlab               10.0.0.4/24             md5

Es wird so aussehen:

# 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

Und schließlich starten wir den Postgresql-Dienst neu:

systemctl restart postgresql-12.service

Exportieren einer GitLab-Datenbank

Führen wir eine Datenbanksicherung auf dem GitLab-Server durch:

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

Das Backup erschien in /tmp:

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

Kopieren wir diese Kopie auf den PostgreSQL-Server:

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

Importieren von „internal-gitlab.sql“ in PostgreSQL

Importieren Sie die Datenbank in PostgreSQL:

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

Überprüfen Sie, ob sich die Datenbank jetzt in PostgreSQL befindet:

sudo -u postgres psql -l

Die folgende Zeile sollte erscheinen:

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

GitLab konfigurieren

Nach dem Import der Datenbank in PostgreSQL wurde ein Gitlab-Benutzer erstellt. Sie müssen das Passwort dieses Benutzers ändern.

Passwort ändern:

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

Anschließend geben wir auf dem GitLab-Server in der Konfigurationsdatei /etc/gitlab/gitlab.rb alle Daten des externen PostgreSQL an.

Erstellen wir eine Sicherungskopie der Datei gitlab.rb:

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

Fügen Sie nun diese Zeilen am Ende der Datei gitlab.rb hinzu:

# Отключить встроенный 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'] = '******'

Speichern Sie die Datei /etc/gitlab/gitlab.rb und konfigurieren Sie GitLab neu:

gitlab-ctl reconfigure && gitlab-ctl restart

Das ist alles :)

Große Bitte. Wenn Sie ein Minus eingeben, schreiben Sie den Grund in die Kommentare.

Source: habr.com

Kommentar hinzufügen