A Zabbix 6.0 óta az elsődleges kulcsok minden táblához használatosak új telepítések.
Ez a rész utasításokat tartalmaz a kézi frissítéshez előzménytáblázatokat a meglévő telepítésekben az elsődleges kulcsokhoz.
Az utasítások a következőkhöz érhetők el:
The instructions provided on this page are designed for advanced users. Note that these instructions might need to be adjusted for your specific configuration.
Az exportálást és importálást a tmux/screen-ben kell végrehajtani, hogy a munkamenet ne vesszen el.
Lásd még: Fontos megjegyzések
Ez a módszer használható egy futó Zabbix szerverrel, de javasolt a szerver leállítása a frissítés idejére. A MySQL Shellnek (mysqlsh) [telepítve] (https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-install-linux-quick.html) és csatlakozni kell a DB-hez.
Jelentkezzen be a MySQL konzolba rootként (ajánlott) vagy bármely FILE jogosultsággal rendelkező felhasználóként.
Indítsa el a MySQL-t a local_infile változóval.
A régi táblák átnevezése és új táblák létrehozása a history_pk_prepare.sql
futtatásával.
mysql -uzabbix -p<jelszó> zabbix < /usr/share/zabbix-sql-scripts/mysql/history_pk_prepare.sql
Csatlakozás mysqlsh-n keresztül. Ha socket kapcsolatot használ, szükség lehet az elérési út megadására.
Futtatás (a CSVPATH szükség szerint módosítható):
CSVPATH="/var/lib/mysql-files";
util.exportTable("history_old", CSVPATH + "/history.csv", { dialect: "csv" });
util.importTable(CSVPATH + "/history.csv", {"dialektus": "csv", "tábla": "előzmények" });
util.exportTable("history_uint_old", CSVPATH + "/history_uint.csv", { dialect: "csv" });
util.importTable(CSVPATH + "/history_uint.csv", {"dialektus": "csv", "tábla": "history_uint" });
util.exportTable("history_str_old", CSVPATH + "/history_str.csv", { dialect: "csv" });
util.importTable(CSVPATH + "/history_str.csv", {"dialektus": "csv", "tábla": "history_str" });
util.exportTable("history_log_old", CSVPATH + "/history_log.csv", { dialect: "csv" });
util.importTable(CSVPATH + "/history_log.csv", {"dialektus": "csv", "tábla": "history_log" });
util.exportTable("history_text_old", CSVPATH + "/history_text.csv", { dialect: "csv" });
util.importTable(CSVPATH + "/történeti_szöveg.csv", {"dialektus": "csv", "tábla": "történet_szöveg" });
Ez a frissítési módszer több időt vesz igénybe, és csak akkor szabad használni, ha a mysqlsh-val történő frissítés nem lehetséges.
Jelentkezzen be a MySQL konzolba rootként (ajánlott) vagy bármely FILE jogosultsággal rendelkező felhasználóként.
Indítsa el a MySQL-t a local_infile változóval.
A régi táblák átnevezése és új táblák létrehozása a history_pk_prepare.sql
futtatásával:
A max_execution_time beállítást le kell tiltani az adatok migrálása előtt, hogy elkerülje az időkorlátot az áttelepítés során.
SET @@max_execution_time=0;
INSERT IGNORE INTO történelem SELECT * FROM történelem_régi;
INSERT IGNORE INTO történelem_uint SELECT * FROM history_uint_old;
INSERT IGNORE INTO history_str SELECT * FROM history_str_old;
INSERT IGNORE INTO történelem_napló SELECT * FROM történelem_napló_régi;
INSERT IGNORE INTO történelem_szöveg SELECT * FROM történelem_szöveg_régi;
Kövesse az [áttelepítés utáni utasításokat] (#af-migration) a régi táblázatok elvetéséhez.
Ellenőrizze, hogy mely útvonalak importálása/exportálása engedélyezett:
mysql> SELECT @@secure_file_priv;
+-----------------------+
| @@secure_file_priv |
+-----------------------+
| /var/lib/mysql-files/ |
+-----------------------+
Ha a secure_file_priv érték egy könyvtár elérési útja, akkor az exportálás/importálás történik fájlokat abban a könyvtárban. Ebben az esetben ennek megfelelően szerkessze a fájlok elérési útját a lekérdezésekben, vagy állítsa a secure_file_priv értéket üres karakterláncra a frissítés idejére.
Ha a secure_file_priv értéke üres, exportálja/importálja bárhonnan elvégezhető.
Ha a secure_file_priv értéke NULL, állítsa be az exportált táblaadatokat tartalmazó elérési útra (a fenti példában „/var/lib/mysql-files/”).
További információkért lásd MySQL dokumentáció.
Az adatok exportálása előtt a max_execution_time-ot le kell tiltani, hogy elkerüljük az exportálási időtúllépést.
SET @@max_execution_time=0;
SELECT * INTO OUTFILE '/var/lib/mysql-files/history.csv' MEZŐK VÉGEZÉSE ',' ESCAPED BY '"" SOROK VÉGEZÉSE '\n' FROM történelem_old;
ADATOK BETÖLTÉSE '/var/lib/mysql-files/history.csv' ELLENŐRZÉS A TÁBLÁZAT előzményei MEZŐK BEFEJEZÉSE: ',' ESCAPED BY '"' SOROK VÉGEZÉSE '\n';
SELECT * INTO OUTFILE '/var/lib/mysql-files/history_uint.csv' MEZŐK VÉGEZÉSE ',' ESCAPED BY '"" SOROK VÉGEZÉSE '\n' FROM history_uint_old;
ADATOK BETÖLTÉSE INFILE '/var/lib/mysql-files/history_uint.csv' FIGYELMEZTETÉS A TÁBLÁZATBA history_uint MEZŐK VÉGE ',' ESCAPED BY '"" SOROK VÉGE '\n';
SELECT * INTO OUTFILE '/var/lib/mysql-files/history_str.csv' MEZŐK VÉGEZÉSE ',' ESCAPED BY '"" SOROK VÉGEZÉSE '\n' FROM history_str_old;
ADATOK BETÖLTÉSE '/var/lib/mysql-files/history_str.csv' IRÁNYULJ A TÁBLÁZATBA history_str MEZŐK VÉGE ',' ESCAPED BY '"" SOROK VÉGEZÉSE '\n';
SELECT * INTO OUTFILE '/var/lib/mysql-files/history_log.csv' MEZŐK VÉGEZÉSE ',' ESCAPED BY '"" SOROK VÉGEZÉSE '\n' FROM history_log_old;
ADATOK BETÖLTÉSE '/var/lib/mysql-files/history_log.csv' IRÁNYULJ A TÁBLÁZATBA history_log MEZŐK VÉGE ',' ESCAPED BY '"" SOROK VÉGEZÉSE '\n';
SELECT * INTO OUTFILE '/var/lib/mysql-files/history_text.csv' MEZŐK VÉGEZÉSE ',' ESCAPED BY '"" SOROK VÉGEZÉSE '\n' FROM history_text_old;
ADATOK BETÖLTÉSE '/var/lib/mysql-files/history_text.csv' IRÁNYULJ A TÁBLÁZATBA history_text MEZŐK VÉGE ',' ESCAPED BY '"" SOROK VÉGEZÉSE '\n';
Kövesse az [áttelepítés utáni utasításokat] (#af-migration) a régi táblázatok elvetéséhez.
Az exportálást és importálást a tmux/screen-ben kell végrehajtani, hogy a munkamenet ne vesszen el. A TimescaleDB telepítése esetén hagyja ki ezt a részt, és folytassa a PostgreSQL + TimescaleDB (#postgresql-timescaledb-v2xv1x) ponttal.
Lásd még: Fontos megjegyzések
history_pk_prepare.sql
használatával:INSERT INTO előzmények SELECT * FROM történelem_régi ON CONFLICT (elemid,óra,ns) NE TEGYEN NEMIT;
INSERT INTO history_uint SELECT * FROM history_uint_old ON CONFLICT (elemid,óra,ns) NE TEGYEN MIT;
INSERT INTO history_str SELECT * FROM history_str_old ON CONFLICT (elemid,óra,ns) NE TEGYEN SEMMIT;
INSERT INTO history_log SELECT * FROM history_log_old ON CONFLICT (itemid,clock,ns) NE TEGYEN MIT;
INSERT INTO történelem_szöveg SELECT * FROM történelem_szöveg_régi ON CONFLICT (elemid,óra,ns) NE TEGYEN MIT;
Tekintse meg az INSERT teljesítményének javítására vonatkozó tippeket: PostgreSQL: tömeges betöltése hatalmas mennyiségű adat, Checkpoint Distance és a WAL összege.
\copy history_old ide: '/tmp/history.csv' DELIMITER ',' CSV
TEMP TABLE LÉTREHOZÁSA temp_history (
itemid bigint NOT NULL,
óra egész szám DEFAULT '0' NOT NULL,
érték DOUBLE PRECISION DEFAULT '0,0000' NOT NULL,
ns integer ALAPÉRTELMEZETT '0' NOT NULL
);
\copy temp_history FROM '/tmp/history.csv' DELIMITER ',' CSV
INSERT INTO előzmények SELECT * FROM temp_history ON CONFLICT (elemid,óra,ns) NE TEGYEN MIT;
\copy history_uint_old ide: '/tmp/history_uint.csv' DELIMITER ',' CSV
TEMP TABLE LÉTREHOZÁSA temp_history_uint (
itemid bigint NOT NULL,
óra egész szám DEFAULT '0' NOT NULL,
érték numeric(20) DEFAULT '0' NOT NULL,
ns integer ALAPÉRTELMEZETT '0' NOT NULL
);
\copy temp_history_uint FROM '/tmp/history_uint.csv' DELIMITER ',' CSV
INSERT INTO history_uint SELECT * FROM temp_history_uint ON CONFLICT (itemid,clock,ns) NE TEGYEN MIT;
\copy history_str_old ide: '/tmp/history_str.csv' DELIMITER ',' CSV
TEMP TABLE LÉTREHOZÁSA temp_history_str (
itemid bigint NOT NULL,
óra egész szám DEFAULT '0' NOT NULL,
érték varchar(255) DEFAULT '' NOT NULL,
ns integer ALAPÉRTELMEZETT '0' NOT NULL
);
\copy temp_history_str FROM '/tmp/history_str.csv' DELIMITER ',' CSV
INSERT INTO history_str (elemid,óra,érték,ns) SELECT * FROM temp_history_str ON CONFLICT (elemid,óra,ns) NE TEGYEN SEMMIT;
\copy history_log_old ide: '/tmp/history_log.csv' DELIMITER ',' CSV
TEMP TABLE LÉTREHOZÁSA temp_history_log (
itemid bigint NOT NULL,
óra egész szám DEFAULT '0' NOT NULL,
időbélyegző egész szám DEFAULT '0' NOT NULL,
forrás varchar(64) DEFAULT '' NOT NULL,
súlyossági egész szám DEFAULT '0' NOT NULL,
érték szövege DEFAULT '' NOT NULL,
logeventid integer DEFAULT '0' NOT NULL,
ns integer ALAPÉRTELMEZETT '0' NOT NULL
);
\copy temp_history_log FROM FROM '/tmp/history_log.csv' DELIMITER ',' CSV
INSERT INTO history_log SELECT * FROM temp_history_log ON CONFLICT (itemid,clock,ns) NE TEGYEN MIT;
\copy history_text_old ide: '/tmp/history_text.csv' DELIMITER ',' CSV
TEMP TABLE LÉTREHOZÁSA temp_history_text (
itemid bigint NOT NULL,
óra egész szám DEFAULT '0' NOT NULL,
érték szövege DEFAULT '' NOT NULL,
ns integer ALAPÉRTELMEZETT '0' NOT NULL
);
\copy temp_history_text FROM '/tmp/history_text.csv' DELIMITER ',' CSV
INSERT INTO történelem_szöveg SELECT * FROM temp_history_text ON CONFLICT (elemid,óra,ns) NE TEGYEN MIT;
Export and import must be performed in tmux/screen to ensure that the session isn't dropped. Zabbix server should be down during the upgrade.
See also: Important notes
history_pk_prepare.sql
.If compression is enabled (on default installation), run scripts from database/postgresql/tsdb_history_pk_upgrade_with_compression
:
cat /usr/share/zabbix-sql-scripts/postgresql/tsdb_history_pk_upgrade_with_compression/history_pk.sql | sudo -u zabbix psql zabbix
cat /usr/share/zabbix-sql-scripts/postgresql/tsdb_history_pk_upgrade_with_compression/history_pk_uint.sql | sudo -u zabbix psql zabbix
cat /usr/share/zabbix-sql-scripts/postgresql/tsdb_history_pk_upgrade_with_compression/history_pk_log.sql | sudo -u zabbix psql zabbix
cat /usr/share/zabbix-sql-scripts/postgresql/tsdb_history_pk_upgrade_with_compression/history_pk_str.sql | sudo -u zabbix psql zabbix
cat /usr/share/zabbix-sql-scripts/postgresql/tsdb_history_pk_upgrade_with_compression/history_pk_text.sql | sudo -u zabbix psql zabbix
If compression is disabled, run scripts from database/postgresql/tsdb_history_pk_upgrade_no_compression
:
cat /usr/share/zabbix-sql-scripts/postgresql/tsdb_history_pk_upgrade_no_compression/history_pk.sql | sudo -u zabbix psql zabbix
cat /usr/share/zabbix-sql-scripts/postgresql/tsdb_history_pk_upgrade_no_compression/history_pk_uint.sql | sudo -u zabbix psql zabbix
cat /usr/share/zabbix-sql-scripts/postgresql/tsdb_history_pk_upgrade_no_compression/history_pk_log.sql | sudo -u zabbix psql zabbix
cat /usr/share/zabbix-sql-scripts/postgresql/tsdb_history_pk_upgrade_no_compression/history_pk_str.sql | sudo -u zabbix psql zabbix
cat /usr/share/zabbix-sql-scripts/postgresql/tsdb_history_pk_upgrade_no_compression/history_pk_text.sql | sudo -u zabbix psql zabbix
See also: Tips for improving INSERT performance.
Az exportálást és importálást a tmux/screen-ben kell végrehajtani, hogy a munkamenet ne vesszen el. A Zabbix szervernek le kell állnia a frissítés alatt.
Lásd még: Fontos megjegyzések
A teljesítményre vonatkozó tippekért tekintse meg az Oracle Data Pump [dokumentációját] (https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-data-pump-performance-tips.html).
history_pk_prepare.sql
használatával.cd /usr/share/zabbix/zabbix-sql-scripts/database/oracle
sqlplus zabbix/password@oracle_host/service
sqlplus> @history_pk_prepare.sql
Data Pump must have read and write permissions to these directories.
Example:
expdp zabbix/password@oracle_host/service \
DIRECTORY=history \
TABLES=history_old,history_uint_old,history_str_old,history_log_old,history_text_old \
PARALLEL=N
impdp zabbix/password@oracle_host/service \
DIRECTORY=history \
TABLES=history_uint_old \
REMAP_TABLE=history_old:history,history_uint_old:history_uint,history_str_old:history_str,history_log_old:history_log,history_text_old:history_text \
data_options=SKIP_CONSTRAINT_ERRORS table_exists_action=APPEND PARALLEL=N CONTENT=data_only
Example:
mkdir -pv /export/history /export/history_uint /export/history_str /export/history_log /export/history_text
chown -R oracle:oracle /export
create directory history as '/export/history';
grant read,write on directory history to zabbix;
create directory history_uint as '/export/history_uint';
grant read,write on directory history_uint to zabbix;
create directory history_str as '/export/history_str';
grant read,write on directory history_str to zabbix;
create directory history_log as '/export/history_log';
grant read,write on directory history_log to zabbix;
create directory history_text as '/export/history_text';
grant read,write on directory history_text to zabbix;
expdp zabbix/password@oracle_host:1521/xe DIRECTORY=history TABLES=history_old PARALLEL=N
impdp zabbix/password@oracle_host:1521/xe DIRECTORY=history TABLES=history_old REMAP_TABLE=history_old:history data_options=SKIP_CONSTRAINT_ERRORS table_exists_action=APPEND PARALLEL=N CONTENT=data_only
expdp zabbix/password@oracle_host:1521/xe DIRECTORY=history_uint TABLES=history_uint_old PARALLEL=N
impdp zabbix/password@oracle_host:1521/xe DIRECTORY=history_uint TABLES=history_uint_old REMAP_TABLE=history_uint_old:history_uint data_options=SKIP_CONSTRAINT_ERRORS table_exists_action=APPEND PARALLEL=N CONTENT=data_only
expdp zabbix/password@oracle_host:1521/xe DIRECTORY=history_str TABLES=history_str_old PARALLEL=N
impdp zabbix/password@oracle_host:1521/xe DIRECTORY=history_str TABLES=history_str_old REMAP_TABLE=history_str_old:history_str data_options=SKIP_CONSTRAINT_ERRORS table_exists_action=APPEND PARALLEL=N CONTENT=data_only
expdp zabbix/password@oracle_host:1521/xe DIRECTORY=history_log TABLES=history_log_old PARALLEL=N
impdp zabbix/password@oracle_host:1521/xe DIRECTORY=history_log TABLES=history_log_old REMAP_TABLE=history_log_old:history_log data_options=SKIP_CONSTRAINT_ERRORS table_exists_action=APPEND PARALLEL=N CONTENT=data_only
expdp zabbix/password@oracle_host:1521/xe DIRECTORY=history_text TABLES=history_text_old PARALLEL=N
impdp zabbix/password@oracle_host:1521/xe DIRECTORY=history_text TABLES=history_text_old REMAP_TABLE=history_text_old:history_text data_options=SKIP_CONSTRAINT_ERRORS table_exists_action=APPEND PARALLEL=N CONTENT=data_only
Az összes adatbázis esetében, miután az áttelepítés befejeződött, tegye a következőket:
Ellenőrizze, hogy minden a várt módon működik-e.
Dobd le a régi asztalokat: