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.
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