Hallo zusammen!
In diesem Artikel migrieren wir die GitLab-Datenbank von dem internen PostgreSQL, das zusammen mit GitLab installiert wird, zu einem externen PostgreSQL, das 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.
Vorbereitung
Zuvor führen wir drei Schritte aus:
1. Auf Server Fügen Sie im Firewall von PostgreSQL eine Regel hinzu, die eingehende Verbindungen auf den 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, externe eingehende Verbindungen anzunehmen. Öffnen Sie die Datei postgresql.conf, suchen Sie die auskommentierte 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
# - Connection Settings -
#listen_addresses = 'localhost' # welche IP-Adresse(n) anhören;
listen_addresses = 'localhost, 10.0.0.2'
# durch Kommas getrennte Liste von Adressen;3. Da der GitLab-Server eine Verbindung zur externen Datenbank herstellen wird, müssen wir dies in der Datei pg_hba.conf auf Server PostgreSQL erlauben. Die Adresse meines GitLab-Servers ist 10.0.0.4.
Öffnen Sie die Datei pg_hba.conf und fügen Sie dort die folgende Zeile hinzu:
host all gitlab 10.0.0.4/24 md5Es 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 md5Und schließlich starten wir den Dienst postgresql neu:
systemctl restart postgresql-12.serviceGitLab-Datenbank exportieren
Wir werden auf dem GitLab-Server eine Sicherung der Datenbank durchführen:
sudo -u gitlab-psql /opt/gitlab/embedded/bin/pg_dumpall -U gitlab-psql --host=/var/opt/gitlab/postgresql > /tmp/internal-gitlab.sqlDie Sicherung befindet sich in /tmp:
ls -lh
total 836K
-rw-r--r--. 1 root root 836K Nov 18 12:59 internal-gitlab.sqlWir kopieren diese Sicherung auf den PostgreSQL-Server:
scp /tmp/internal-gitlab.sql 10.0.0.2:/tmp/
internal-gitlab.sql 100% 835KB 50.0MB/s 00:00Importiere «internal-gitlab.sql» in PostgreSQL
Wir importieren die Datenbank in PostgreSQL:
sudo -u postgres psql -f /tmp/internal-gitlab.sqlÜberprüfen, ob die Datenbank jetzt in PostgreSQL ist:
sudo -u postgres psql -lEs sollte folgende Zeile erscheinen:
gitlabhq_production | gitlab | UTF8 | en_US.UTF-8 | en_US.UTF-8 |GitLab konfigurieren
Nach dem Import 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 ROLEDann geben wir auf dem GitLab-Server in der Konfigurationsdatei /etc/gitlab/gitlab.rb alle Daten der externen PostgreSQL an.
Wir machen eine Sicherung der Datei gitlab.rb:
cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.origJetzt fügen wir am Ende der Datei gitlab.rb diese Zeilen 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'] = '******'Wir speichern die Datei /etc/gitlab/gitlab.rb und rekonfigurieren GitLab:
gitlab-ctl reconfigure && gitlab-ctl restartDas ist alles 🙂
Eine große Bitte. Wenn Sie ein negatives Feedback gegeben haben, schreiben Sie bitte den Grund in die Kommentare.
Quelle: habr.com
