旧的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天。
损失监控数据:几乎无缝迁移
总结:新的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,或者导入后,修改就可以了。
本文出自 “select” 博客,谢绝转载!