خوش آمدید!
در این مقاله پایگاه داده GitLab را از PostgreSQL داخلی که با GitLab نصب شده است به PostgreSQL خارجی که قبلاً روی سرور دیگری نصب شده است منتقل می کنیم.
نکته
همه اقدامات تضمین شده برای کار بر روی CentOS 7.7.1908، PostgreSQL 12 و GitLab 12.4.2-ee.0 هستند.
آماده سازی مقدماتی
بیایید سه کار را از قبل انجام دهیم:
1. در سرور PostgreSQL، قانونی را به فایروال اضافه کنید که به پورت 5432/TCP PostgreSQL اجازه اتصالات ورودی را می دهد.
در مورد من:
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 |
پیکربندی GitLab
پس از وارد کردن پایگاه داده به 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