GitLab veritabanının harici PostgreSQL'e taşınması

Herkese Merhaba!

Bu yazımızda GitLab veritabanını GitLab ile birlikte kurulu olan dahili PostgreSQL'den, hali hazırda başka bir sunucuda kurulu olan harici PostgreSQL'e taşıyacağız.

GitLab veritabanının harici PostgreSQL'e taşınması

NOT
Tüm eylemlerin CentOS 7.7.1908, PostgreSQL 12 ve GitLab 12.4.2-ee.0'da çalışması garanti edilir.

Ön hazırlık

Şimdiden üç şey yapalım:

1. PostgreSQL sunucusunda, güvenlik duvarına PostgreSQL bağlantı noktası 5432/TCP'ye gelen bağlantılara izin veren bir kural ekleyin.

Benim durumumda:

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

2. Aynı yerde, ancak postgresql.conf dosyasında, ağ arayüzünün dışarıdan gelen bağlantıları kabul etmesine izin verin. Postgresql.conf dosyasını açın, yorum yapılan satırı bulun "#listen_addresses = 'yerel ana bilgisayar'" ve altına aşağıdaki gibi bir satır ekleyin. Nerede - 10.0.0.2, arayüzünüzün adresi.

Benim durumumda:

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. GitLab sunucusu harici bir veritabanına bağlanacağından PostgreSQL sunucusunda pg_hba.conf dosyasında buna izin verilmesi gerekir. GitLab sunucu adresim 10.0.0.4.

pg_hba.conf dosyasını açıp satırı buraya ekleyelim:

host    all             gitlab               10.0.0.4/24             md5

Bunun gibi görünecek:

# 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

Ve son olarak postgresql servisini yeniden başlatıyoruz:

systemctl restart postgresql-12.service

GitLab veritabanını dışa aktarma

GitLab sunucusunda bir veritabanı yedeklemesi yapalım:

sudo -u gitlab-psql /opt/gitlab/embedded/bin/pg_dumpall -U gitlab-psql --host=/var/opt/gitlab/postgresql > /tmp/internal-gitlab.sql

Yedekleme /tmp'de göründü:

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

Bu kopyayı PostgreSQL sunucusuna kopyalayalım:

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

"Internal-gitlab.sql" dosyasını PostgreSQL'e aktarma

Veritabanını PostgreSQL'e aktarın:

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

Veritabanının artık PostgreSQL'de olup olmadığını kontrol edin:

sudo -u postgres psql -l

Aşağıdaki satır görünmelidir:

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

GitLab'ı Yapılandırma

Veritabanını PostgreSQL'e aktardıktan sonra bir gitlab kullanıcısı oluşturuldu. Bu kullanıcının şifresini değiştirmeniz gerekiyor.

Şifreyi değiştirme:

sudo -u postgres psql -c "ALTER USER gitlab ENCRYPTED PASSWORD 'ПАРОЛЬ' VALID UNTIL 'infinity';"
Password for user postgres:
ALTER ROLE

Daha sonra GitLab sunucusundaki /etc/gitlab/gitlab.rb yapılandırma dosyasında harici PostgreSQL'in tüm verilerini göstereceğiz.

Gitlab.rb dosyasının yedek bir kopyasını oluşturalım:

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

Şimdi bu satırları gitlab.rb dosyasının sonuna ekleyin:

# Отключить встроенный 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'] = '******'

/etc/gitlab/gitlab.rb dosyasını kaydedin ve GitLab'ı yeniden yapılandırın:

gitlab-ctl reconfigure && gitlab-ctl restart

Bu kadar :)

Büyük istek. Eksi koyduysanız nedenini yorumlara yazın.

Kaynak: habr.com

Yorum ekle