Penghijrahan pangkalan data GitLab ke PostgreSQL luaran

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.

Penghijrahan pangkalan data GitLab ke PostgreSQL luaran

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

Tambah komen