Salut tuturor!
În acest articol, vom efectua migrarea bazei de date GitLab de la PostgreSQL intern, care se instalează împreună cu GitLab, la PostgreSQL extern, care este deja instalat pe un alt server.

NOTĂ
Toate acțiunile funcționează garantat pe CentOS 7.7.1908, PostgreSQL 12 și GitLab 12.4.2-ee.0.
Pregătirea preliminară
Să efectuăm din timp trei acțiuni:
1. Pe server PostgreSQL, adăugați o regulă în firewall care să permită conexiunile în intrare pe portul PostgreSQL 5432/TCP.
În cazul meu:
firewall-cmd --add-service=postgresql --zone=internal --permanent
success
firewall-cmd --reload
success2. Tot acolo, dar în fișierul postgresql.conf, permiteți interfeței de rețea să primească conexiuni în intrare din exterior. Deschideți fișierul postgresql.conf, găsiți linia comentată „#listen_addresses = ‘localhost’” și adăugați sub ea linia de mai jos. Unde — 10.0.0.2, adresa interfeței dumneavoastră.
În cazul meu:
vi /var/lib/pgsql/12/data/postgresql.conf
# - Setări de conexiune -
#listen_addresses = 'localhost' # ce adresă IP să asculte;
listen_addresses = 'localhost, 10.0.0.2'
# listă de adrese separate prin virgule;3. Deoarece serverul GitLab se va conecta la baza externă, trebuie să permiteți acest lucru în fișierul pg_hba.conf. Adresa serverului meu GitLab este 10.0.0.4. server Vom deschide fișierul pg_hba.conf și vom adăuga acolo linia:
host all gitlab 10.0.0.4/24 md5
Ar trebui să arate așa:Și, în cele din urmă, repornim serviciul 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 md5systemctl restart postgresql-12.service
Exportarea bazei de date GitLabPe serverul GitLab, vom efectua o copie de siguranță a bazei:
sudo -u gitlab-psql /opt/gitlab/embedded/bin/pg_dumpall -U gitlab-psql --host=/var/opt/gitlab/postgresql > /tmp/internal-gitlab.sql
Copie de rezervă a fost creată în /tmp:ls -lh total 836K -rw-r--r--. 1 root root 836K Nov 18 12:59 internal-gitlab.sql
Vom copia această copie pe serverul PostgreSQL:scp /tmp/internal-gitlab.sql 10.0.0.2:/tmp/ internal-gitlab.sql 100% 835KB 50.0MB/s 00:00
Importarea „internal-gitlab.sql” în PostgreSQLImportăm baza în PostgreSQL:
sudo -u postgres psql -f /tmp/internal-gitlab.sql
Verificați dacă baza este acum în PostgreSQL:sudo -u postgres psql -l
Ar trebui să apară următoarea linie:gitlabhq_production | gitlab | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
Configurarea GitLabDupă importarea bazei în PostgreSQL, a fost creat utilizatorul gitlab. Va trebui să schimbați parola acestui utilizator.
Schimbăm parola:
sudo -u postgres psql -c "ALTER USER gitlab ENCRYPTED PASSWORD 'PAROLĂ' VALID UNTIL 'infinity';" Password for user postgres: ALTER ROLE
Apoi, pe serverul GitLab, în fișierul de configurare /etc/gitlab/gitlab.rb, vom specifica toate datele PostgreSQL externe.Vom face o copie de rezervă a fișierului gitlab.rb:
cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.orig
Acum, la sfârșitul fișierului gitlab.rb, adăugați aceste linii:Salvați fișierul /etc/gitlab/gitlab.rb și reconfigurați 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'] = '******'Vom fi salvând fișierul /etc/gitlab/gitlab.rb și vom reconfigura GitLab:
gitlab-ctl reconfigure && gitlab-ctl restartAsta este tot 🙂
O mare rugăminte. Dacă ai dat un vot negativ, te rog să scrii motivul în comentarii.
Sursa: habr.com
