一、備份方案
1.1 備份方案具體步驟
舊的zabbix:oldIP,新的zabbix:newIP
方案1【不推薦】:
數據量65G
全備oldIP的mysql,耗時大約:十個小時
恢復到newIP的mysql:耗時:十幾個小時
損失監控數據:二十幾個小時
方案2無縫遷移【推薦】:
1、【新的zabbix服務器準備工作】:安裝新的zabbix服務端,客戶端,mysql安裝5.1版本以上(centos6,mysql的yum版本就是5.1版本),把新的zabbix的mysql做分表操作。
2、把舊zabbix服務器上的腳本、配置、crontab都拷貝到新zabbix上。
3、只把配置導入到新的zabbix,然後運行新的zabbix,讓它監控。【十幾分鍾】
4、通過免密鑰批量執行腳本,10秒鐘就完成了:70多臺機器的zabbix客戶端,修改爲兩臺服務端IP,然後重啓。
就是先讓客戶端同時主動上報監控數據給兩個服務端。讓兩臺zabbix server同時監控7天。這樣history的數據就不用遷移了。【10秒完成,不消耗監控數據】
5、七天之後,舊zabbix導出trend備份之後,用sed命令批量替換舊的zabbix agent hostid爲新的zabbix agent的hostid。先把新的zabbix做個全備。
然後只用遷移trend數據 。【消耗幾十分鐘,但是不造成太大的影響。】,
注意事項:新的zabbix服務器做mysql分表,要按照舊的zabbix規矩來,如history保存7天,trend保存365天。
損失監控數據:幾乎無縫遷移
1.2 備份方案詳解
總結:新的zabbix服務器做mysql分表,先倒舊zabbix配置到新的zabbix上,使新的zabbix能夠運行,然後兩個zabbix同時運行7天,然後導入個trend數據到新的zabbix裏就行了。
問題1:爲啥不用導入history數據?
因爲所有的item把history都設置成7天,所以運行7天就不用導入history表了。
問題2:分批次導入數據,zabbix server本身的agent不一致如何處理?
處理步驟
方法1、舊zabbix導出trend備份之後,用sed命令批量替換舊的zabbix agent hostid爲新的zabbix agent的hostid。再導入trend數據。
或者:
方法2、導完trend數據之後,然後把新的zabbix的裏舊zabbix agent的hostid,用update命令替換成新的zabbix agent的hostid。
問題3:接問題2,那爲啥只改個hostid就能保持一致呢?
要了解:mysql的zabbix數據庫的架構:schema.sql
[root@Monitor1 ~]# vi /root/zabbix/zabbix-2.2.2/database/mysql/schema.sql
找到對應關係:
hosts表的host字段(就是像web-01,agent的名字)---------->
hosts表的hostid ---------->通過items表單hostid找到
---------->items表單itemid---------->通過itemid找到trend或者history對應的具體數據
也就是我們就只用關注:hostid字段。因爲host跟items相關連的東西,就是hostid。
(而資源之間的關聯關係,是通過外鍵來完成的。比如host和item的關聯關係,就是在items表中使用hostid與hosts表中的資源進行關聯的。)
不用管主機名之類的,只要導入前修改備份數據裏的hostid爲新的hostid,或者導入後,修改就可以了。