انتقال پایگاه داده GitLab به PostgreSQL خارجی

خوش آمدید!

در این مقاله پایگاه داده GitLab را از PostgreSQL داخلی که با 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

اضافه کردن نظر