Zabbix 5.0 DB migrálás PGSQL 10 -> 12

Sziasztok!

root@tarthost:~# pg_lsclusters 
Ver Cluster Port Status                Owner    Data directory               Log file
9.3 main    5434 down,binaries_missing postgres /var/lib/postgresql/9.3/main /var/log/postgresql/postgresql-9.3-main.log
9.5 main    5432 down,binaries_missing postgres /var/lib/postgresql/9.5/main /var/log/postgresql/postgresql-9.5-main.log
10  main    5433 online                postgres /var/lib/postgresql/10/main  /var/log/postgresql/postgresql-10-main.log
12  main    5435 down                  postgres /var/lib/postgresql/12/main  /var/log/postgresql/postgresql-12-main.log
 

Jelenleg a 10-es verzióval fut, de a TimeScaleDB-hez nem találtam deb csomagokat és mindent a 12-höz akart lehozni, amit
meg is csináltam.

Van valami egyszerű módszer, amivel  a 10-esből a 12-esbe tudnám átvinni a teljes Zabbix DB-t?

A DB jelenelg 69GB, a PG partíció 591GB.

Köszönettel:
Ruzsi

Hozzászólások

En kontenerben futtatom a zabbixot, a 10-esbol csinaltam siman egy dumpot, amit a 12-be behuztam. Mukodik. Bar nekem messze nem volt benne ennyi adat. (meg fontos sem volt igazabol az elozmeny, csak a hostokat voltam lusta ujra felvenni)

Szerkesztve: 2023. 03. 18., szo – 10:49

Nem Zabbix, de sok, elég rendesen használt DB (szumma 1.2TiB) 10-esről 14-re migrálását a pg_upgradecluster simán (inplace) megcsinálta - néhány perces leállással, ez (fejből írom, nézz utána/csinálj dump-ot előtte):

  • leállítod a zabbixot
  • leállítod a 10-es pg-t
  • pg_lscluster 10-es és 12-es-t is downnak mutatja? Ha igen, mehetünk tovább.
  • pg_dropcluster -stop 12 main
  • pg_lscluser már nem mutatja a 12-es-t
  • A 12-es PG-ből megkeresed a pg_upgradecluster -t, és pg_upgradecluster -m upgrade (vagy link?) 10 main
  • pg_lscluster - újra van 12 main :)
  • elindítod a 12-es pg-t, megnézed, minden megvan-e benne.
  • pg_dropcluster 10 main
  • leállítod a 12-est
  • a 12-es konfigját átírod, hogy megfelelő TCP_porton figyeljen
  • elindítod a 12-est
  • elindítod a Zabbix-ot

Ha ez után jól működik a Zabbix, minden rendben megy, "csak" 12-es PG-n, akkor kezdjél bele a TimescaleDB-s mókolásba, addig ne. (Egyszerre csak egy dolgot...)

 

Köszönöm szépen a részletes leírást!

Végül pg_dump + psql páros lett és melléktermékként most van egy zabbix DB mentésem, bár én csak konfiget akarok majd menteni.
A 12-re sikerült így átvinni a Zabbixot. Processz szinten úgy néz ki, működik.

A 10-es még 1 hétig megtartom, aztán megszüntetem.
A TimeScaleDB még az átvitel előtt fel lett téve az üres 12-esre. Azt nem tudom, hogy használatban van-e? Hogyan tudnám ellenőrizni?

Most jön majd a Zabbix konfig mentése, amint előkerestem a szkriptet hozzá...

Üdv:
Ruzsi

Ilyen relative kis DB esetén a dump/restore is teljesen jó - pláne ha a szükséges állásidő belefér. A 10-est megtartani nem tudom, érdemes-e? Ha visszaállás kell bármilyen okból, a mindenképp adatvesztést jelent, és ha közben volt konfigurációban módosítás, új host, új/módosult metrika, stb. akkor az is megy a levesbe - szóval én bármilyen gond esetén az előrefelé menekülést választanám, nem a rollback irányt.

Előre mentem, 12-n vagyok, de a zabbix-backup szkript még mindig nem megy:

postgres@tarthost:/home/rattila/zabbix-install/zabbix-backup-0.9.10$ ./zabbix-dump -t psql -o zabbix-config-dump.sql
Reading database options from /etc/zabbix/zabbix_server.conf...
./zabbix-dump: sor: 251: /usr/bin/grep: Nincs ilyen fájl vagy könyvtár
Configuration:
 - type:     psql
 - socket:   /var/run/postgresql/.s.PGSQL.5432
 - schema:   public
 - database: zabbix
 - user:     zabbix
 - output:   zabbix-config-dump.sql
