zabbix server优化与迁移

zabbix server优化与迁移

1. 概述

zabbix 系统其实分3个大部分,一个是server本身,另一个是php的httpd服务,第三个是非常需要优化的数据库。公司的zabbix监控主机在3000不到的体量,不优化真的不行。主要说说mysql,其他几个略了,结合zabbix自身的监控数据,参数该调大就调大。

2. mysql 优化导表

2.1 tokudb引擎

重点是这个数据库,设计原因,造成几个表过大。每次insert时间过长造成性能问题,我目前的实践发现tokudb引擎是很好的解决方案,有关tokudb的原理可看https://www.percona.com/software/mysql-database/percona-tokudb 。mysql官方的包是不支持tokudb引擎的,可以下载percona的包,或者是alisql的。我的选择是percona 源码包编译,percona其实是提供rpm安装方式的,但是好像网络有问题总会下载不下来。

有关mysql安装可以参考我之前的文章 https://gqdw.github.io/2017/01/17/mysql-5-7-install/ ,有些不同之处在于percona的包没有带boost ,我是从官网mysql源码包上下载了以后拷过去的,可以用。
先要在系统里设置2个内核参数。

echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

之后要在mysql中激活一下tokudb引擎,

INSTALL PLUGIN tokudb SONAME 'ha_tokudb.so';
INSTALL PLUGIN tokudb_file_map SONAME 'ha_tokudb.so';
INSTALL PLUGIN tokudb_fractal_tree_info SONAME 'ha_tokudb.so';
INSTALL PLUGIN tokudb_fractal_tree_block_map SONAME 'ha_tokudb.so';
INSTALL PLUGIN tokudb_trx SONAME 'ha_tokudb.so';
INSTALL PLUGIN tokudb_locks SONAME 'ha_tokudb.so';
INSTALL PLUGIN tokudb_lock_waits SONAME 'ha_tokudb.so';
INSTALL PLUGIN tokudb_background_job_status SONAME 'ha_tokudb.so';

安装完了SHOW ENGINES 一下。

+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                                    | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
| MyISAM             | YES     | MyISAM storage engine                                                      | NO           | NO   | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                                      | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                                         | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears)             | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Percona-XtraDB, Supports transactions, row-level locking, and foreign keys | YES          | YES  | YES        |
| TokuDB             | YES     | Percona TokuDB Storage Engine with Fractal Tree(tm) Technology             | YES          | YES  | YES        |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                                         | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                                     | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables                  | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                             | NULL         | NULL | NULL       |
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+

可以看到tokudb完美的支持Transactions , XA ,Savepoints ,可以放心使用。早些年其实tokudb还是有明显bug的,用用会崩溃,但是2019年这些不存在了,感谢开源老哥的无私奉献。
另外说一下,硬件需要选择ssd,普通的盘io真的跟不上。

2.2 导数据

之后是导数据,我的做法是跳过几个大表,把小库导入,之后在导2个大表。

  1. trends
  2. trends_uint

history的几个表不用导,但是表结构需要建好,而且这几个表一定要做表分区,不然管理的时候会有些麻烦。
导出表需要写几个小脚本,写个for,done ,so easy:

day=0329
mkdir $day
for t in `cat tabs`
do
    echo "mysqldump zabbix $t > $day/$t.sql"
    mysqldump --set-gtid-purged=OFF zabbix $t > $day/$t.sql 
done

我这里加了--set-gtid-purged=OFF,不然会把gtid给带上。

恢复的时候就是这样:

for t in `cat tabs`
do
    echo "mysql  zabbix <  0329/$t.sql" 
    mysql -uzabbix -pzabbixpass zabbix <  0329/$t.sql
done

mysqldump只导表结构的参数是-d 。

扫描二维码关注公众号,回复: 5714900 查看本文章

导历史数据的时候也有个技巧,把dump出来的sql修改一下,去掉

DROP TABLE IF EXISTS `trends`;
LOCK TABLES `trends` WRITE;

去掉lock table可以在线导。总不能停服务导吧~

3. 总结

细节是魔鬼,mysql这块虽然是比oracle操作要简单不少,但是做起来还是一个熟练度问题,搞不好很多时候就要重头搞,可能数据也给搞没了,所以做的时候需要思路很清醒,很多细节问题需要注意。

猜你喜欢

转载自www.cnblogs.com/gqdw/p/10625534.html
今日推荐