歴史的に、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.データベースレベルでキャラクターセットと照合を修正します。
修正値の確認:
mysql> SELECT @@character_set_database, @@collation_database;
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8mb4 | utf8mb4_bin |
+--------------------------+----------------------+
5.スクリプトをロードして、テーブルおよび列レベルでの文字セットと照合を修正します。
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を起動します。