Hej alla!
I den här artikeln kommer vi att migrera GitLab-databasen från intern PostgreSQL, som är installerad med GitLab, till extern PostgreSQL, som redan är installerad på en annan server.
NOTERA
Alla åtgärder är garanterade att fungera på CentOS 7.7.1908, PostgreSQL 12 och GitLab 12.4.2-ee.0.
Preliminär förberedelse
Låt oss göra tre saker i förväg:
1. På PostgreSQL-servern lägger du till en regel i brandväggen som tillåter inkommande anslutningar till PostgreSQL-port 5432/TCP.
I mitt fall:
firewall-cmd --add-service=postgresql --zone=internal --permanent
success
firewall-cmd --reload
success
2. På samma plats, men i postgresql.conf-filen, låt nätverksgränssnittet acceptera inkommande anslutningar utifrån. Öppna postgresql.conf-filen, hitta den kommenterade raden "#listen_addresses = 'localhost'" och under den lägg till en rad som nedan. Där - 10.0.0.2, adressen till ditt gränssnitt.
I mitt fall:
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. Eftersom GitLab-servern kommer att ansluta till en extern databas, måste detta tillåtas på PostgreSQL-servern i filen pg_hba.conf. Min GitLab-serveradress är 10.0.0.4.
Låt oss öppna filen pg_hba.conf och lägga till raden där:
host all gitlab 10.0.0.4/24 md5
Det kommer att se ut så här:
# 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
Och slutligen startar vi om postgresql-tjänsten:
systemctl restart postgresql-12.service
Exportera en GitLab-databas
Låt oss göra en databassäkerhetskopiering på GitLab-servern:
sudo -u gitlab-psql /opt/gitlab/embedded/bin/pg_dumpall -U gitlab-psql --host=/var/opt/gitlab/postgresql > /tmp/internal-gitlab.sql
Säkerhetskopieringen dök upp i /tmp:
ls -lh
total 836K
-rw-r--r--. 1 root root 836K Nov 18 12:59 internal-gitlab.sql
Låt oss kopiera denna kopia till PostgreSQL-servern:
scp /tmp/internal-gitlab.sql 10.0.0.2:/tmp/
internal-gitlab.sql 100% 835KB 50.0MB/s 00:00
Importera "internal-gitlab.sql" till PostgreSQL
Importera databasen till PostgreSQL:
sudo -u postgres psql -f /tmp/internal-gitlab.sql
Kontrollera att databasen nu finns i PostgreSQL:
sudo -u postgres psql -l
Följande rad ska visas:
gitlabhq_production | gitlab | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
Konfigurera GitLab
Efter att ha importerat databasen till PostgreSQL skapades en gitlab-användare. Du måste ändra denna användares lösenord.
Ändra lösenordet:
sudo -u postgres psql -c "ALTER USER gitlab ENCRYPTED PASSWORD 'ПАРОЛЬ' VALID UNTIL 'infinity';"
Password for user postgres:
ALTER ROLE
Sedan, på GitLab-servern, i konfigurationsfilen /etc/gitlab/gitlab.rb, kommer vi att ange all data för den externa PostgreSQL.
Låt oss göra en säkerhetskopia av filen gitlab.rb:
cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.orig
Lägg nu till dessa rader i slutet av gitlab.rb-filen:
# Отключить встроенный 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'] = '******'
Spara filen /etc/gitlab/gitlab.rb och konfigurera om GitLab:
gitlab-ctl reconfigure && gitlab-ctl restart
Det är allt :)
Stor begäran. Om du sätter ett minus, skriv anledningen i kommentarerna.
Källa: will.com