Fetching list of existing tables...
ERROR while trying to access database:
psql: error: could not connect to server: Nem könyvtár
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432/.s.PGSQL.5432"?
postgres@tarthost:/home/rattila/zabbix-install/zabbix-backup-0.9.10$ cd /var/run
postgres@tarthost:/var/run$ cd postgresql/
postgres@tarthost:/var/run/postgresql$ ls
10-main.pg_stat_tmp  12-main.pg_stat_tmp  12-main.pid
postgres@tarthost:/var/run/postgresql$ ls -la
összesen 8
drwxrwsr-x  4 postgres postgres  140 márc  18 19:12 .
drwxr-xr-x 50 root     root     1560 márc  18 19:05 ..
drwxr-s---  2 postgres postgres   40 márc  18 19:12 10-main.pg_stat_tmp
drwxr-s---  2 postgres postgres  160 márc  18 19:16 12-main.pg_stat_tmp
-rw-r--r--  1 postgres postgres    8 márc  18 15:26 12-main.pid
srwxrwxrwx  1 postgres postgres    0 márc  18 18:20 .s.PGSQL.5432
-rw-------  1 postgres postgres   72 márc  18 18:20 .s.PGSQL.5432.lock
postgres@tarthost:/var/run/postgresql$

Miért alkönyvtárként keresi a Unix socket-et?? Olyanom nincs!
Jelenleg csak a 12-es fut, hogy ezzel is megkönnyítsem a szkript dolgát, de nem akarja!

Üdv:
Ruzsi

Ahogy megtörtént a 10->12, akkor kidobtam a 93 és 9.5-öket.

Ez maradt:
ostgres@tarthost:/var/run/postgresql$ pg_lsclusters 
Ver Cluster Port Status Owner    Data directory              Log file
10  main    5433 down   postgres /var/lib/postgresql/10/main /var/log/postgresql/postgresql-10-main.log
12  main    5432 online postgres /var/lib/postgresql/12/main /var/log/postgresql/postgresql-12-main.log
 

Direkt tettem alapra a 12-est, mert hátha így megtalálja a szkript.
Mondjuk a portra még nem szólt semmit, ellenben a Unix domain sockettel baja van, mert dupla elérési úttal
akar odatalálni, ami persze nincs!
Vajon honnan veheti ezt?

Üdv:
Ruzsi

Az aktuális verzióban ez van ott:

DBPASS="$(/usr/bin/grep '^DBPassword=' "${ZBX_CONFIG}" | /usr/bin/cut -d= -f2-)"
 

A default:
ZBX_CONFIG="/etc/zabbix/zabbix_server.conf"

Ha nem ott van, nem úgy hívják, akkor -z /itt/van/a/zabbix.konfig.conf

De lehet, hogy elég egy -Z, és megmondani a scriptnek ( -d -u  -p paraméterek) a DB eléréshez szükséges adatokat. Mondjuk én inkább a -z és megadom, hol keresse a Zabbix beállításait irányba mozdulnék, mert a -Z -d -u -p esetében a /proc/$(pidof zabbix_dump)/cmdline - ami alapesetben midnenkinek olvasható - tartalmazni fogja a DB usert és jelszót,a mi nem biztos, hogy kívánatos... (Parancssorban paraméterként nem adunk meg hozzáférési adatot. Semmilyet.)
 

Ja, csak hogy "szép" legyen, én a 9.3 meg a 9.5-ös data könyvtárára "ránéznék", és ha tényleg üres, akkor tolnék mindkettőre egy pg_dropcluster -t, hogy az lscluster-t ne szemetelje tele, illetve utána a 9.3 meg a 9.5-ből még fent lévő csomagokat is lehetne purgálni  - a 9.3 meg a 9.5 data könyvtárával együtt. (Ha van benne érdemi adat esetleg, akkor azt 9.3-as illetve 9.5-ös PG alá bemásolva (mintha egy basebackup-ot adnál oda a megfelelő verziónak) szintén fel lehet húzni valami frissebbre/ki lehet dump-pal menteni, stb. (9.3-ról, de van, amikor 9.5-ről is csak -m dump módon megy a pg_upgrade).

Én ezt (is) próbáltam:

https://github.com/npotorino/zabbix-backup

-t psql volt. Anélkül MySQL-ezni akarna.

A -s-sel se sikerült rávennem, hogy odataláljon a szerintem default sockethez. Ezt azért újra ki fogom próbálni!
De majd ha lesz időd és ránézel, akkor okosabbak leszünk.

Köszönöm!

Üdv:
Ruzsi

Szia, pont hasonló projektbe vagyok. Zabbix 5.0 LTS upgrade Zabbix 6.0LTS-re. Ehhez először debian upgrade buster-ról bullseye-re, aztán postgresql 11-ről 13-ra állok át, timescale 2.3.1-ről 2.9.0-ra.

Sikerült a demo rendszeren végigmenni a folyamaton és minden sikeresnek tűnik, jővő héten élesben megy, persze először egy vmware snapshot :) a biztonság kedvéért.

Szia!

A Zabbix DB csere úgy néz ki, megy nekem is. A Zabbix marad 5.0, mert sajnos az újabb verziók húzzák magukkal
a proxy-kat is, amiket feltenni az adott gépre macerás tud lenni. (régi Linuxok, pl.)

A TSDB-ről annyit tudok, hogy van, hogy honnan tudom, hogy megy-e, arról fogalmam sincs.

Üdv:
Ruzsi