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