Hallo iedereen!
In dit artikel migreren we de GitLab-database van interne PostgreSQL, die met GitLab is geïnstalleerd, naar externe PostgreSQL, die al op een andere server is geïnstalleerd.

NOTE
Alle acties werken gegarandeerd. CentOS 7.7.1908, PostgreSQL 12 en GitLab 12.4.2-ee.0.
Voorbereidende voorbereiding
Laten we drie dingen van tevoren doen:
1. Op server Voeg een regel toe aan de PostgreSQL-firewall die inkomende verbindingen naar PostgreSQL-poort 5432/TCP toestaat.
In mijn geval:
firewall-cmd --add-service=postgresql --zone=internal --permanent
success
firewall-cmd --reload
success2. Sta op dezelfde plaats, maar in het bestand postgresql.conf, toe dat de netwerkinterface inkomende verbindingen van buitenaf accepteert. Open het bestand postgresql.conf en zoek de regel met commentaar "#listen_addresses = 'localhost'" en voeg daaronder een regel toe zoals hieronder. Waar - 10.0.0.2, het adres van uw interface.
In mijn geval:
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. Aangezien de GitLab-server verbinding zal maken met een externe database, dan server PostgreSQL moet ingeschakeld zijn in het pg_hba.conf-bestand. Het IP-adres van mijn GitLab-server is 10.0.0.4.
Laten we het bestand pg_hba.conf openen en daar de regel toevoegen:
host all gitlab 10.0.0.4/24 md5Het zal er als volgt uitzien:
# 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 md5En ten slotte herstarten we de postgresql-service:
systemctl restart postgresql-12.serviceEen GitLab-database exporteren
Laten we een databaseback-up uitvoeren op de GitLab-server:
sudo -u gitlab-psql /opt/gitlab/embedded/bin/pg_dumpall -U gitlab-psql --host=/var/opt/gitlab/postgresql > /tmp/internal-gitlab.sqlDe back-up verscheen in /tmp:
ls -lh
total 836K
-rw-r--r--. 1 root root 836K Nov 18 12:59 internal-gitlab.sqlLaten we deze kopie naar de PostgreSQL-server kopiëren:
scp /tmp/internal-gitlab.sql 10.0.0.2:/tmp/
internal-gitlab.sql 100% 835KB 50.0MB/s 00:00Importeren van "internal-gitlab.sql" in PostgreSQL
Importeer de database in PostgreSQL:
sudo -u postgres psql -f /tmp/internal-gitlab.sqlControleer of de database nu in PostgreSQL staat:
sudo -u postgres psql -lDe volgende regel zou moeten verschijnen:
gitlabhq_production | gitlab | UTF8 | en_US.UTF-8 | en_US.UTF-8 |GitLab configureren
Na het importeren van de database in PostgreSQL werd een gitlab-gebruiker aangemaakt. U moet het wachtwoord van deze gebruiker wijzigen.
Het wachtwoord wijzigen:
sudo -u postgres psql -c "ALTER USER gitlab ENCRYPTED PASSWORD 'ПАРОЛЬ' VALID UNTIL 'infinity';"
Password for user postgres:
ALTER ROLEVervolgens zullen we op de GitLab-server, in het configuratiebestand /etc/gitlab/gitlab.rb, alle gegevens van de externe PostgreSQL aangeven.
Laten we een reservekopie maken van het gitlab.rb-bestand:
cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.origVoeg nu deze regels toe aan het einde van het gitlab.rb-bestand:
# Отключить встроенный 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'] = '******'Sla het bestand /etc/gitlab/gitlab.rb op en configureer GitLab opnieuw:
gitlab-ctl reconfigure && gitlab-ctl restartDat is alles :)
Groot verzoek. Als u een minteken plaatst, schrijf dan de reden in de opmerkingen.
Bron: www.habr.com
