Helló!
Database history tables upgraded: No
Találtam egy double.sql fájlt, ami talán ezt lenne hivatott megvalósítani, de:
postgres@tarthost:/home/rattila$ psql zabbix <zabbix-install/zabbix-DB-Postgresql-double.sql
ERROR: type of inherited column "value_min" must be changed in child tables too
ERROR: type of inherited column "value" must be changed in child tables too
postgres@tarthost:/home/rattila$
Messze nem értek az adatbázishoz, így kellene a segítség, hogy hogyan lehetne megszüntetni ezt a hibát.
A tábla definíciója:
Table "public.history"
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
--------+---------------+-----------+----------+---------+---------+--------------+-------------
itemid | bigint | | not null | | plain | |
clock | integer | | not null | 0 | plain | |
value | numeric(16,4) | | not null | 0.0000 | main | |
ns | integer | | not null | 0 | plain | |
Indexes:
"history_1" btree (itemid, clock)
Triggers:
partition_trg BEFORE INSERT ON history FOR EACH ROW EXECUTE FUNCTION trg_partition('day')
Child tables: partitions.history_p2017_11_04,
partitions.history_p2017_11_05,
partitions.history_p2017_11_06,
partitions.history_p2017_11_07,
partitions.history_p2017_11_08,
....sok-sok partíció...
Egyébként hogyan lehetne megszabadulni ezektől a régi adatoktól?Bőven elég lenne az idei, esetleg a 2022-es
(léván idén elég keveset futott a Zabbix, mert csak nem rég sikerült visszakalapálnom dec. 25.-ei lebetegedéséből)
Köszönöm!
- 244 megtekintés
Hozzászólások
Meglátásom szerint a régi adatokat a legegyszerűbben a futó Zabbix webfelületére belépve fogod tudni kitakarítani.
Pgsql-ből is lehetne kézzel, de csak mazochistáknak ajánlom.
Megosztanád ennek a zabbix-install/zabbix-DB-Postgresql-double.sql fájlnak a tartalmát?
- A hozzászóláshoz be kell jelentkezni
A Zabbix felületen hogyan tudom kitakarítani?
Az sql fájl tartalma:
rattila@tarthost:~/zabbix-install$ cat zabbix-DB-Postgresql-double.sql
ALTER TABLE ONLY trends
ALTER COLUMN value_min TYPE DOUBLE PRECISION,
ALTER COLUMN value_min SET DEFAULT '0.0000',
ALTER COLUMN value_avg TYPE DOUBLE PRECISION,
ALTER COLUMN value_avg SET DEFAULT '0.0000',
ALTER COLUMN value_max TYPE DOUBLE PRECISION,
ALTER COLUMN value_max SET DEFAULT '0.0000';
ALTER TABLE ONLY history
ALTER COLUMN value TYPE DOUBLE PRECISION,
ALTER COLUMN value SET DEFAULT '0.0000';
rattila@tarthost:~/zabbix-install$
Köszi!
Üdv:
Ruzsi
- A hozzászóláshoz be kell jelentkezni
A kezdő bejegyzésemben látható, hogy ERROR-ra futott ...
Üdv:
Ruzsi
- A hozzászóláshoz be kell jelentkezni
"A Zabbix felületen hogyan tudom kitakarítani?"
- A hozzászóláshoz be kell jelentkezni
Megnézem, de ott 90 nap és 1 évek vannak megadva.
Ehhez képest a child táblák 2017-től indulnak ...
Üdv:
Ruzsi
- A hozzászóláshoz be kell jelentkezni
És van is benne valami?
Amúgy így ránézésre, meg amit a TimeScale-ről tudok (öt perc google), az alapján azt mondanám, hogy azt a TimeScale töcskölte oda, ennek megfelelően kell implementálni az sql scripteket.
- A hozzászóláshoz be kell jelentkezni
Nem tudom, hogy van-e benne valami, de az üres táblától még jobban szabadulnék.
Nem hiszem, hogy 2017 novemberében már TimeScaleDB-m lett volna, sőt biztosan nem. Valami más módon volt megoldva.
A TimeScaleDB most sincs fent, mert amikor feltettem, a Zabbix-ban nem látszódott, így most (még) nem kínlódtam vele. Örültem, hogy elindult a PG12-es verziójával és hogy le tudtam menteni a konfiget.
Üdv:
Ruzsi
- A hozzászóláshoz be kell jelentkezni
Nade ha egyszer létrehozta a táblákat - valamiért, mert akkor még volt 2017-es adat -, akkor az, szerintem, csak úgy nem fog köddé válni.
Ettől függetlenül nyilván kicsit át kell írni az alter table-t, hogy a partíciókat/child táblákat is módosítsa.
- A hozzászóláshoz be kell jelentkezni
Ez még pg10 volt, úgyhogy inheritance/child table van - ha nem kellenek, akkor szerintem drop azokra, amik nem kellenek.
- A hozzászóláshoz be kell jelentkezni
Oké, oké!
De nekem, kézzel fogható parancsok kellenének, mert csak felhasználó szintű DB kezelési ismereteim vannak, vagy még az sem.
Üdv:
Ruzsi
- A hozzászóláshoz be kell jelentkezni
Vegyetek egy DBA-t mondjuk 3-4 órányi időre, szerintem jobban jártok. Komolyan. Ha nem ér annyit (sacc/kábé 100E Ft), akkor meg fogd meg a pg dokumentációt, és kezdd el tanulmányozni, a db-ről készült dumpot visszatolni egy tesztkörnyezetbe, és ott próbálgatni rajta dolgokat.
Szerintem ha 4-5 napot ha rászánsz (és más munkát/feladatot nem kapsz), akkor a szükséges alapokat össze lehet szedni, utána meg lehet a "játszadozós", tesztre visszatöltött DB-vel szórakozni.
Régi vicc...: Autós bemegy a szerelőhöz, hogy rángat meg csúnya hangja van az autójának. Szerelő felnyitja a motorházat, beindítja, hallgatózik egy picit, majd fog egy csavarhúzót és állít néhány dolgot, majd kér érte 30100 Ft-ot. Az autós visszakérdez, hogy ez a 3100Ft hogy jött ki? Mire a szerelő: 100Ft az, hogy állítottam rajta, és 30000Ft az, hogy tudom, hol és mit kell csinálni.
- A hozzászóláshoz be kell jelentkezni
Abszolút egyetértek zeller kollégával: egy DBA segítségével gyorsabban érnél el eredményt. Persze ha nem sürgős a megoldás és/vagy tanulni akarsz, akkor hajrá. Nem lesz könnyű az út.
Mindezek mellett valami hasonlót kellene lefuttatnod (forrás: https://gitlab.com/alperunal92/zabbix-database-cleanup/-/blob/master/ol…):
Természetesen a 30 napot átírva, ha szükséges. A child táblákat / partíciókat ez nem törli.
delete FROM alerts where age(to_timestamp(alerts.clock)) > interval '30 days';
delete FROM acknowledges where age(to_timestamp(acknowledges.clock)) > interval '30 days';
delete FROM events where age(to_timestamp(events.clock)) > interval '30 days';
delete FROM history where age(to_timestamp(history.clock)) > interval '30 days';
delete FROM history_uint where age(to_timestamp(history_uint.clock)) > interval '30 days' ;
delete FROM history_str where age(to_timestamp(history_str.clock)) > interval '30 days' ;
delete FROM history_text where age(to_timestamp(history_text.clock)) > interval '30 days' ;
delete FROM history_log where age(to_timestamp(history_log.clock)) > interval '30 days' ;
delete FROM trends where age(to_timestamp(trends.clock)) > interval '30 days';
delete FROM trends_uint where age(to_timestamp(trends_uint.clock)) > interval '30 days' ;
Mindezek mellett a régi child táblákat akár dropolhatod is (példa: drop table partitions.history_p2017_11_05). És a korábban linkelt módon a Zabbix history/trends is legyen jól beállítva.
A legfontosabb, hogy legyen mentésed a mostani állapotról!
- A hozzászóláshoz be kell jelentkezni