1.zabbix mysql 目录清单

--basedir=/usr/local/web/mysql
--datadir=/data/mysql
--log-error=/data/mysql/syscent.bc.com.err
--pid-file=/data/mysql/syscent.bc.com.pid
--socket=/dev/shm/mysql.sock --port=3306
Zabbix 数据文件目录
/data/mysql/zabbix Source server:192.168.1.2 3306
Target server:192.168.1.4 3306

2.关闭zabbix

/usr/local/zabbix/sbin/zabbix_server stop

3. zabbix配置文件修改

/usr/local/zabbix/etc/zabbix_server.conf
DBName=zabbix
DBUser=zabbix
DBPassword=
DBPort=3306
ListenIP=192.168.1.4

4.关闭mysql

Service mysqld stop

5. 数据文件拷贝

Scp /data/mysql/*    xxx.xxx.xxx.xxx:/Mysql数据文件目录

或者使用 

Innobackupex迁移

6. 启动Mysql

配置文件修改:
innodb_flush_log_at_trx_commit=0 or 2 建议0
Sync_binlog=1000
Mysqld_safe --defaults-file=/usr/local/mysql/my3306.cnf &

7. Mysql数据表导出

mysqldump -uroot -p -P3306 -h127.0.0.1 --databases zabbix --tables history>history.sql
mysqldump -uroot -p -P3306 -h127.0.0.1 --databases zabbix --tables history_str>history_str.sql
mysqldump -uroot -p -P3306 -h127.0.0.1 --databases zabbix --tables history_text>history_text.sql
mysqldump -uroot -p -P3306 -h127.0.0.1 --databases zabbix --tables history_uint>history_uint.sql

8.Mysql创建分区表

History
History_str
History_uint
History_text 改成月分区表 CREATE TABLE history_uint(
itemid bigint(20) unsigned NOT NULL,
clock int(11) NOT NULL DEFAULT '',
value bigint(20) unsigned NOT NULL DEFAULT '',
Ns int(11) NOT NULL DEFAULT '',
KEY history_uint_1 (itemid,clock)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
PARTITION BY RANGE(clock)
(
PARTITION p201708 VALUES LESS THAN (1504195200)
ENGINE = INNODB,
PARTITION p201709 VALUES LESS THAN (1506787200)
ENGINE = INNODB,
PARTITION p201710 VALUES LESS THAN (1509465600)
ENGINE = INNODB);
DATA DIRECTORY 根据请况是否添加
分区可以创建到2020,暂时不添加maxvalue
定时任务添加分区 History
History_str
History_uint
History_text
分区操作同上

9.导入分区表

将history.sql,history_str.sql,history_text.sql,history_uint.sql  drop table语句,以及create table 语句删除
然后执行语句,导入数据库

10.启动zabbix

/usr/local/zabbix/sbin/zabbix_server start

11.定时任务删除历史数据

每月3号删除上上月分区,zabbix最大为2月历史数据
10月3号,删除8月分区,增加11月分区 #!/bin/bash
#add by sk
User="zabbix"
Passwd="zabbix"
#zabbix保留1月数据
Date=`date -d "-2 months" +%Y%m`
#添加分区使用
Date_a=`date -d "2 months" +%Y%m`
Date_b=`date -d "1 months" +%Y%m`
Date_t=`date -d "2 months" +%Y-%m`-01
v_time=`date +%s -d $Date_t` $(which mysql) -u${User} -p${Passwd} -Dzabbix -e "
ALTER TABLE history DROP PARTITION p$Date;
ALTER TABLE history_str DROP PARTITION p$Date;
ALTER TABLE history_text DROP PARTITION p$Date;
ALTER TABLE history_uint DROP PARTITION p$Date;
#添加分区如下:
alter table history add partition (partition p$Date_b VALUES LESS THAN ($v_time) ENGINE = INNODB);
alter table history_str add partition (partition p$Date_b VALUES LESS THAN ($v_time) ENGINE = INNODB);
alter table history_text add partition (partition p$Date_b VALUES LESS THAN ($v_time) ENGINE = INNODB);
alter table history_uint add partition (partition p$Date_b VALUES LESS THAN ($v_time) ENGINE = INNODB);
" 脚本参考MYSQL操作语句:
ALTER TABLE history_uint DROP PARTITION p201709;
alter table history_uint add partition (partition p201712 VALUES LESS THAN (1514736000) ENGINE = INNODB);

12.改成分区表原因

历史表数据删除耗费时间
Delete from history_uint where clock<
如果添加optimize table时间就更长
History_uint delete+optimize 保守3小时
删除分区时间较快

zabbix mysql 迁移 增加分区的更多相关文章

  1. Zabbix历史数据库迁移 及分区

    https://blog.csdn.net/hkyw000/article/details/78971201?utm_source=blogxgwz6

  2. zabbix使用mysql数据库 对表分区

    zabbix删除历史数据 mysql 表自动分区.删除 ----2016年终总结 二 zabbix清理历史数据是个比较蛋疼的问题,尤其在监控数据较多时,一方面无法彻底释放历史数据空间,一方面数据库删除 ...

  3. MySQL每天自动增加分区

    有一个表tb_3a_huandan_detail,每天有300W左右的数据.查询太慢了,网上了解了一下,可以做表分区.由于数据较大,所以决定做定时任务每天执行存过自动进行分区. 1.在进行自动增加分区 ...

  4. MySQL迁移[转]

    http://dbarobin.com/2015/09/15/migration-of-mysql-on-different-scenes/ MySQL 迁移方案概览 MySQL 迁移无非是围绕着数据 ...

  5. MySQL的表分区详解

    这篇文章主要介绍了MySQL的表分区,例如什么是表分区.为什么要对表进行分区.表分区的4种类型详解等,需要的朋友可以参考下 一.什么是表分区通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysq ...

  6. MySQL的表分区(转载)

    MySQL的表分区(转载) 一.什么是表分区 通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了. 如:某用户表的记录超过了600万条,那么就可以根据入库日期将表 ...

  7. mysql管理---表分区

    一.什么是表分区 通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了. 如:某用户表的记录超过了600万条,那么就可以根据入库日期将表分区,也可以根据所在地将表分 ...

  8. 删除mysql数据库中表分区数据

    删除mysql数据库中表分区数据 zabbix 几个大表创建了分区,由于磁盘空间告警,特将3月前的分区给予删除. 1.查看表的数据占用磁盘空间情况 2.登录mysql中,查看表的分区情况. 3.删除表 ...

  9. MySQL针对Swap分区的运维注意点

    Linux有很多很好的内存.IO调度机制,但是并不会适用于所有场景.对于运维人员来说,Linux比较让人头疼的一个地方是:它不会因为MySQL很重要就避免将分配给MySQL的地址空间映射到swap上. ...

随机推荐

  1. spring事物的管理方式

    Spring事务配置的五种方式 转载大神总结: https://blog.csdn.net/xuanjiewu/article/details/51604967: 自己总结:这里只总结spring编程 ...

  2. linux 向文本指定位置写入内容

    sed -i "37 r a.txt" test.txt ====== 向test.txt 的第37行后,也就是38行后写入a.txt的内容 sed -i "38i aa ...

  3. 记录一个在线压缩和还原压缩js代码的工具

    packer – javascript 压缩工具 http://dean.edwards.name/packer/ Javascript Beautifier ---可以恢复某些压缩工具压缩的js代码 ...

  4. placeholder设置默认显示

    <textarea rows="4" cols="50" placeholder="请在此处介绍自己..."> </tex ...

  5. SQL中改变列的数据类型

    一.该列非主键.无default约束 直接更新: alter table 表名 alter column 列名 数据类型 二.该列为主键列.无default约束 (1)删除主键 alter table ...

  6. 每天学一点ubuntu指令

    2017-03-06apt-get | dpkg -i | apt-cache | add-apt-repository ppa源 | dpkg -S一.apt 给Ubuntu安装软件的一种命令方式a ...

  7. c# string.format 的简写 $

    var name = "huchao"; var info = $"你是谁,我叫:{name}"; Console.Write(info); Console.R ...

  8. Ubuntu上安装Samba服务器实现家庭共享

    如何在Ubuntu上安装Samba服务器 大多数Linux发行版都包含Samba. 要在Ubuntu上安装Samba,只需运行: sudo apt install samba 要检查您的Samba版本 ...

  9. smarty基本用法

    简介: 1.smarty语法:它是php的一种模板引擎   它的设计特点是:业务逻辑与显示逻辑分离 Smarty的标签都是使用定界符{ }括起来注释:{* 我是Smarty的注释内容 *} <u ...

  10. 原生js添加类名,删除类名

    1.添加类名: document.getElementById("myDiv").classList.add('mystyle'); 2.删除类名: document.getEle ...