ホストを削除しようとするとエラーになる。
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 - 投稿数: 380
初めて見るケースですね。
レコード削除には相応のリスクがありますが、対象が明確であるためそこまで危険ではないと思います。(あくまで個人的な考え)
「メンテA」ですが、一度GUIから同名のものを作成⇒削除できるか確認してみてはどうでしょうか。
a-ima - 投稿数: 4
ご回答ありがとうございます。
>「メンテA」ですが、一度GUIから同名のものを作成⇒削除できるか確認してみてはどうでしょうか。
メンテナンス"メンテA"はすでに存在します。
と表示され、作成できませんでした。
fripper - 投稿数: 495
UI 操作には特権管理者ユーザを利用していますか?
通常ユーザですと、自分のアクセス権の無い(関連しない)グループのみに紐付いた
メンテ情報がリストアップされていないだけかもしれません
特権管理者ユーザ権限でもメンテAがリストアップされないのであれば
DB内の整合性破損の可能性が否めませんが‥
a-ima - 投稿数: 4
ご回答ありがとうございます。
> UI 操作には特権管理者ユーザを利用していますか?
はい、特権管理者のユーザーで操作しております。
a-ima - 投稿数: 4
本日、maintenancesテーブルの該当レコードを削除したところ、ホストを削除できるようになりました。
maintenances_windowsテーブルのレコードは、maintenancesテーブルの該当レコードを削除した事で自動的に無くなりました。
Yasumi様、fripper様、ありがとうございました。