Migrasi basis data GitLab ke PostgreSQL eksternal

Halo semuanya!

Pada artikel ini, kami akan memigrasi database GitLab dari internal PostgreSQL, yang diinstal dengan GitLab, ke PostgreSQL eksternal, yang sudah diinstal pada server lain.


CATATAN
Semua tindakan dijamin bekerja pada CentOS 7.7.1908, PostgreSQL 12 dan GitLab 12.4.2-ee.0.

Persiapan awal


Kami akan melakukan tiga hal di muka:

1. Pada server PostgreSQL, tambahkan aturan ke firewall yang memungkinkan koneksi masuk ke port PostgreSQL 5432 / TCP.

Dalam kasus saya:

firewall-cmd --add-service=postgresql --zone=internal --permanent success firewall-cmd --reload success 

2. Di tempat yang sama, tetapi dalam file postgresql.conf, izinkan antarmuka jaringan menerima koneksi masuk dari luar. Buka file postgresql.conf, cari baris komentar " #listen_addresses = 'localhost' " dan tambahkan baris di bawahnya. Di mana 10.0.0.2, alamat antarmuka Anda.

Dalam kasus 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. Karena server GitLab akan terhubung ke database eksternal, ini harus diaktifkan pada server PostgreSQL di file pg_hba.conf. Alamat server GitLab saya adalah 10.0.0.4.

Buka file pg_hba.conf dan tambahkan baris di sana:

 host all gitlab 10.0.0.4/24 md5 

Ini akan terlihat 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 

Terakhir, restart layanan postgresql:

 systemctl restart postgresql-12.service 

Ekspor Basis Data GitLab


Mari kita jalankan, di server GitLab, mencadangkan basis data:
 sudo -u gitlab-psql /opt/gitlab/embedded/bin/pg_dumpall -U gitlab-psql --host=/var/opt/gitlab/postgresql > /tmp/internal-gitlab.sql 


Cadangan muncul di / tmp:

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

Salin salinan ini ke server PostgreSQL:

 scp /tmp/internal-gitlab.sql 10.0.0.2:/tmp/ internal-gitlab.sql 100% 835KB 50.0MB/s 00:00 

Impor "internal-gitlab.sql" ke PostgreSQL


Impor basis data ke PostgreSQL:

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

Periksa apakah databasenya sekarang ada di PostgreSQL:

 sudo -u postgres psql -l 

Baris berikut akan muncul:

 gitlabhq_production | gitlab | UTF8 | en_US.UTF-8 | en_US.UTF-8 | 

Mengkonfigurasi GitLab


Setelah mengimpor database ke PostgreSQL, pengguna gitlab dibuat. Anda perlu mengubah kata sandi untuk pengguna ini.

Ubah kata sandi:

 sudo -u postgres psql -c "ALTER USER gitlab ENCRYPTED PASSWORD '' VALID UNTIL 'infinity';" Password for user postgres: ALTER ROLE 

Kemudian pada server GitLab dalam file konfigurasi /etc/gitlab/gitlab.rb kita akan menentukan semua data PostgreSQL eksternal.

Buat salinan cadangan file gitlab.rb:

 cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.orig 

Sekarang di akhir file gitlab.rb, tambahkan baris ini:

 #   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 file /etc/gitlab/gitlab.rb dan konfigurasi ulang GitLab:

 gitlab-ctl reconfigure && gitlab-ctl restart 

Itu saja :)

Permintaan besar. Jika Anda memberi minus, tulis alasannya di komentar.

Source: https://habr.com/ru/post/id476258/


All Articles