Migrering av GitLab-databas till extern PostgreSQL

Hej alla!

I den här artikeln kommer vi att migrera GitLab-databasen från den interna PostgreSQL, som installeras tillsammans med GitLab, till en extern PostgreSQL som redan är installerad på en annan server.

Migrering av GitLab-databas till extern PostgreSQL

OBS
Alla åtgärder fungerar garanterat på CentOS 7.7.1908, PostgreSQL 12 och GitLab 12.4.2-ee.0.

Servern för databashanterare Firebird 3.0 allokerar och frigör dynamiskt systemminne, vilket kan leda till fragmentering. Till exempel kan det uppstå fel vid nya anslutningar efter att ett stort antal användare har kopplats bort från superservern.

Vi kommer förbereda tre steg:

1. På servern PostgreSQL, lägg till en regel i brandväggen som tillåter inkommande anslutningar på PostgreSQL port 5432/TCP.

I mitt fall:

firewall-cmd --add-service=postgresql --zone=internal --permanent
success
firewall-cmd --reload
success

2. Där, men i filen postgresql.conf, tillåt nätverksgränssnittet att ta emot inkommande anslutningar utifrån. Öppna filen postgresql.conf, hitta den kommenterade raden "#listen_addresses = ‘localhost’" och lägg till raden nedanför. Där — 10.0.0.2, adressen för ditt gränssnitt.

I mitt fall:

vi /var/lib/pgsql/12/data/postgresql.conf
# - Anslutningsinställningar -

#listen_addresses = 'localhost'         # vilken IP-adress att lyssna på;
listen_addresses = 'localhost, 10.0.0.2'
                                        # kommatecken-separerad lista med adresser;

3. Eftersom GitLab-servern kommer att ansluta till den externa databasen, måste detta tillåtas i pg_hba.conf-filen. Adressen till min GitLab-server är 10.0.0.4. servern Öppna pg_hba.conf-filen och lägg till raden:

host all gitlab 10.0.0.4/24 md5

Detta kommer att se ut så här:

Och slutligen, starta om tjänsten postgresql:

# 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

systemctl restart postgresql-12.service

Exportera GitLab-databasen

Genomför en säkerhetskopia av databasen på GitLab-servern:

sudo -u gitlab-psql /opt/gitlab/embedded/bin/pg_dumpall -U gitlab-psql --host=/var/opt/gitlab/postgresql > /tmp/internal-gitlab.sql

Säkerhetskopian skapades i /tmp:

ls -lh total 836K -rw-r--r--. 1 root root 836K Nov 18 12:59 internal-gitlab.sql

Kopiera denna säkerhetskopia till PostgreSQL-servern:

scp /tmp/internal-gitlab.sql 10.0.0.2:/tmp/ internal-gitlab.sql 100% 835KB 50.0MB/s 00:00

Importera "internal-gitlab.sql" i PostgreSQL

Importera databasen i PostgreSQL:

sudo -u postgres psql -f /tmp/internal-gitlab.sql

Kontrollera att databasen nu finns i PostgreSQL:

sudo -u postgres psql -l

En sådan rad bör dyka upp:

gitlabhq_production | gitlab | UTF8 | en_US.UTF-8 | en_US.UTF-8 |

Konfigurera GitLab

Efter att databasen har importerats i PostgreSQL skapades användaren gitlab. Du måste ändra lösenordet för denna användare.

Ändra lösenord:

sudo -u postgres psql -c "ALTER USER gitlab ENCRYPTED PASSWORD 'LÖSENORD' VALID UNTIL 'infinity';" Password för användaren postgres: ALTER ROLE

Därefter i GitLab-serverns konfigurationsfil /etc/gitlab/gitlab.rb, ange all information om den externa PostgreSQL.

Låt oss ta en säkerhetskopia av filen gitlab.rb:

cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.orig

Nu lägger vi till dessa rader i slutet av filen gitlab.rb:

Spara filen /etc/gitlab/gitlab.rb och omkonfigurera 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'] = '******'

gitlab-ctl reconfigure && gitlab-ctl restart

gitlab-ctl reconfigure && gitlab-ctl restart

Det är allt 🙂

En stor förfrågan. Om du har gett ett minus, skriv gärna anledningen i kommentaren.

Källa: habr.com

Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar 🔥 Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster