Saluton ĉiuj!
En ĉi tiu artikolo, ni migros la GitLab-datumbazon de interna PostgreSQL, kiu estas instalita kun GitLab, al ekstera PostgreSQL, kiu jam estas instalita sur alia servilo.
NOTO
Ĉiuj agoj garantias funkcii sur CentOS 7.7.1908, PostgreSQL 12 kaj GitLab 12.4.2-ee.0.
Prepara preparado
Ni faru tri aferojn anticipe:
1. Sur la PostgreSQL-servilo, aldonu regulon al la fajroŝirmilo, kiu permesas alvenantajn konektojn al PostgreSQL-haveno 5432/TCP.
En mia kazo:
firewall-cmd --add-service=postgresql --zone=internal --permanent
success
firewall-cmd --reload
success
2. En la sama loko, sed en la postgresql.conf-dosiero, permesu al la reto-interfaco akcepti envenantajn konektojn de ekstere. Malfermu la postgresql.conf dosieron, trovu la komentitan eksteren linion "#listen_addresses = 'loka gastiganto'" kaj sub ĝi aldonu linion kiel sube. Kie - 10.0.0.2, la adreso de via interfaco.
En mia kazo:
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. Ĉar la GitLab-servilo konektos al ekstera datumbazo, tio devas esti permesita sur la PostgreSQL-servilo en la pg_hba.conf dosiero. Mia adreso de GitLab-servilo estas 10.0.0.4.
Ni malfermu la pg_hba.conf dosieron kaj aldonu la linion tie:
host all gitlab 10.0.0.4/24 md5
Ĝi aspektos tiel:
# 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
Kaj finfine, ni rekomencas la postgresql-servon:
systemctl restart postgresql-12.service
Eksportante GitLab-datumbazon
Ni faru datumbazan sekurkopion sur la GitLab-servilo:
sudo -u gitlab-psql /opt/gitlab/embedded/bin/pg_dumpall -U gitlab-psql --host=/var/opt/gitlab/postgresql > /tmp/internal-gitlab.sql
La sekurkopio aperis en /tmp:
ls -lh
total 836K
-rw-r--r--. 1 root root 836K Nov 18 12:59 internal-gitlab.sql
Ni kopiu ĉi tiun kopion al la PostgreSQL-servilo:
scp /tmp/internal-gitlab.sql 10.0.0.2:/tmp/
internal-gitlab.sql 100% 835KB 50.0MB/s 00:00
Importi "internal-gitlab.sql" en PostgreSQL
Importu la datumbazon en PostgreSQL:
sudo -u postgres psql -f /tmp/internal-gitlab.sql
Kontrolu, ke la datumbazo nun estas en PostgreSQL:
sudo -u postgres psql -l
La sekva linio devus aperi:
gitlabhq_production | gitlab | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
Agordante GitLab
Post importado de la datumbazo en PostgreSQL, gitlab-uzanto estis kreita. Vi devas ŝanĝi la pasvorton de ĉi tiu uzanto.
Ŝanĝi la pasvorton:
sudo -u postgres psql -c "ALTER USER gitlab ENCRYPTED PASSWORD 'ПАРОЛЬ' VALID UNTIL 'infinity';"
Password for user postgres:
ALTER ROLE
Tiam, sur la GitLab-servilo, en la agorda dosiero /etc/gitlab/gitlab.rb, ni indikos ĉiujn datumojn de la ekstera PostgreSQL.
Ni faru rezervan kopion de la dosiero gitlab.rb:
cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.orig
Nun aldonu ĉi tiujn liniojn al la fino de la dosiero 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'] = '******'
Konservu la dosieron /etc/gitlab/gitlab.rb kaj reagordu GitLab:
gitlab-ctl reconfigure && gitlab-ctl restart
Tio estas ĉio :)
Granda peto. Se vi metas minuson, skribu la kialon en la komentoj.
fonto: www.habr.com