2 Zabbixデータベースのキャラクターセットと照合の修正

MySQL/MariaDB

歴史的に、MySQLとその派生物はutf8mb3のエイリアスとして「utf8」を使用していました。これはMySQL独自の標準UTF8の3バイト実装であり、4バイトです。 MySQL8.0.28およびMariaDB10.6.1以降、「utf8mb3」キャラクターセットは非推奨になりました。ある時点でサポートが終了し、「utf8」は「utf8mb4」への参照になります。 Zabbix 6.0以降、「utf8mb4」がサポートされています。将来の問題を回避するために、「utf8mb4」を使用することを強くお勧めします。 'utf8mb4'に切り替えるもう1つの利点は、補足Unicode文字をサポートすることです。

Zabbix 6.0より前のバージョンはutf8mb4を認識しないため、utf8mb4変換を実行する前に、まずZabbixサーバーとDBスキーマを6.0.xにアップグレードしてください。

1.データベースのキャラクターセットと照合を確認してください。

実行例:

mysql> SELECT @@character_set_database, @@collation_database;
       +--------------------------+----------------------+
       | @@character_set_database | @@collation_database |
       +--------------------------+----------------------+
       | latin2                   | latin2 _general_ci   |
       +--------------------------+----------------------+

または:

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

ご覧のとおり、キャラクターセットは「utf8mb4」ではなく、照合も「utf8mb4_bin」ではないため、修正する必要があります。

2.Zabbixを停止します。

3.データベースのバックアップコピーを作成します。

4.データベースレベルでキャラクターセットと照合を修正します。

alter database <データベース名> character set utf8mb4 collate utf8mb4_bin;

修正値の確認:

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

5.スクリプトをロードして、テーブルおよび列レベルでの文字セットと照合を修正します。

mysql <データベース名> < utf8mb4_convert.sql

6.スクリプトを実行します。

               SET @ZABBIX_DATABASE='<データベース名>';
       MariaDBの場合→set innodb_strict_mode = OFF;
                      CALL zbx_convert_utf8();
       MariaDBの場合→set innodb_strict_mode = ON;
                      drop procedure zbx_convert_utf8;

'utf8mb4'はわずかに多くのディスクスペースを消費すると予想されることに注意してください。

7.エラーがない場合 - 修正したデータベースのバックアップコピーを作成することをお勧めします。

8.Zabbixを起動します。