Migrarea bazei de date GitLab la PostgreSQL extern

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.

Migrarea bazei de date GitLab la PostgreSQL extern

NOTĂ
Toate acțiunile sunt garantate să funcționeze pe CentOS 7.7.1908, PostgreSQL 12 și GitLab 12.4.2-ee.0.

ПредвР° рительнР° СЏ подготоваР°

Să facem trei lucruri în avans:

1. Pe serverul PostgreSQL, adăugați o regulă la paravanul de protecție 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
success

2. Î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ă, acest lucru trebuie să fie permis pe serverul PostgreSQL î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             md5

Va 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.service

Exportarea 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.sql

Backup-ul a apărut în /tmp:

ls -lh
total 836K
-rw-r--r--. 1 root root 836K Nov 18 12:59 internal-gitlab.sql

Să 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:00

Importul „internal-gitlab.sql” în PostgreSQL

Importați baza de date în PostgreSQL:

sudo -u postgres psql -f /tmp/internal-gitlab.sql

Verificați dacă baza de date 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 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 ROLE

Apoi, 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.orig

Acum 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 restart

Asta e tot :)

Cerere mare. Dacă puneți un minus, scrieți motivul în comentarii.

Sursa: www.habr.com

Adauga un comentariu