一、备份方案

1.1 备份方案具体步骤

旧的zabbix:oldIP,新的zabbixnewIP

方案1【不推荐】:

数据量65G

全备oldIPmysql,耗时大约:十个小时

恢复到newIPmysql:耗时:十几个小时

损失监控数据:二十几个小时

 

 

方案2无缝迁移【推荐】:

1、【新的zabbix服务器准备工作】:安装新的zabbix服务端,客户端,mysql安装5.1版本以上(centos6mysqlyum版本就是5.1版本),把新的zabbixmysql做分表操作。

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 agenthostid。先把新的zabbix做个全备。

然后只用迁移trend数据 。【消耗几十分钟,但是不造成太大的影响。】,

注意事项:新的zabbix服务器做mysql分表,要按照旧的zabbix规矩来,history保存7天,trend保存365天。

 

损失监控数据:几乎无缝迁移

 

 

1.2 备份方案详解

总结:新的zabbix服务器做mysql分表,先倒旧zabbix配置到新的zabbix上,使新的zabbix能够运行,然后两个zabbix同时运行7天,然后导入个trend数据到新的zabbix里就行了。

 

问题1:为啥不用导入history数据?

因为所有的itemhistory都设置成7天,所以运行7天就不用导入history表了。

 

问题2:分批次导入数据,zabbix server本身的agent不一致如何处理?

 

处理步骤

方法1、旧zabbix导出trend备份之后,用sed命令批量替换旧的zabbix agent hostid为新的zabbix agenthostid。再导入trend数据。

或者:

方法2、导完trend数据之后,然后把新的zabbix的里旧zabbix agenthostid,用update命令替换成新的zabbix agenthostid

 

 

问题3:接问题2,那为啥只改个hostid就能保持一致呢?

要了解:mysqlzabbix数据库的架构:schema.sql

[root@Monitor1 ~]# vi  /root/zabbix/zabbix-2.2.2/database/mysql/schema.sql 

 

找到对应关系:

hosts表的host字段(就是像web-01agent的名字)---------->

hosts表的hostid ---------->通过items表单hostid找到

---------->items表单itemid---------->通过itemid找到trend或者history对应的具体数据

 

也就是我们就只用关注:hostid字段。因为hostitems相关连的东西,就是hostid

(而资源之间的关联关系,是通过外键来完成的。比如hostitem的关联关系,就是在items表中使用hostidhosts表中的资源进行关联的。)


不用管主机名之类的,只要导入前修改备份数据里的hostid为新的hostid,或者导入后,修改就可以了。