Hei alle sammen!
I denne artikkelen skal vi migrere GitLab-databasen fra den interne PostgreSQL som installeres sammen med GitLab, til ekstern PostgreSQL som allerede er installert på en annen server.

MERK
Alle handlingene fungerer garantert på CentOS 7.7.1908, PostgreSQL 12 og GitLab 12.4.2-ee.0.
Serveren for databasen Firebird 3.0 tildeler og frigjør systemminnet dynamisk, noe som kan føre til fragmentering. For eksempel, etter en samtidig frakobling av et stort antall brukere fra superserveren, kan det oppstå feil ved nye tilkoblinger.
La oss først utføre tre trinn:
1. På serveren PostgreSQL, legg til en regel i brannmuren som tillater innkommende tilkoblinger til PostgreSQL-porten 5432/TCP.
I mitt tilfelle:
firewall-cmd --add-service=postgresql --zone=internal --permanent
success
firewall-cmd --reload
success2. Også der, men i filen postgresql.conf, tillat nettverksgrensesnittet å ta imot innkommende tilkoblinger. Åpne filen postgresql.conf, finn den kommenterte linjen «#listen_addresses = ‘localhost’» og legg til følgende linje under. Her er 10.0.0.2 adressen til ditt grensesnitt.
I mitt tilfelle:
vi /var/lib/pgsql/12/data/postgresql.conf
# - Connection Settings -
#listen_addresses = 'localhost' # hvilke IP-adresser å lytte på;
listen_addresses = 'localhost, 10.0.0.2'
# kommaseparert liste over adresser;3. Siden GitLab-serveren vil koble seg til den eksterne databasen, må vi tillate dette i filen pg_hba.conf. Adressen til GitLab-serveren min er 10.0.0.4. serveren La oss åpne filen pg_hba.conf og legge til denne linjen:
host all gitlab 10.0.0.4/24 md5
Det vil se slik ut:Og til slutt, restart postgresql-tjenesten:
# 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
Eksport av GitLab-databaseVi tar sikkerhetskopi av databasen på GitLab-serveren:
sudo -u gitlab-psql /opt/gitlab/embedded/bin/pg_dumpall -U gitlab-psql --host=/var/opt/gitlab/postgresql > /tmp/internal-gitlab.sql
Sikkerhetskopien ble opprettet i /tmp:ls -lh total 836K -rw-r--r--. 1 root root 836K Nov 18 12:59 internal-gitlab.sql
La oss kopiere denne kopien til PostgreSQL-serveren:scp /tmp/internal-gitlab.sql 10.0.0.2:/tmp/ internal-gitlab.sql 100% 835KB 50.0MB/s 00:00
Importer «internal-gitlab.sql» til PostgreSQLVi importerer databasen til PostgreSQL:
sudo -u postgres psql -f /tmp/internal-gitlab.sql
Sjekk at databasen nå er i PostgreSQL:sudo -u postgres psql -l
Den skal vise følgende rad:gitlabhq_production | gitlab | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
Konfigurering av GitLabEtter at databasen er importert til PostgreSQL, er brukeren gitlab blitt opprettet. Du må endre passordet til denne brukeren.
Vi endrer passordet:
sudo -u postgres psql -c "ALTER USER gitlab ENCRYPTED PASSWORD 'PASSORD' VALID UNTIL 'infinity';" Password for user postgres: ALTER ROLE
Deretter på GitLab-serveren, i konfigurasjonsfilen /etc/gitlab/gitlab.rb, angir vi all informasjon om den eksterne PostgreSQL.La oss ta en sikkerhetskopi av filen gitlab.rb:
cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.orig
Nå legger vi til disse linjene på slutten av filen gitlab.rb:Lagre filen /etc/gitlab/gitlab.rb og rekonfigurere GitLab:
# Отключить встроенный 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'] = '******'Vi lagrar filen /etc/gitlab/gitlab.rb og rekonfigurerer GitLab:
gitlab-ctl reconfigure && gitlab-ctl restartDet er alt 🙂
En stor forespørsel. Hvis du har satt minusscore, vennligst skriv årsaken i kommentaren.
Kilde: habr.com
