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.

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
success2. 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 md5systemctl restart postgresql-12.service
Export der GitLab-DatenbankFü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 PostgreSQLWir 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 GitLabNach 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
