Migration der GitLab-Datenbank auf externe PostgreSQL

Hallo zusammen!

In diesem Artikel führen wir die Migration der GitLab-Datenbank von der internen PostgreSQL-Datenbank, die zusammen mit GitLab installiert wird, zu einer externen PostgreSQL-Datenbank durch, die bereits auf einem anderen Server installiert ist.

Migration der GitLab-Datenbank auf externe PostgreSQL

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

Der Firebird 3.0-SQL-Datenbankserver weist eine dynamische Zuweisung und Freigabe von Systemspeicher auf, was zu Fragmentierungen führen kann. Beispielsweise können nach der gleichzeitigen Trennung einer großen Anzahl von Benutzern vom Superserver Fehler bei neuen Verbindungen auftreten.

Wir führen im Voraus drei Schritte durch:

1. Auf Server Fügen Sie in der Firewall eine Regel hinzu, die eingehende Verbindungen auf dem PostgreSQL-Port 5432/TCP erlaubt.

In meinem Fall:

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

2. An derselben Stelle, aber in der Datei postgresql.conf, erlauben Sie dem Netzwerk-Interface, eingehende Verbindungen von außen anzunehmen. Öffnen Sie die Datei postgresql.conf, suchen Sie nach der auskommentierten Zeile „#listen_addresses = ‘localhost’“ und fügen Sie darunter die folgende Zeile hinzu. Wo — 10.0.0.2, die Adresse Ihres Interfaces.

In meinem Fall:

vi /var/lib/pgsql/12/data/postgresql.conf
# - Verbindungseinstellungen -

#listen_addresses = 'localhost'         # an welcher(n) IP-Adresse(n) soll zugehört werden;
listen_addresses = 'localhost, 10.0.0.2'
                                        # kommagetrennte Liste von Adressen;

3. Da der GitLab-Server eine Verbindung zur externen Datenbank herstellen wird, muss dies in der Datei pg_hba.conf erlaubt werden. Die Adresse meines GitLab-Servers ist 10.0.0.4. Server Öffnen wir die Datei pg_hba.conf und fügen wir dort die Zeile hinzu:

host all gitlab 10.0.0.4/24 md5

Das wird so aussehen:

Und schließlich starten wir den Dienst postgresql neu:

# 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

systemctl restart postgresql-12.service

Export der GitLab-Datenbank

Führen Sie auf dem GitLab-Server eine Sicherung der Datenbank 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 befindet sich in /tmp:

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

Wir kopieren dieses Backup auf den PostgreSQL-Server:

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

Import von „internal-gitlab.sql“ in PostgreSQL

Wir importieren die Datenbank in PostgreSQL:

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

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

sudo -u postgres psql -l

Es sollte folgende Zeile erscheinen:

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

Konfiguration von GitLab

Nach dem Importieren der Datenbank in PostgreSQL wurde der Benutzer gitlab erstellt. Sie müssen das Passwort dieses Benutzers ändern.

Passwort ändern:

sudo -u postgres psql -c "ALTER USER gitlab ENCRYPTED PASSWORD 'PASSWORT' VALID UNTIL 'infinity';" Password for user postgres: ALTER ROLE

Dann geben Sie auf dem GitLab-Server in der Konfigurationsdatei /etc/gitlab/gitlab.rb alle Daten der externen PostgreSQL an.

Machen wir eine Sicherung der Datei gitlab.rb:

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

Jetzt fügen wir am Ende der Datei gitlab.rb diese Zeilen hinzu:

Wir speichern die Datei /etc/gitlab/gitlab.rb und konfigurieren GitLab neu:

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

gitlab-ctl reconfigure && gitlab-ctl restart

Das war's 🙂

Das ist es 🙂

Eine große Bitte. Wenn Sie einen Minuspunkt vergeben haben, schreiben Sie bitte den Grund in die Kommentare.

Quelle: habr.com

60GB SSD 8Gb DDR4