Migratie van GitLab-database naar externe PostgreSQL

Hallo iedereen!

In dit artikel migreren we de GitLab-database van interne PostgreSQL, die met GitLab is geïnstalleerd, naar externe PostgreSQL, die al op een andere server is geïnstalleerd.

Migratie van GitLab-database naar externe PostgreSQL

NOTE
Alle acties werken gegarandeerd op CentOS 7.7.1908, PostgreSQL 12 en GitLab 12.4.2-ee.0.

Voorbereidende voorbereiding

Laten we drie dingen van tevoren doen:

1. Voeg op de PostgreSQL-server een regel toe aan de firewall die inkomende verbindingen met PostgreSQL-poort 5432/TCP toestaat.

In mijn geval:

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

2. Sta op dezelfde plaats, maar in het bestand postgresql.conf, toe dat de netwerkinterface inkomende verbindingen van buitenaf accepteert. Open het bestand postgresql.conf en zoek de regel met commentaar "#listen_addresses = 'localhost'" en voeg daaronder een regel toe zoals hieronder. Waar - 10.0.0.2, het adres van uw interface.

In mijn geval:

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. Omdat de GitLab-server verbinding zal maken met een externe database, moet dit worden toegestaan ​​op de PostgreSQL-server in het bestand pg_hba.conf. Mijn GitLab-serveradres is 10.0.0.4.

Laten we het bestand pg_hba.conf openen en daar de regel toevoegen:

host    all             gitlab               10.0.0.4/24             md5

Het zal er als volgt uitzien:

# 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

En ten slotte herstarten we de postgresql-service:

systemctl restart postgresql-12.service

Een GitLab-database exporteren

Laten we een databaseback-up uitvoeren op de GitLab-server:

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

De back-up verscheen in /tmp:

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

Laten we deze kopie naar de PostgreSQL-server kopiëren:

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

Importeren van "internal-gitlab.sql" in PostgreSQL

Importeer de database in PostgreSQL:

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

Controleer of de database nu in PostgreSQL staat:

sudo -u postgres psql -l

De volgende regel zou moeten verschijnen:

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

GitLab configureren

Na het importeren van de database in PostgreSQL werd een gitlab-gebruiker aangemaakt. U moet het wachtwoord van deze gebruiker wijzigen.

Het wachtwoord wijzigen:

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

Vervolgens zullen we op de GitLab-server, in het configuratiebestand /etc/gitlab/gitlab.rb, alle gegevens van de externe PostgreSQL aangeven.

Laten we een reservekopie maken van het gitlab.rb-bestand:

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

Voeg nu deze regels toe aan het einde van het gitlab.rb-bestand:

# Отключить встроенный 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'] = '******'

Sla het bestand /etc/gitlab/gitlab.rb op en configureer GitLab opnieuw:

gitlab-ctl reconfigure && gitlab-ctl restart

Dat is alles :)

Groot verzoek. Als u een minteken plaatst, schrijf dan de reden in de opmerkingen.

Bron: www.habr.com

Voeg een reactie