Hej alle sammen!
I denne artikel vil vi migrere GitLab-databasen fra den interne PostgreSQL, der installeres sammen med GitLab, til en ekstern PostgreSQL, som allerede er installeret på en anden server.

BEMÆRKNING
Alle handlinger fungerer garanteret på CentOS 7.7.1908, PostgreSQL 12 og GitLab 12.4.2-ee.0.
Forberedelse.
Vi skal på forhånd udføre tre handlinger:
1. På serveren PostgreSQL skal du tilføje en regel i firewallen, der tillader indgående forbindelser på PostgreSQL-port 5432/TCP.
I mit tilfælde:
firewall-cmd --add-service=postgresql --zone=internal --permanent
success
firewall-cmd --reload
success2. Samme sted, men i filen postgresql.conf, skal du tillade netværksinterfacet at acceptere indgående forbindelser udefra. Åbn filen postgresql.conf, find den kommenterede linje "#listen_addresses = ‘localhost’» og tilføj en linje under den som nedenfor. Hvor — 10.0.0.2, adressen til dit interface.
I mit tilfælde:
vi /var/lib/pgsql/12/data/postgresql.conf
# - Forbindelsesindstillinger -
#listen_addresses = 'localhost' # hvilken IP-adresse(r) der skal lytte på;
listen_addresses = 'localhost, 10.0.0.2'
# komma-separeret liste af adresser;3. Da GitLab-serveren vil oprette forbindelse til den eksterne database, skal dette tillades i filen pg_hba.conf. serveren Serverens adresse for GitLab er 10.0.0.4.
Lad os åbne filen pg_hba.conf og tilføje følgende linje:
host all gitlab 10.0.0.4/24 md5Dette vil se således 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 md5Og til sidst genstarter vi postgresql-tjenesten:
systemctl restart postgresql-12.serviceEksport af GitLab-database
Lad os udføre backup af 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.sqlBackup'en blev oprettet i /tmp:
ls -lh
total 836K
-rw-r--r--. 1 root root 836K Nov 18 12:59 internal-gitlab.sqlVi kopierer denne backup til PostgreSQL-serveren:
scp /tmp/internal-gitlab.sql 10.0.0.2:/tmp/
internal-gitlab.sql 100% 835KB 50.0MB/s 00:00Import af "internal-gitlab.sql" i PostgreSQL
Lad os importere databasen i PostgreSQL:
sudo -u postgres psql -f /tmp/internal-gitlab.sqlTjek om databasen nu er i PostgreSQL:
sudo -u postgres psql -lDer skal vises en linje som denne:
gitlabhq_production | gitlab | UTF8 | en_US.UTF-8 | en_US.UTF-8 |Konfiguration af GitLab
Efter importen af databasen til PostgreSQL blev brugeren gitlab oprettet. Du skal ændre adgangskoden for denne bruger.
Vi ændrer adgangskoden:
sudo -u postgres psql -c "ALTER USER gitlab ENCRYPTED PASSWORD 'PASSWORD' VALID UNTIL 'infinity';"
Adgangskode for brugeren postgres:
ALTER ROLEDernæst opdaterer vi alle oplysninger om den eksterne PostgreSQL i konfigurationsfilen /etc/gitlab/gitlab.rb på GitLab-serveren.
Lad os lave en backup af filen gitlab.rb:
cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.origNu tilføjer vi disse linjer til slutningen af filen gitlab.rb:
# Отключить встроенный 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 gemmer filen /etc/gitlab/gitlab.rb og rekonfigurerer GitLab:
gitlab-ctl reconfigure && gitlab-ctl restartDet er det hele 🙂
Vi beder dig venligst om at skrive grunden til din nedstemning i kommentaren.
Kilde: habr.com
