Bună ziua tuturor!
În acest articol, vom migra baza de date GitLab de la PostgreSQL intern, care este instalat cu GitLab, la PostgreSQL extern, care este deja instalat pe un alt server.

NOTĂ
Toate acțiunile sunt garantate să funcționeze CentOS 7.7.1908, PostgreSQL 12 și GitLab 12.4.2-ee.0.
ПредвР° рительнР° СЏ подготоваР°
Să facem trei lucruri în avans:
1. Pe Server Adăugați o regulă la firewall-ul PostgreSQL care permite conexiunile de intrare la portul PostgreSQL 5432/TCP.
În cazul meu:
firewall-cmd --add-service=postgresql --zone=internal --permanent
success
firewall-cmd --reload
success2. În același loc, dar în fișierul postgresql.conf, permiteți interfeței de rețea să accepte conexiuni de intrare din exterior. Deschideți fișierul postgresql.conf, găsiți linia comentată "#listen_addresses = 'localhost'" și sub ea adăugați o linie ca mai jos. Unde - 10.0.0.2, adresa interfeței dvs.
În cazul meu:
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. Deoarece serverul GitLab se va conecta la o bază de date externă, atunci Server PostgreSQL trebuie activat în fișierul pg_hba.conf. Adresa serverului meu GitLab este 10.0.0.4.
Să deschidem fișierul pg_hba.conf și să adăugăm linia acolo:
host all gitlab 10.0.0.4/24 md5Va arăta astfel:
# 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Și, în sfârșit, repornim serviciul postgresql:
systemctl restart postgresql-12.serviceExportarea unei baze de date GitLab
Să efectuăm o copie de rezervă a bazei de date pe serverul GitLab:
sudo -u gitlab-psql /opt/gitlab/embedded/bin/pg_dumpall -U gitlab-psql --host=/var/opt/gitlab/postgresql > /tmp/internal-gitlab.sqlBackup-ul a apărut în /tmp:
ls -lh
total 836K
-rw-r--r--. 1 root root 836K Nov 18 12:59 internal-gitlab.sqlSă copiem această copie pe serverul PostgreSQL:
scp /tmp/internal-gitlab.sql 10.0.0.2:/tmp/
internal-gitlab.sql 100% 835KB 50.0MB/s 00:00Importul „internal-gitlab.sql” în PostgreSQL
Importați baza de date în PostgreSQL:
sudo -u postgres psql -f /tmp/internal-gitlab.sqlVerificați dacă baza de date este acum în PostgreSQL:
sudo -u postgres psql -lAr trebui să apară următoarea linie:
gitlabhq_production | gitlab | UTF8 | en_US.UTF-8 | en_US.UTF-8 |Configurarea GitLab
După importarea bazei de date în PostgreSQL, a fost creat un utilizator gitlab. Trebuie să schimbați parola acestui utilizator.
Schimbarea parolei:
sudo -u postgres psql -c "ALTER USER gitlab ENCRYPTED PASSWORD 'ПАРОЛЬ' VALID UNTIL 'infinity';"
Password for user postgres:
ALTER ROLEApoi, pe serverul GitLab, în fișierul de configurare /etc/gitlab/gitlab.rb, vom indica toate datele PostgreSQL-ului extern.
Să facem o copie de rezervă a fișierului gitlab.rb:
cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.origAcum adăugați aceste linii la sfârșitul fișierului 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'] = '******'Salvați fișierul /etc/gitlab/gitlab.rb și reconfigurați GitLab:
gitlab-ctl reconfigure && gitlab-ctl restartAsta e tot :)
Cerere mare. Dacă puneți un minus, scrieți motivul în comentarii.
Sursa: www.habr.com
