Hej alla!
I den här artikeln kommer vi att migrera GitLab-databasen från den interna PostgreSQL, som installeras med GitLab, till en extern PostgreSQL, som redan är installerad på en annan server.

NOTERA
Alla åtgärder garanteras 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å server Lägg till en regel i PostgreSQL-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
success2. På samma plats, men i filen postgresql.conf, tillåt nätverksgränssnittet att acceptera inkommande anslutningar utifrån. Öppna filen postgresql.conf och leta reda på den kommenterade raden "#listen_addresses = 'localhost'" och under den lägg till en rad som nedan. Där 10.0.0.2 är 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, då server PostgreSQL måste vara aktiverat 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 följande rad:
host all gitlab 10.0.0.4/24 md5Det 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 md5Och slutligen startar vi om postgresql-tjänsten:
systemctl restart postgresql-12.serviceExportera GitLab-databas
Låt oss göra en säkerhetskopia av databasen på GitLab-servern:
sudo -u gitlab-psql /opt/gitlab/embedded/bin/pg_dumpall -U gitlab-psql --host=/var/opt/gitlab/postgresql > /tmp/internal-gitlab.sqlSäkerhetskopian dök upp i /tmp:
ls -lh
total 836K
-rw-r--r--. 1 root root 836K Nov 18 12:59 internal-gitlab.sqlLåt oss kopiera den här kopian till PostgreSQL-servern:
scp /tmp/internal-gitlab.sql 10.0.0.2:/tmp/
internal-gitlab.sql 100% 835KB 50.0MB/s 00:00Importera "internal-gitlab.sql" till PostgreSQL
Importera databasen till PostgreSQL:
sudo -u postgres psql -f /tmp/internal-gitlab.sqlKontrollera att databasen nu är i PostgreSQL:
sudo -u postgres psql -lEn rad som denna borde visas:
gitlabhq_production | gitlab | UTF8 | en_US.UTF-8 | en_US.UTF-8 |Konfigurera GitLab
Efter att databasen importerats till PostgreSQL skapades gitlab-användaren. Du måste ändra lösenordet för den här användaren.
Ändra lösenordet:
sudo -u postgres psql -c "ALTER USER gitlab ENCRYPTED PASSWORD 'ПАРОЛЬ' VALID UNTIL 'infinity';"
Password for user postgres:
ALTER ROLESedan på GitLab-servern, i konfigurationsfilen /etc/gitlab/gitlab.rb, specificerar vi all extern PostgreSQL-data.
Låt oss göra en säkerhetskopia av gitlab.rb-filen:
cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.origLä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'] = '******'Låt oss spara filen /etc/gitlab/gitlab.rb och konfigurera om GitLab:
gitlab-ctl reconfigure && gitlab-ctl restartDet var allt 🙂
En stor begäran. Om du gav ett minus, skriv gärna anledningen i kommentarerna.
Källa: will.com
