Hej alle!
I denne artikel vil vi migrere GitLab-databasen fra intern PostgreSQL, som er installeret med GitLab, til ekstern PostgreSQL, som allerede er installeret på en anden server.
BEMÆRK
Alle handlinger er garanteret til at virke på CentOS 7.7.1908, PostgreSQL 12 og GitLab 12.4.2-ee.0.
Forberedende forberedelse
Lad os gøre tre ting på forhånd:
1. På PostgreSQL-serveren skal du tilføje en regel til firewallen, der tillader indgående forbindelser til PostgreSQL-port 5432/TCP.
I mit tilfælde:
firewall-cmd --add-service=postgresql --zone=internal --permanent
success
firewall-cmd --reload
success
2. På samme sted, men i postgresql.conf filen, tillad netværksgrænsefladen at acceptere indgående forbindelser udefra. Åbn postgresql.conf filen, find den kommenterede udlinje "#listen_addresses = 'localhost'" og under den tilføjes en linje som nedenfor. Hvor - 10.0.0.2, adressen på din grænseflade.
I mit tilfælde:
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 GitLab-serveren vil oprette forbindelse til en ekstern database, skal dette tillades på PostgreSQL-serveren i filen pg_hba.conf. Min GitLab-serveradresse er 10.0.0.4.
Lad os åbne filen pg_hba.conf og tilføje linjen der:
host all gitlab 10.0.0.4/24 md5
Det vil se sådan ud:
# 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
Og til sidst genstarter vi postgresql-tjenesten:
systemctl restart postgresql-12.service
Eksport af en GitLab-database
Lad os udføre en database backup 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
Sikkerhedskopien dukkede op i /tmp:
ls -lh
total 836K
-rw-r--r--. 1 root root 836K Nov 18 12:59 internal-gitlab.sql
Lad os kopiere denne kopi til PostgreSQL-serveren:
scp /tmp/internal-gitlab.sql 10.0.0.2:/tmp/
internal-gitlab.sql 100% 835KB 50.0MB/s 00:00
Importerer "internal-gitlab.sql" til PostgreSQL
Importer databasen til PostgreSQL:
sudo -u postgres psql -f /tmp/internal-gitlab.sql
Tjek, at databasen nu er i PostgreSQL:
sudo -u postgres psql -l
Følgende linje skal vises:
gitlabhq_production | gitlab | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
Konfiguration af GitLab
Efter import af databasen til PostgreSQL blev der oprettet en gitlab-bruger. Du skal ændre denne brugers adgangskode.
Ændring af adgangskoden:
sudo -u postgres psql -c "ALTER USER gitlab ENCRYPTED PASSWORD 'ПАРОЛЬ' VALID UNTIL 'infinity';"
Password for user postgres:
ALTER ROLE
Derefter, på GitLab-serveren, i konfigurationsfilen /etc/gitlab/gitlab.rb, vil vi angive alle data fra den eksterne PostgreSQL.
Lad os lave en sikkerhedskopi af filen gitlab.rb:
cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.orig
Tilføj nu disse linjer til slutningen af gitlab.rb filen:
# Отключить встроенный 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'] = '******'
Gem filen /etc/gitlab/gitlab.rb og omkonfigurer GitLab:
gitlab-ctl reconfigure && gitlab-ctl restart
Det er alt :)
Stor anmodning. Hvis du sætter et minus, så skriv årsagen i kommentarerne.
Kilde: www.habr.com