zabbix mysql 迁移 增加分区
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 '0', value bigint(20) unsigned NOT NULL DEFAULT '0', Ns int(11) NOT NULL DEFAULT '0', 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小时 删除分区时间较快
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix