背景: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 root@192.168.0.102 \
"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

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报错

 查看zabbix server 进程
bestpay : ? :: [zabbix_server] <defunct>
bestpay : ? :: [zabbix_server] <defunct>
bestpay : ? :: [zabbix_server] <defunct>
root : pts/ :: tail -f /data/dataLogs/zabbix_server/zabbix_server.log
root : pts/ :: grep zabbix_server
查看zabbix_server.log
::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 seconds
::233510.358 __mem_malloc: skipped asked skip_min skip_max
::233510.358 [file:dbcache.c,line:] zbx_mem_realloc(): out of memory (requested 755232 bytes)
::233510.358 [file:dbcache.c,line:] zbx_mem_realloc(): please increase HistoryIndexCacheSize configuration parameter
::233510.359 __mem_malloc: skipped asked skip_min skip_max
::233510.359 [file:dbcache.c,line:] zbx_mem_realloc(): out of memory (requested bytes)
::233510.359 [file:dbcache.c,line:] zbx_mem_realloc(): please increase HistoryIndexCacheSize configuration parameter
::233510.359 One child process died (PID:,exitcode/signal:). Exiting ...
::233512.381 syncing history data...
::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/

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

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

Zabbix 数据库迁移的更多相关文章

  1. zabbix数据库mariadb从服务器迁移到云mysql数据库的操作

    zabbix数据库mariadb从本机迁移到云mysql数据库的操作 1.将zabbix数据库导出,并导入到云数据库中 由于数据库较大,如果直接使用shell会话中断会导致数据库导出或者导入失败,使用 ...

  2. zabbix 数据库分表操作

    近期zabbix数据库占用的io高,在页面查看图形很慢,而且数据表已经很大,将采用把数据库的数据目录移到新的磁盘,将几个大表进行分表操作 一.数据迁移: 1.数据同步到新的磁盘上,先停止mysql(不 ...

  3. EF Code First Migrations数据库迁移

    1.EF Code First创建数据库 新建控制台应用程序Portal,通过程序包管理器控制台添加EntityFramework. 在程序包管理器控制台中执行以下语句,安装EntityFramewo ...

  4. 2.EF中 Code-First 方式的数据库迁移

    原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/code-first-migrations-with-entity-framework/ 系列目 ...

  5. laravel数据库迁移(三)

    laravel号称世界上最好的框架,数据库迁移算上一个,在这里先简单入个门: laravel很强大,它把表中的操作写成了migrations迁移文件,然后可以直接通过迁移文件来操作表.所以 , 数据迁 ...

  6. Code First开发系列之数据库迁移

    返回<8天掌握EF的Code First开发>总目录 本篇目录 开启并运行迁移 使用迁移API 应用迁移 给已存在的数据库添加迁移 EF的其他功能 本章小结 自我测试 本系列的源码本人已托 ...

  7. ABP Migration(数据库迁移)

    今天准备说说EntityFramework 6.0+,它与我之前所学的4.0有所区别,自从4.1发布以来,code first 被许多人所钟爱,Dbcontext API也由此时而生.早在学校的时候就 ...

  8. sqlserver 2008R2数据库迁移oracle

    x项目需要,将以前的sqlserver数据库迁移的oracle数据库中,由于以前对oracle只是在DML语句的步骤,所以总结一下这次遇到的问题以及具体步骤 1,oracle新建数据库 新建Oracl ...

  9. 【强烈推荐】数据库迁移利器:Migrator.Net

    简介 很郁闷,写了一天的遇到LiveWriter错误,可恶啊 几年前在做项目中第一次接触到了Migrator.Net,就深深被吸引住了,至此以后在新的大项目中,我都会使用Migrator.Net来创建 ...

随机推荐

  1. not or and 的优先级是不同的

    not or and 的优先级是不同的: not > and > or 请用最快速度说出答案: not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 an ...

  2. 使用NPOI导出Excel文件

    使用NPOI导出Excel文件,本实例使用了ASP.NET MVC. 1.使用NPOI导出Excel文件 实例:导出商品列表. 要求:1.通过NPOI导出导出商品列表信息: 2.使用Excel函数计算 ...

  3. bootstrap-table的简单使用

    先上效果图: 第一步:引用bootstrap-table的样式和js. @Styles.Render("~/assets/css/bootstrap.css") @Styles.R ...

  4. JS-闭包练习

    首先,第一个输出,因为前置运算,i要先参与输出,然后再自增,所以输出为0 第二个输出,因为f1和f2是不同的函数,不共享i变量,所以输出也为0 第三个输出,因为是f1,共享i,所以i加了1,输出为1 ...

  5. html5中本地存储概念是什么?

    html5中的Web Storage包括了两种存储方式:sessionStorage和localStorage.sessionStorage用于本地存储一个会话中的数据,这些数据只有在同一个会话中的页 ...

  6. 11.SSH整合

    由于自己学习的版本比较落后,这里就不总结了 在我这个版本整合的过程中的几点问题: 1.在web.xml的配置过程中: <!-- 如果使用的是load获取数据,在jsp页面申请取得数据时才真正的执 ...

  7. scrapy 增量采集

    在做新闻或者其它文章采集到时候,只想采集最新发布的信息,之前采集过得就不要再采集了,从而达到增量采集到需求 scrapy-deltafetch,是一个用于解决爬虫去重问题的第三方插件. scrapy- ...

  8. python打包工具distutils、setuptools的使用

    python中安装包的方式有很多种: 源码包:python setup.py install 在线安装:pip install 包名(linux) / easy_install 包名(window) ...

  9. 2019 Petrozavodsk Winter Camp, Yandex Cup C. Diverse Singing 上下界网络流

    建图一共建四层 第一层为N个歌手 第二层为{pi,li} 第三层为{si,li} 第四层为M首歌 除了S和第一层与第三层与T之间的边为[1,INF] 其他边均为[0,1] #include<bi ...

  10. JavaScript 基础知识梳理——数据类型

    JavaScript的数据类型公有六种,ES6又新增了第七种Symbol类型的值. 数值(number) 字符串(string) 布尔值(boolean) undefined null 对象(obje ...