2 תיקון ערכת תווים ואיסוף במסד הנתונים של Zabbix

MySQL/MariaDB

מבחינה היסטורית, MySQL ונגזרות השתמשו ב-'utf8' ככינוי ל-utf8mb3 - יישום 3-בתים של MySQL של UTF8 הסטנדרטי, שהוא 4-בתים. החל מ-MySQL 8.0.28 ו-MariaDB 10.6.1, ערכת התווים 'utf8mb3' היא הוצא משימוש ובשלב מסוים התמיכה בו תבוטל בעוד 'utf8' להפוך להפניה ל-'utf8mb4'. מאז Zabbix 6.0, 'utf8mb4' נתמך. כדי למנוע בעיות עתידיות, זה כן מומלץ מאוד להשתמש ב-'utf8mb4'. יתרון נוסף במעבר ל-'utf8mb4' הוא תמיכה ביוניקוד משלים דמויות.

::: הערה אזהרה מכיוון שגרסאות לפני Zabbix 6.0 אינן מודעות ל-utf8mb4, הקפד לשדרג תחילה שרת Zabbix וסכמת DB ל-6.0.x לפני ביצוע המרה utf8mb4. :::

1. בדוק את ערכת התווים של מסד הנתונים והאיסוף.

לדוגמה:

 mysql> SELECT @@character_set_database, @@collation_database;
        +------------------------+---------------------- +
        | @@character_set_database | @@collation_database |
        +------------------------+---------------------- +
        | לטינית2 | latin2 _general_ci |
        +------------------------+---------------------- +

אוֹ:

 mysql> SELECT @@character_set_database, @@collation_database;
        +------------------------+---------------------- +
        | @@character_set_database | @@collation_database |
        +------------------------+---------------------- +
        | utf8 | utf8_bin |
        +------------------------+---------------------- +

כפי שאנו רואים, ערכת התווים כאן אינה 'utf8mb4' והאיסוף לא 'utf8mb4_bin', אז אנחנו צריכים לתקן אותם.

2. עצור את זאביקס.

3. צור עותק גיבוי של מסד הנתונים!

4. תקן את ערכת התווים והאיסוף ברמת מסד הנתונים:

 לשנות את מסד הנתונים <שם ה-DB שלך> ערכת תווים utf8mb4 collate utf8mb4_bin;

ערכים קבועים:

 mysql> SELECT @@character_set_database, @@collation_database;
        +------------------------+---------------------- +
        | @@character_set_database | @@collation_database |
        +------------------------+---------------------- +
        | utf8mb4 | utf8mb4_bin |
        +------------------------+---------------------- +

5. טען את script כדי לתקן ערכת תווים ואיסוף ברמת הטבלה והעמודה:

 mysql <שם ה-DB שלך> < utf8mb4_convert.sql

6. בצע את הסקריפט:

                SET @ZABBIX_DATABASE = '<שם ה-DB שלך>';
        אם MariaDB → הגדר innodb_strict_mode = OFF;
                       התקשר ל-zbx_convert_utf8();
        אם MariaDB → הגדר innodb_strict_mode = ON;
                       הליך שחרור zbx_convert_utf8;

שים לב ש-'utf8mb4' צפוי לצרוך מעט יותר שטח דיסק.

7. אם אין שגיאות - מומלץ ליצור עותק גיבוי של מסד נתונים עם מסד הנתונים הקבוע.

8. התחל את Zabbix.