2 Zabbixデータベースのキャラクターセットと照合の修正
MySQL/MariaDB
歴史的に、MySQL とその派生製品では 'utf8' が utf8mb3 の別名として使用されていました。utf8mb3 は、標準 UTF8 の MySQL 独自の 3 バイト実装であり、UTF8 は 4 バイトです。 MySQL 8.0.28 および MariaDB 10.6.1 以降では、'utf8mb3' 文字セットは非推奨となり、いずれサポートが終了します。一方で、'utf8' は 'utf8mb4' を参照するようになります。 Zabbix 6.0 以降では 'utf8mb4' がサポートされています。将来の問題を避けるため、'utf8mb4' の使用を強く推奨します。 'utf8mb4' に切り替えるもう 1 つの利点は、補助 Unicode 文字をサポートできることです。
Zabbix 6.0 より前のバージョンは utf8mb4 を認識しないため、utf8mb4 への変換を実行する前に、必ず先に Zabbix server と 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 <your DB name> character set utf8mb4 collate utf8mb4_bin;
修正後の値:
mysql> SELECT @@character_set_database, @@collation_database;
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8mb4 | utf8mb4_bin |
+--------------------------+----------------------+
5. テーブルおよびカラムレベルで文字セットと照合順序を修正するために、 script を読み込みます:
mysql <your DB name> < utf8mb4_convert.sql
6. スクリプトを実行します:
SET @ZABBIX_DATABASE = '<your DB name>';
If MariaDB → set innodb_strict_mode = OFF;
CALL zbx_convert_utf8();
If MariaDB → set innodb_strict_mode = ON;
drop procedure zbx_convert_utf8;
'utf8mb4' は、ディスク容量をわずかに多く消費することが想定されますのでご注意ください。
7. エラーがなければ、修正後のデータベースでバックアップコピーを作成してもよいでしょう。
8. Zabbix を起動します。