Hello!
Dalam artikel ini, kami akan memindahkan pangkalan data GitLab daripada PostgreSQL dalaman, yang dipasang dengan GitLab, kepada PostgreSQL luaran, yang telah dipasang pada pelayan lain.
NOTA
Semua tindakan dijamin berfungsi pada CentOS 7.7.1908, PostgreSQL 12 dan GitLab 12.4.2-ee.0.
Penyediaan awal
Mari kita lakukan tiga perkara terlebih dahulu:
1. Pada pelayan PostgreSQL, tambahkan peraturan pada tembok api yang membenarkan sambungan masuk ke port PostgreSQL 5432/TCP.
Dalam kes saya:
firewall-cmd --add-service=postgresql --zone=internal --permanent
success
firewall-cmd --reload
success
2. Di tempat yang sama, tetapi dalam fail postgresql.conf, benarkan antara muka rangkaian menerima sambungan masuk dari luar. Buka fail postgresql.conf, cari baris yang dikomen "#listen_addresses = 'localhost'" dan di bawahnya tambahkan baris seperti di bawah. Di mana - 10.0.0.2, alamat antara muka anda.
Dalam kes saya:
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. Memandangkan pelayan GitLab akan menyambung ke pangkalan data luaran, ini mesti dibenarkan pada pelayan PostgreSQL dalam fail pg_hba.conf. Alamat pelayan GitLab saya ialah 10.0.0.4.
Mari buka fail pg_hba.conf dan tambah baris di sana:
host all gitlab 10.0.0.4/24 md5
Ia akan kelihatan seperti ini:
# 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
Dan akhirnya, kami memulakan semula perkhidmatan postgresql:
systemctl restart postgresql-12.service
Mengeksport pangkalan data GitLab
Mari lakukan sandaran pangkalan data pada pelayan GitLab:
sudo -u gitlab-psql /opt/gitlab/embedded/bin/pg_dumpall -U gitlab-psql --host=/var/opt/gitlab/postgresql > /tmp/internal-gitlab.sql
Sandaran muncul dalam /tmp:
ls -lh
total 836K
-rw-r--r--. 1 root root 836K Nov 18 12:59 internal-gitlab.sql
Mari salin salinan ini ke pelayan PostgreSQL:
scp /tmp/internal-gitlab.sql 10.0.0.2:/tmp/
internal-gitlab.sql 100% 835KB 50.0MB/s 00:00
Mengimport "internal-gitlab.sql" ke dalam PostgreSQL
Import pangkalan data ke dalam PostgreSQL:
sudo -u postgres psql -f /tmp/internal-gitlab.sql
Semak bahawa pangkalan data kini berada dalam PostgreSQL:
sudo -u postgres psql -l
Baris berikut sepatutnya muncul:
gitlabhq_production | gitlab | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
Mengkonfigurasi GitLab
Selepas mengimport pangkalan data ke dalam PostgreSQL, pengguna gitlab telah dicipta. Anda perlu menukar kata laluan pengguna ini.
Menukar kata laluan:
sudo -u postgres psql -c "ALTER USER gitlab ENCRYPTED PASSWORD 'ΠΠΠ ΠΠΠ¬' VALID UNTIL 'infinity';"
Password for user postgres:
ALTER ROLE
Kemudian, pada pelayan GitLab, dalam fail konfigurasi /etc/gitlab/gitlab.rb, kami akan menunjukkan semua data PostgreSQL luaran.
Mari buat salinan sandaran fail gitlab.rb:
cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.orig
Sekarang tambahkan baris ini pada penghujung fail 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'] = '******'
Simpan fail /etc/gitlab/gitlab.rb dan konfigurasi semula GitLab:
gitlab-ctl reconfigure && gitlab-ctl restart
Itu sahaja :)
Permintaan besar. Jika anda meletakkan tolak, tulis sebab dalam komen.
Sumber: www.habr.com