Mysql
Zabbix MariaDB 將項目數據複製到另一個項目
我目前的數據庫:
MariaDB [zabbix]> SELECT VERSION(); +----------------------+ | VERSION() | +----------------------+ | 10.0.28-MariaDB-2+b1 | +----------------------+
我的 Zabbix 中有一些重複的項目。
我有具有“歷史”和“趨勢”數據的舊項目,但它已被禁用。新項目也有數據並已啟用。
我想過將舊項目的歷史和趨勢複製到新項目,但我不確定如何安全地做到這一點。
我創建了一些測試項目來檢查更新過程,但它似乎並沒有像我預期的那樣進行。
舊項目 - 30886 新項目 - 32041
所以,我希望將舊項目中的所有數據複製到新項目中。意義:
- 舊項目保持其數據完整。
- 新項目保留其目前數據並接收舊項目的數據。
- 這兩個項目使用相同的表。
“歷史”表摘錄:
MariaDB [zabbix]> SELECT * FROM history WHERE itemid = 30886 LIMIT 5; +--------+------------+--------+-----------+ | itemid | clock | value | ns | +--------+------------+--------+-----------+ | 30886 | 1609965887 | 0.3270 | 59358611 | | 30886 | 1609966187 | 0.2747 | 14863699 | | 30886 | 1609966486 | 0.3037 | 796425573 | | 30886 | 1609966787 | 0.2855 | 9516260 | | 30886 | 1609967086 | 0.2866 | 903642778 | +--------+------------+--------+-----------+
我想過做這樣的事情:
INSERT INTO history (`clock`, `value`, `ns`) SELECT `clock`, `value`, `ns` FROM history WHERE itemid = 30886;
但這不起作用。這樣它就不會為每一行插入新的 itemid,並且表“歷史”被指定兩次,作為目標和源。
也許一個更有經驗的人會指出一些想法。有任何想法嗎?
經過一番探勘,我成功地將歷史和趨勢從一個項目複製到另一個項目。
我使用的語法是這樣的:
歷史表:
INSERT INTO history (`itemid`, `clock`, `value`, `ns`) SELECT '<new_itemid>', `clock`, `value`, `ns` FROM history WHERE itemid = <old_itemid>;
趨勢表:
INSERT INTO trends (`itemid`, `clock`, `num`, `value_min`, `value_avg`, `value_max`) SELECT '<new_itemid>', `clock`, `num`, `value_min`, `value_avg`, `value_max` FROM trends WHERE itemid = <old_itemid>;
秘密在於 INSERT INTO 和添加文字 itemid 的 SELECT 子句。實際的 <new_itemid> 被插入到每個新行中。
結果:
MariaDB [zabbix]> INSERT INTO trends (`itemid`, `clock`, `num`, `value_min`, `value_avg`, `value_max`) SELECT '32041', `clock`, `num`, `value_min`, `value_avg`, `value_max` FROM trends WHERE itemid = 30886; Query OK, 5227 rows affected (0.14 sec) Records: 5227 Duplicates: 0 Warnings: 0 MariaDB [zabbix]> INSERT INTO history (`itemid`, `clock`, `value`, `ns`) SELECT '32041', `clock`, `value`, `ns` FROM history WHERE itemid = 30886; Query OK, 2008 rows affected (0.10 sec) Records: 2008 Duplicates: 0 Warnings: 0
我敢打賭有一個更好的方法,但這是我現在能想到的。