ホストを削除しようとするとエラーになる。

OS: CentOS 7.6.1810
Zabbix:4.0.11
MariaDB:5.5.60

ホストを削除しようとすると「メンテナンス"メンテA"は少なくとも1つのホストかホストグループが必要なので削除できません。」
というエラーが表示され削除できません。
特定のホストだけではなくどのホストを削除しようとしても発生します。
この"メンテA"は、現在、メンテナンス画面でどのグループを選択しても表示されません。

maintenanceとつくテーブルを見ると、
maintenancesテーブルのmaintenanceid「1」のメンテAが、maintenances_groupsにもmaintenances_hostsにも無いため、
発生していると考えています。そのため、このレコードと、このレコードに紐付いていると思われる
maintenance_windowsテーブルのmaintenance_timeperiodid"41"のレコードを削除することで改善できるのでは期待しているのですが、
危険でしょうか。

こういったケースでは、このように対処すべきといった情報はございませんでしょうか。

MariaDB [zabbix]> select * from maintenances;
+---------------+--------------------------------+------------------+-------------+--------------+-------------+---------------+
| maintenanceid | name | maintenance_type | description | active_since | active_till | tags_evaltype |
+---------------+--------------------------------+------------------+-------------+--------------+-------------+---------------+
| 1 | メンテA | 0 | | 1345071600 | 1345104000 | 0 |
| 8 | test | 0 | | 1328496014 | 1328496600 | 0 |
| 44 | メンテB | 0 | | 1592508600 | 1592514000 | 0 |
| 47 | メンテC | 0 | | 1576794600 | 1576796400 | 0 |
+---------------+--------------------------------+------------------+-------------+--------------+-------------+---------------+
4 rows in set (0.00 sec)

MariaDB [zabbix]> select * from maintenance_tag;
Empty set (0.00 sec)

MariaDB [zabbix]> select * from maintenances_groups;
+---------------------+---------------+---------+
| maintenance_groupid | maintenanceid | groupid |
+---------------------+---------------+---------+
| 15 | 8 | 9 |
| 609 | 44 | 69 |
| 611 | 44 | 76 |
| 610 | 44 | 77 |
| 614 | 47 | 69 |
| 616 | 47 | 76 |
| 615 | 47 | 77 |
+---------------------+---------------+---------+
7 rows in set (0.00 sec)

MariaDB [zabbix]> select * from maintenances_hosts;
Empty set (0.01 sec)

MariaDB [zabbix]> select * from maintenances_windows;
+--------------------------+---------------+--------------+
| maintenance_timeperiodid | maintenanceid | timeperiodid |
+--------------------------+---------------+--------------+
| 41 | 1 | 41 |
| 12 | 8 | 12 |
| 181 | 44 | 181 |
| 184 | 47 | 184 |
+--------------------------+---------------+--------------+
4 rows in set (0.00 sec)

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー Yasumi の写真

初めて見るケースですね。
レコード削除には相応のリスクがありますが、対象が明確であるためそこまで危険ではないと思います。(あくまで個人的な考え)

「メンテA」ですが、一度GUIから同名のものを作成⇒削除できるか確認してみてはどうでしょうか。

ユーザー a-ima の写真

ご回答ありがとうございます。

>「メンテA」ですが、一度GUIから同名のものを作成⇒削除できるか確認してみてはどうでしょうか。

メンテナンス"メンテA"はすでに存在します。
と表示され、作成できませんでした。

ユーザー fripper の写真

UI 操作には特権管理者ユーザを利用していますか?

通常ユーザですと、自分のアクセス権の無い(関連しない)グループのみに紐付いた
メンテ情報がリストアップされていないだけかもしれません

特権管理者ユーザ権限でもメンテAがリストアップされないのであれば
DB内の整合性破損の可能性が否めませんが‥

ユーザー a-ima の写真

ご回答ありがとうございます。

> UI 操作には特権管理者ユーザを利用していますか?

はい、特権管理者のユーザーで操作しております。

ユーザー a-ima の写真

本日、maintenancesテーブルの該当レコードを削除したところ、ホストを削除できるようになりました。
maintenances_windowsテーブルのレコードは、maintenancesテーブルの該当レコードを削除した事で自動的に無くなりました。

Yasumi様、fripper様、ありがとうございました。