מאז Zabbix 6.0, המפתחות הראשיים משמשים עבור כל הטבלאות ב התקנות חדשות.
סעיף זה מספק הוראות לשדרוג ידני של טבלאות היסטוריה בהתקנות קיימות למפתחות ראשיים.
הוראות זמינות עבור:
::: שימו לב חשוב ההוראות המופיעות בדף זה מיועדות למשתמשים מתקדמים. שים לב שייתכן שיהיה צורך להתאים הוראות אלה לתצורה הספציפית שלך. :::
ייצוא וייבוא חייבים להתבצע ב-tmux/מסך כדי להבטיח שההפעלה לא תישמט.
ראה גם: הערות חשובות
ניתן להשתמש בשיטה זו עם שרת Zabbix פועל, אך מומלץ לעצור את השרת לזמן השדרוג. מעטפת MySQL (mysqlsh) חייבת להיות מותקנת ויכולה להתחבר ל-DB.
היכנס למסוף MySQL בתור root (מומלץ) או בתור כל משתמש עם הרשאות FILE.
התחל את MySQL כאשר המשתנה local_infile מופעל.
שנה את שמות הטבלאות הישנות וצור טבלאות חדשות על ידי הפעלת history_pk_prepare.sql
.
mysql -uzabbix -p<password> zabbix < /usr/share/zabbix-sql-scripts/mysql/history_pk_prepare.sql
התחבר דרך mysqlsh. אם אתה משתמש בחיבור שקע, ייתכן שיהיה צורך לציין את הנתיב.
הפעל (ניתן לשנות את CSVPATH לפי הצורך):
CSVPATH="/var/lib/mysql-files";
util.exportTable("history_old", CSVPATH + "/history.csv", { dialect: "csv" });
util.importTable(CSVPATH + "/history.csv", {"dialect": "csv", "table": "history" });
util.exportTable("history_uint_old", CSVPATH + "/history_uint.csv", { dialect: "csv" });
util.importTable(CSVPATH + "/history_uint.csv", {"dialect": "csv", "table": "history_uint" });
util.exportTable("history_str_old", CSVPATH + "/history_str.csv", { dialect: "csv" });
util.importTable(CSVPATH + "/history_str.csv", {"dialect": "csv", "table": "history_str" });
util.exportTable("history_log_old", CSVPATH + "/history_log.csv", { dialect: "csv" });
util.importTable(CSVPATH + "/history_log.csv", {"dialect": "csv", "table": "history_log" });
util.exportTable("history_text_old", CSVPATH + "/history_text.csv", { dialect: "csv" });
util.importTable(CSVPATH + "/history_text.csv", {"dialect": "csv", "table": "history_text" });
שיטת השדרוג הזו לוקחת יותר זמן ויש להשתמש בה רק אם שדרוג עם mysqlsh אינו אפשרי.
היכנס למסוף MySQL בתור root (מומלץ) או כל משתמש עם הרשאות FILE.
התחל את MySQL כאשר המשתנה local_infile מופעל.
שנה את שמות הטבלאות הישנות וצור טבלאות חדשות על ידי הפעלת history_pk_prepare.sql
:
max_execution_time חייב להיות מושבת לפני העברת נתונים כדי למנוע פסק זמן במהלך ההעברה.
SET @@max_execution_time=0;
INSERT IGNORE INTO history SELECT * FROM history_old;
INSERT IGNORE INTO history_uint SELECT * FROM history_uint_old;
INSERT IGNORE INTO history_str SELECT * FROM history_str_old;
INSERT IGNORE INTO history_log SELECT * FROM history_log_old;
INSERT IGNORE INTO history_text SELECT * FROM history_text_old;
עקוב אחר הנחיות לאחר ההגירה כדי לבטל את הטבלאות הישנות.
בדוק עבור אילו נתיבים ייבוא/ייצוא מופעל:
mysql> SELECT @@secure_file_priv;
+------------------------------+
| @@secure_file_priv |
+------------------------------+
| /var/lib/mysql-files/ |
+------------------------------+
אם ערך secure_file_priv הוא נתיב לספריה, ייצוא/ייבוא יתבצע עבור קבצים בספרייה זו. במקרה זה, ערוך נתיבים לקבצים בשאילתות בהתאם או הגדר את הערך secure_file_priv למחרוזת ריקה למשך זמן השדרוג.
אם ערך secure_file_priv ריק, ייצא/ייבא ניתן לבצע מכל מקום.
אם ערך secure_file_priv הוא NULL, הגדר אותו לנתיב המכיל נתוני טבלה מיוצאים ('/var/lib/mysql-files/' בדוגמה למעלה).
למידע נוסף, ראה תיעוד MySQL.
max_execution_time חייב להיות מושבת לפני ייצוא נתונים כדי למנוע פסק זמן במהלך הייצוא.
SET @@max_execution_time=0;
SELECT * INTO OUTFILE '/var/lib/mysql-files/history.csv' שדות שהסתיימו על ידי ',' ESCAPED BY '"' שורות שהסתיימו על ידי '\n' FROM history_old;
טען קובץ נתונים '/var/lib/mysql-files/history.csv' התעלם מהיסטוריית טבלה שדות המסתיימים על ידי ',' נמלט על ידי '"' שורות המסתיימות על ידי '\n';
בחר * INTO OUTFILE '/var/lib/mysql-files/history_uint.csv' שדות שהסתיימו על ידי ',' ESCAPED BY '"' שורות שהסתיימו על ידי '\n' FROM history_uint_old;
טען קובץ נתונים '/var/lib/mysql-files/history_uint.csv' התעלם לתוך TABLE history_uint שדות המסתיימים על ידי ',' נמלטים על ידי '"' שורות המסתיימות על ידי '\n';
SELECT * INTO OUTFILE '/var/lib/mysql-files/history_str.csv' שדות שהסתיימו על ידי ',' ESCAPED BY '"' שורות שהסתיימו על ידי '\n' FROM history_str_old;
טען קובץ נתונים '/var/lib/mysql-files/history_str.csv' התעלם לתוך TABLE history_str שדות המסתיימים על ידי ',' escaped BY '"' שורות המסתיימות על ידי '\n';
בחר * INTO OUTFILE '/var/lib/mysql-files/history_log.csv' שדות שהסתיימו על ידי ',' ESCAPED BY '"' שורות שהסתיימו על ידי '\n' FROM history_log_old;
טען קובץ נתונים '/var/lib/mysql-files/history_log.csv' התעלם לתוך TABLE history_log שדות המסתיימים על ידי ',' ESCAPED BY '"' שורות שהסתיימו על ידי '\n';
בחר * INTO OUTFILE '/var/lib/mysql-files/history_text.csv' שדות שהסתיימו על ידי ',' ESCAPED BY '"' שורות שהסתיימו על ידי '\n' FROM history_text_old;
טען קובץ נתונים '/var/lib/mysql-files/history_text.csv' התעלם אל TABLE history_text שדות המסתיימים על ידי ',' ESCAPED BY '"' שורות המסתיימות על ידי '\n';
עקוב אחר הנחיות לאחר ההגירה כדי לבטל את הטבלאות הישנות.
ייצוא וייבוא חייבים להתבצע ב-tmux/מסך כדי להבטיח שההפעלה לא תישמט. עבור התקנות עם TimescaleDB, דלג על סעיף זה והמשך אל PostgreSQL + TimescaleDB.
ראה גם: הערות חשובות
history_pk_prepare.sql
:INSERT INTO history SELECT * FROM history_old ON CONFLICT (itemid,clock,ns) אל תעשה כלום;
INSERT INTO history_uint SELECT * FROM history_uint_old ON CONFLICT (itemid,clock,ns) אל תעשה כלום;
INSERT INTO history_str SELECT * FROM history_str_old ON CONFLICT (itemid,clock,ns) אל תעשה כלום;
INSERT INTO history_log SELECT * FROM history_log_old ON CONFLICT (itemid,clock,ns) אל תעשה כלום;
INSERT INTO history_text SELECT * FROM history_text_old ON CONFLICT (itemid,clock,ns) אל תעשה כלום;
ראה טיפים לשיפור ביצועי INSERT: PostgreSQL: טעינת כמויות נתונים בכמות גדולה, מרחק המחסום וכמות WAL.
\copy history_old TO '/tmp/history.csv' DELIMITER ',' CSV
CREATE TEMP TABLE temp_history (
itemid bigint NOT NULL,
שעון שלם ברירת מחדל '0' לא NULL,
ערך DOUBLE PRECISION Default '0.0000' לא NULL,
ns מספר שלם ברירת מחדל '0' לא NULL
);
\copy temp_history FROM '/tmp/history.csv' DELIMITER ',' CSV
INSERT INTO history SELECT * FROM temp_history ON CONFLICT (itemid,clock,ns) אל תעשה כלום;
\copy history_uint_old TO '/tmp/history_uint.csv' DELIMITER ',' CSV
צור טבלת טמפ' temp_history_uint (
itemid bigint NOT NULL,
שעון שלם ברירת מחדל '0' לא NULL,
value numeric(20) DEFAULT '0' NOT NULL,
ns מספר שלם ברירת מחדל '0' לא 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) אל תעשה כלום;
\copy history_str_old TO '/tmp/history_str.csv' DELIMITER ',' CSV
צור טבלת טמפ' temp_history_str (
itemid bigint NOT NULL,
שעון שלם ברירת מחדל '0' לא NULL,
value varchar(255) DEFAULT '' NOT NULL,
ns מספר שלם ברירת מחדל '0' לא NULL
);
\copy temp_history_str FROM '/tmp/history_str.csv' DELIMITER ',' CSV
INSERT INTO history_str (itemid,clock,value,ns) SELECT * FROM temp_history_str ON CONFLICT (itemid,clock,ns) אל תעשה כלום;
\copy history_log_old TO '/tmp/history_log.csv' DELIMITER ',' CSV
צור טבלת טמפ' temp_history_log (
itemid bigint NOT NULL,
שעון שלם ברירת מחדל '0' לא NULL,
חותמת זמן מספר שלם ברירת מחדל '0' לא NULL,
source varchar(64) DEFAULT '' NOT NULL,
מספר שלם של חומרה ברירת מחדל '0' לא NULL,
טקסט ערך DEFAULT '' NOT NULL,
logeventid מספר שלם ברירת מחדל '0' לא NULL,
ns מספר שלם ברירת מחדל '0' לא NULL
);
\copy temp_history_log FROM '/tmp/history_log.csv' DELIMITER ',' CSV
INSERT INTO history_log SELECT * FROM temp_history_log ON CONFLICT (itemid,clock,ns) אל תעשה כלום;
\copy history_text_old TO '/tmp/history_text.csv' DELIMITER ',' CSV
צור טבלת טמפ' טקסט_היסטוריה_temp (
itemid bigint NOT NULL,
שעון שלם ברירת מחדל '0' לא NULL,
טקסט ערך DEFAULT '' NOT NULL,
ns מספר שלם ברירת מחדל '0' לא NULL
);
\copy temp_history_text FROM '/tmp/history_text.csv' DELIMITER ',' CSV
INSERT INTO history_text SELECT * FROM temp_history_text ON CONFLICT (itemid,clock,ns) אל תעשה כלום;
ייצוא וייבוא חייבים להתבצע ב-tmux/מסך כדי להבטיח שההפעלה לא תישמט. שרת Zabbix אמור להיות מושבת במהלך השדרוג.
ראה גם: הערות חשובות
history_pk_prepare.sql
.::: שימו לב חשוב הנתיב אל history_pk_prepare.sql
השתנה](/manual/introduction/whatsnew609#packages) מאז Zabbix 6.0.9. עבור גרסאות ישנות יותר מ-6.0.9, יש להשתמש בפקודה הבאה:
:::
אם הדחיסה מופעלת (בהתקנת ברירת מחדל), הפעל סקריפטים מתוך 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
אם הדחיסה מושבתת, הפעל סקריפטים מתוך 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
ראה גם: טיפים לשיפור ביצועי INSERT.
ייצוא וייבוא חייבים להתבצע ב-tmux/מסך כדי להבטיח שההפעלה לא תישמט. שרת Zabbix אמור להיות מושבת במהלך השדרוג.
ראה גם: הערות חשובות
עיין ב[תיעוד] של Oracle Data Pump (https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-data-pump-performance-tips.html) לקבלת טיפים לביצועים.
history_pk_prepare.sql
.cd /usr/share/zabbix/zabbix-sql-scripts/database/oracle
sqlplus zabbix/password@oracle_host/service
sqlplus> @history_pk_prepare.sql
ל-Data Pump חייבות להיות הרשאות קריאה וכתיבה לספריות אלו.
דוגמא:
expdp zabbix/password@oracle_host/service \
DIRECTORY=היסטוריה \
TABLES=history_old,history_uint_old,history_str_old,history_log_old,history_text_old \
PARALLEL=N
impdp zabbix/password@oracle_host/service \
DIRECTORY=היסטוריה \
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=הוסף PARALLEL=N CONTENT=נתונים_בלבד
דוגמא:
mkdir -pv /export/history /export/history_uint /export/history_str /export/history_log /export/history_text
chown -R oracle:oracle /export
צור היסטוריית ספריות בתור '/export/history';
הענק קריאה, כתיבה על היסטוריית ספריות ל-zabbix;
צור directory history_uint בתור '/export/history_uint';
הענק קריאה, כתוב בספרייה history_uint ל-zabbix;
צור directory history_str בתור '/export/history_str';
הענק קריאה, כתוב בספרייה history_str ל-zabbix;
צור History_log של ספרייה בתור '/export/history_log';
הענק קריאה, כתוב ב-directory history_log ל-zabbix;
צור history_text של ספרייה בתור '/export/history_text';
הענק קריאה, כתיבה בספרייה history_text ל-zabbix;
expdp zabbix/password@oracle_host:1521/xe DIRECTORY=היסטוריה TABLES=history_old PARALLEL=N
impdp zabbix/password@oracle_host:1521/xe DIRECTORY=היסטוריה TABLES=history_old REMAP_TABLE=history_old:history data_options=SKIP_CONSTRAINT_ERRORS table_exists_action=הוסף PARALLEL=N CONTENT=נתונים_בלבד
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 CONTENTEL=N
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
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
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
עבור כל מסדי הנתונים, לאחר השלמת ההעברה, בצע את הפעולות הבאות:
ודא שהכל עובד כמצופה.
זרוק שולחנות ישנים: