Migratio GitLab database ad externa PostgreSQL

ВсСм ΠΏΡ€ΠΈΠ²Π΅Ρ‚!

In hoc articulo migrabimus datorum GitLab ab interno PostgreSQL, qui cum GitLab inauguratus est, ad externum PostgreSQL, quod iam in alio servo constitutum est.

Migratio GitLab database ad externa PostgreSQL

NOTA
Omnes actiones in CentOS 7.7.1908 praestantur, PostgreSQL 12 et GitLab 12.4.2-ee.0.

antecessum praeparatio

Tria faciamus ante:

1. De servo PostgreSQL, regulam adde ad firewall quod permittit hospites advenientes ad portum PostgreSQL 5432/TCP.

In mea causa;

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

2. In eodem loco, sed in fasciculo postgresql.conf, sino retis interfaciei hospites ab extra advenientes accipere. Aperi fasciculum postgresql.conf, commentationem inveni in linea "#listen_addresses = 'localhost'" et sub eo adde lineam sicut infra. Ubi - 10.0.0.2, oratio instrumenti tui.

In mea causa;

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. Cum servo GitLab cum externo datorum coniunget, hoc permitti debet in tabella PostgreSQL servo in pagina pg_hba.conf. Oratio mea GitLab servo 10.0.0.4.

Pg_hba.conf tabellam aperiamus et ibi lineam adde:

host    all             gitlab               10.0.0.4/24             md5

Hoc sic erit:

# 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

Et tandem sileo officium postgresql sumus;

systemctl restart postgresql-12.service

GitLab database educendi

Praestare database tergum in GitLab servo:

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

Tergum apparuit in /tmp:

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

Exemplar hoc exemplum scriptori ad PostgreSQL servo:

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

importans "internum-gitlab.sql" in PostgreSQL

In PostgreSQL datorum importare:

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

Reprehendo quod nunc database in PostgreSQL est:

sudo -u postgres psql -l

Sequentia lineae compareant;

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

Vestibulum GitLab

Invectio datorum in PostgreSQL, usor gitlab creatus est. Opus est tesseram huius usoris mutare.

Tesseras mutantur:

sudo -u postgres psql -c "ALTER USER gitlab ENCRYPTED PASSWORD 'ΠŸΠΠ ΠžΠ›Π¬' VALID UNTIL 'infinity';"
Password for user postgres:
ALTER ROLE

Deinde, in servo GitLab, in configuration file /etc/gitlab/gitlab.rb, omnia indicia externi PostgreSQL indicabimus.

Faciamus tergum exemplum fasciculi gitlab.rb:

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

Nunc has lineas ad finem fasciculi gitlab.rb adde:

# ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ встроСнный 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'] = '******'

Serva tabella /etc/gitlab/gitlab.rb et reconfigure GitLab:

gitlab-ctl reconfigure && gitlab-ctl restart

Id omne :)

Magna postulatio. Si minus, scribe rationem in comment.

Source: www.habr.com