Zabbix 数据库迁移

背景:ZABBIX的环境是LNMP,MySQL的架构是M-M主备模式,单台服务器SSD硬盘800G。监控主机日渐增多,空间不足,迁移到同样架构下的SAS盘2T空间。

架构:A 192.168.0.100 -> B 192.168.0.101 -> C 192.168.0.102 -> D 192.168.0.103
步骤
1、搭建级联从库
2、修改zabbix server配置,加读锁,切库
3、验证

 

1、搭建级联从库
1> 检查开启B上的两个参数 log_bin  log_slave_updates

mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin       | ON    |
+---------------+-------+
mysql> show variables like 'log_slave_updates';    --log_slave_updates是只读参数,修改该参数需要重启数据库
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| log_slave_updates | ON    |
+-------------------+-------+

2> 配置环境
  1) B C安装lz4
    yum install -y lz4
  2) 配置B到C的SSH免认证登陆

  3) 关闭C的mysql服务,并清空data目录下文件

    service mysqld stop
  
4) 热备B上数据

nohup /usr/bin/innobackupex --user=root \
--password=xxx \
--parallel=4 \
--socket=/tmp/mysql.sock \
--slave-info --safe-slave-backup \
--no-timestamp \
--stream=xbstream . |\
lz4 -B4 |\
ssh [email protected] \
"cat - | lz4 -d -B7 | xbstream -x -C /data/mysql/data" &

  5) 到C备份的文件目录下,将数据恢复到一致性位点,对应 FTWRL 时间点

innobackupex --apply-log /data/mysql/data

  6) 启动C的mysql服务

chown -R mysql:mysql /data/mysql/
service mysqld start

3> 搭建 B -> C 从库

  1) 打开备份目录中xtrabackup_binlog_info文件,替换MASTER_LOG_FILE,MASTER_LOG_POS

扫描二维码关注公众号,回复: 1568058 查看本文章
CHANGE MASTER TO
  MASTER_HOST='192.168.0.101',
  MASTER_USER='replication',
  MASTER_PASSWORD='XXX',
  MASTER_PORT=3306,
  MASTER_LOG_FILE='mysql-bin.000312',
  MASTER_LOG_POS=149457383,
  MASTER_AUTO_POSITION=0

  2) C上启动slave

reset master;      --重新搭建主从的时候要执行
reset slave;
start slave;
show slave status\G

  C -> D 的主从搭建,同 B -> C,要注意的是,切换后,如果要搭建 C-D 双主架构,需要关闭D上log_slave_update参数。 

 

2、修改zabbix server配置,切库

1> 停止zabbix server服务

service zabbix-server stop

2> 修改 zabbix_server.conf

DBHost=192.168.0.102

3> C上停止salve

stop slave

4> 启动zabbix server服务

service zabbix-server start

  数据库切换启动后,zabbix会重新同步缓存数据,此时查看数据库processlist,会发现有与StartDBSyncers参数设置个数相同的线程在查询发送数据。时刻关注zabbix_server日志,如果出现下面的问题,同步时间会异常缓慢,要终止同步需要先停止server进程,然后 kill 掉数据库中的连接。问题解决方案,可参考下面记录。

 

问题记录:

1、zabbix server后台日志出现defunct状态,并且日志中有out of memory报错

 1 查看zabbix server 进程
 2 bestpay  29745 28549  0 23:34 ?        00:00:00 [zabbix_server] <defunct>
 3 bestpay  29746 28549  0 23:34 ?        00:00:00 [zabbix_server] <defunct>
 4 bestpay  29747 28549  0 23:34 ?        00:00:00 [zabbix_server] <defunct>
 5 root     29817 25359  0 23:37 pts/2    00:00:00 tail -f /data/dataLogs/zabbix_server/zabbix_server.log
 6 root     29819 27235  0 23:37 pts/5    00:00:00 grep zabbix_server
 7 查看zabbix_server.log
 8   28972:20180605:233508.259 Zabbix agent item "pyora[{$USERNAME},{$PASSWORD},{$ADDRESS},{$DATABASE},sga_shared_pool]" on host "yfkdbrsh-sh-159-33" failed: first network error, wait for 15 seconds
 9  29706:20180605:233510.358 __mem_malloc: skipped 8 asked 755232 skip_min 4488 skip_max 722096
10  29706:20180605:233510.358 [file:dbcache.c,line:2805] zbx_mem_realloc(): out of memory (requested 755232 bytes)
11  29706:20180605:233510.358 [file:dbcache.c,line:2805] zbx_mem_realloc(): please increase HistoryIndexCacheSize configuration parameter
12  29549:20180605:233510.359 __mem_malloc: skipped 8 asked 755232 skip_min 4488 skip_max 722096
13  29549:20180605:233510.359 [file:dbcache.c,line:2805] zbx_mem_realloc(): out of memory (requested 755232 bytes)
14  29549:20180605:233510.359 [file:dbcache.c,line:2805] zbx_mem_realloc(): please increase HistoryIndexCacheSize configuration parameter
15  28549:20180605:233510.359 One child process died (PID:29706,exitcode/signal:1). Exiting ...
16  28549:20180605:233512.381 syncing history data...
17  28549:20180605:233534.219 slow query: 21.830923 sec, "update items set lastlogsize=3833923,mtime=0 where itemid=285141;

解决方案:

zabbix 参数调整:
HistoryIndexCacheSize=2048M --原来没有,建议根据内存大小设置一个缓存值,取值范围128K-2G,默认4M,zabbix3.0.0后版本支持
StartDBSyncers=16    --sync 数据的时候启动几个进程来干活,根据数据库压力负载来进行设置,值过大会造成数据库阻塞,取值范围1-100,默认值4
系统内核参数调整:
#kernel.shmall = 4294967296  --原有参数值过大,不合理,导致out of memory的根本原因
kernel.shmall =  16252928  --正确的值是按照物理内存除以OS block size的值

  

 参考资料:

1、https://www.zabbix.com/documentation/3.4/manual/appendix/config/zabbix_server?s[]=historyindexcachesize

 

作者:zero_gg
出处:http://www.cnblogs.com/zero-gg/

如果你真心觉得文章写得不错,而且对你有所帮助,那就不妨小小打赏一下吧,如果囊中羞涩,不妨帮忙“推荐"一下,您的“推荐”和”打赏“将是我最大的写作动力!

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.

猜你喜欢

转载自www.cnblogs.com/zero-gg/p/9140825.html