Hello everyone!
Yn dit artikel sille wy de GitLab-database migrearje fan ynterne PostgreSQL, dy't ynstalleare is mei GitLab, nei eksterne PostgreSQL, dy't al is ynstalleare op in oare server.
NOTE
Alle aksjes wurde garandearre om te wurkjen op CentOS 7.7.1908, PostgreSQL 12 en GitLab 12.4.2-ee.0.
Foarriedige tarieding
Litte wy foarôf trije dingen dwaan:
1. Op de PostgreSQL-tsjinner, foegje in regel ta oan 'e brânmuorre dy't ynkommende ferbiningen mei PostgreSQL-poarte 5432 / TCP mooglik makket.
Yn myn gefal:
firewall-cmd --add-service=postgresql --zone=internal --permanent
success
firewall-cmd --reload
success
2. Op itselde plak, mar yn it postgresql.conf-bestân, lit de netwurkynterface ynkommende ferbiningen fan bûten akseptearje. Iepenje it postgresql.conf-bestân, fyn de kommentearre line "#listen_addresses = 'localhost'" en foegje dêrûnder in rigel ta lykas hjirûnder. Wêr - 10.0.0.2, it adres fan jo ynterface.
Yn myn gefal:
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. Sûnt de GitLab-tsjinner sil ferbine mei in eksterne databank, moat dit tastien wurde op de PostgreSQL-tsjinner yn it pg_hba.conf-bestân. Myn GitLab-tsjinneradres is 10.0.0.4.
Litte wy it bestân pg_hba.conf iepenje en dêr de rigel taheakje:
host all gitlab 10.0.0.4/24 md5
It sil der sa útsjen:
# 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
En as lêste begjinne wy de postgresql-tsjinst opnij:
systemctl restart postgresql-12.service
Eksportearje fan in GitLab-database
Litte wy in database-backup útfiere op 'e GitLab-tsjinner:
sudo -u gitlab-psql /opt/gitlab/embedded/bin/pg_dumpall -U gitlab-psql --host=/var/opt/gitlab/postgresql > /tmp/internal-gitlab.sql
De reservekopy ferskynde yn /tmp:
ls -lh
total 836K
-rw-r--r--. 1 root root 836K Nov 18 12:59 internal-gitlab.sql
Litte wy dizze kopy kopiearje nei de PostgreSQL-tsjinner:
scp /tmp/internal-gitlab.sql 10.0.0.2:/tmp/
internal-gitlab.sql 100% 835KB 50.0MB/s 00:00
It ymportearjen fan "internal-gitlab.sql" yn PostgreSQL
Ymportearje de databank yn PostgreSQL:
sudo -u postgres psql -f /tmp/internal-gitlab.sql
Kontrolearje dat de databank no yn PostgreSQL is:
sudo -u postgres psql -l
De folgjende rigel moat ferskine:
gitlabhq_production | gitlab | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
GitLab konfigurearje
Nei it ymportearjen fan de databank yn PostgreSQL, waard in gitlab-brûker makke. Jo moatte it wachtwurd fan dizze brûker feroarje.
It wachtwurd feroarje:
sudo -u postgres psql -c "ALTER USER gitlab ENCRYPTED PASSWORD 'ПАРОЛЬ' VALID UNTIL 'infinity';"
Password for user postgres:
ALTER ROLE
Dan, op de GitLab-tsjinner, yn it konfiguraasjetriem /etc/gitlab/gitlab.rb, sille wy alle gegevens fan 'e eksterne PostgreSQL oanjaan.
Litte wy in reservekopy meitsje fan it gitlab.rb-bestân:
cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.orig
Foegje no dizze rigels ta oan it ein fan it gitlab.rb-bestân:
# Отключить встроенный 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'] = '******'
Bewarje it bestân /etc/gitlab/gitlab.rb en konfigurearje GitLab opnij:
gitlab-ctl reconfigure && gitlab-ctl restart
Da's alles :)
Grutte fersyk. As jo in minus sette, skriuw dan de reden yn 'e kommentaren.
Boarne: www.habr.com