ترحيل قاعدة بيانات GitLab إلى PostgreSQL الخارجية

مرحبا بالجميع!

في هذه المقالة، سنقوم بترحيل قاعدة بيانات GitLab من PostgreSQL الداخلي، المثبت مع GitLab، إلى PostgreSQL الخارجي، المثبت بالفعل على خادم آخر.

ترحيل قاعدة بيانات GitLab إلى PostgreSQL الخارجية

ملاحظة
جميع الإجراءات مضمونة للعمل على CentOS 7.7.1908 وPostgreSQL 12 وGitLab 12.4.2-ee.0.

تحضير تمهيدي

دعونا نفعل ثلاثة أشياء مقدما:

1. على خادم PostgreSQL، أضف قاعدة إلى جدار الحماية تسمح بالاتصالات الواردة إلى منفذ PostgreSQL 5432/TCP.

في حالتي:

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

2. في نفس المكان، ولكن في ملف postgresql.conf، اسمح لواجهة الشبكة بقبول الاتصالات الواردة من الخارج. افتح ملف postgresql.conf، وابحث عن السطر الذي تم التعليق عليه "#listen_addresses = 'localhost'"وتحته أضف سطرًا كما هو موضح أدناه. حيث - 10.0.0.2، عنوان الواجهة الخاصة بك.

في حالتي:

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 سيتصل بقاعدة بيانات خارجية، فيجب السماح بذلك على خادم PostgreSQL في ملف pg_hba.conf. عنوان خادم GitLab الخاص بي هو 10.0.0.4.

لنفتح الملف pg_hba.conf ونضيف السطر هناك:

host    all             gitlab               10.0.0.4/24             md5

سوف يبدو مثل هذا:

# 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

وأخيرًا، نقوم بإعادة تشغيل خدمة postgresql:

systemctl restart postgresql-12.service

تصدير قاعدة بيانات GitLab

لنقم بإجراء نسخة احتياطية لقاعدة البيانات على خادم GitLab:

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

ظهرت النسخة الاحتياطية في /tmp:

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

لننسخ هذه النسخة إلى خادم PostgreSQL:

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

استيراد "internal-gitlab.sql" إلى PostgreSQL

استيراد قاعدة البيانات إلى PostgreSQL:

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

تأكد من أن قاعدة البيانات موجودة الآن في PostgreSQL:

sudo -u postgres psql -l

يجب أن يظهر السطر التالي:

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

تكوين جيتلاب

بعد استيراد قاعدة البيانات إلى PostgreSQL، تم إنشاء مستخدم gitlab. تحتاج إلى تغيير كلمة مرور هذا المستخدم.

تغيير كلمة المرور:

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

بعد ذلك، على خادم GitLab، في ملف التكوين /etc/gitlab/gitlab.rb، سنشير إلى جميع بيانات PostgreSQL الخارجية.

لنقم بعمل نسخة احتياطية من ملف gitlab.rb:

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

أضف الآن هذه السطور إلى نهاية ملف 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'] = '******'

احفظ الملف /etc/gitlab/gitlab.rb وأعد تكوين GitLab:

gitlab-ctl reconfigure && gitlab-ctl restart

هذا كل شئ :)

طلب كبير. اذا وضعت ناقص اكتب السبب في التعليقات.

المصدر: www.habr.com

إضافة تعليق