مرحبا بالجميع!
في هذه المقالة، سنقوم بترحيل قاعدة بيانات 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