视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Zabbix优化之必杀技-表分区_MySQL
2020-11-09 19:14:55 责编:小采
文档
 时间2014-05-06

作者itnihao

邮箱itnihao@qq.com

博客http://www.itnihao.com

如需引用,请注明以上信息,谢谢合作

前言,使用zabbix最大的瓶颈在于数据库,维护好zabbix的数据存储,告警,即能够很好的应用zabbix去构建监控系统。本文所讲的正是数据存储部分。本文所针对的用户,需要对zabbix有一定概念,对MySQL熟悉,掌握存储过程的书写,对zabbix数据库字段熟悉

本部分内容来自本人的新书,作为对新书分表章节的部分补充,书名叫《zabbix监控系统》,将于2014-06与读者面市。书的章节目录已经放在github上面

https://github.com/itnihao/zabbix-book/blob/master/README.md

Zabbix中历史数据的

zabbix对数据将数据存于数据库,其主要将历史数据存于history和trends的2个表中,如下

1)历史数据的表

2)警告日志数据的表

History表结构

mysql> show create table history/G;*************************** 1. row *************************** Table: historyCreate Table: CREATE TABLE `history` (`itemid` bigint(20) unsigned NOT NULL,`clock` int(11) NOT NULL DEFAULT '0',`value` double(16,4) NOT NULL DEFAULT '0.0000',`ns` int(11) NOT NULL DEFAULT '0',KEY `history_1` (`itemid`,`clock`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mysql> show create table history_str/G; Table: history_strCreate Table: CREATE TABLE `history_str` (`itemid` bigint(20) unsigned NOT NULL,`clock` int(11) NOT NULL DEFAULT '0',`value` varchar(255) NOT NULL DEFAULT '',`ns` int(11) NOT NULL DEFAULT '0',KEY `history_str_1` (`itemid`,`clock`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mysql> show create table history_str_sync /G;*************************** 1. row *************************** Table: history_str_syncCreate Table: CREATE TABLE `history_str_sync` (`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,`nodeid` int(11) NOT NULL,`itemid` bigint(20) unsigned NOT NULL,`clock` int(11) NOT NULL DEFAULT '0',`value` varchar(255) NOT NULL DEFAULT '',`ns` int(11) NOT NULL DEFAULT '0',PRIMARY KEY (`id`),KEY `history_str_sync_1` (`nodeid`,`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mysql> show create table history_sync /G;*************************** 1. row *************************** Table: history_syncCreate Table: CREATE TABLE `history_sync` (`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,`nodeid` int(11) NOT NULL,`itemid` bigint(20) unsigned NOT NULL,`clock` int(11) NOT NULL DEFAULT '0',`value` double(16,4) NOT NULL DEFAULT '0.0000',`ns` int(11) NOT NULL DEFAULT '0',PRIMARY KEY (`id`),KEY `history_sync_1` (`nodeid`,`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mysql> show create table history_text /G;*************************** 1. row *************************** Table: history_textCreate Table: CREATE TABLE `history_text` (`id` bigint(20) unsigned NOT NULL,`itemid` bigint(20) unsigned NOT NULL,`clock` int(11) NOT NULL DEFAULT '0',`value` text NOT NULL,`ns` int(11) NOT NULL DEFAULT '0',PRIMARY KEY (`id`),UNIQUE KEY `history_text_2` (`itemid`,`id`),KEY `history_text_1` (`itemid`,`clock`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mysql> show create table history_log/G;*************************** 1. row *************************** Table: history_logCreate Table: CREATE TABLE `history_log` (`id` bigint(20) unsigned NOT NULL,`itemid` bigint(20) unsigned NOT NULL,`clock` int(11) NOT NULL DEFAULT '0',`timestamp` int(11) NOT NULL DEFAULT '0',`source` varchar() NOT NULL DEFAULT '',`severity` int(11) NOT NULL DEFAULT '0',`value` text NOT NULL,`logeventid` int(11) NOT NULL DEFAULT '0',`ns` int(11) NOT NULL DEFAULT '0',PRIMARY KEY (`id`),UNIQUE KEY `history_log_2` (`itemid`,`id`),KEY `history_log_1` (`itemid`,`clock`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mysql> show create table history_uint /G;*************************** 1. row *************************** Table: history_uintCreate Table: 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=utf8mysql> show create table history_uint_sync/G;*************************** 1. row *************************** Table: history_uint_syncCreate Table: CREATE TABLE `history_uint_sync` (`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,`nodeid` int(11) NOT NULL,`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',PRIMARY KEY (`id`),KEY `history_uint_sync_1` (`nodeid`,`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8

trends表结构

mysql> show create table trends/G;*************************** 1. row *************************** Table: trendsCreate Table: CREATE TABLE `trends` (`itemid` bigint(20) unsigned NOT NULL,`clock` int(11) NOT NULL DEFAULT '0',`num` int(11) NOT NULL DEFAULT '0',`value_min` double(16,4) NOT NULL DEFAULT '0.0000',`value_avg` double(16,4) NOT NULL DEFAULT '0.0000',`value_max` double(16,4) NOT NULL DEFAULT '0.0000',PRIMARY KEY (`itemid`,`clock`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mysql> show create table trends_uint/G;*************************** 1. row *************************** Table: trends_uintCreate Table: CREATE TABLE `trends_uint` (`itemid` bigint(20) unsigned NOT NULL,`clock` int(11) NOT NULL DEFAULT '0',`num` int(11) NOT NULL DEFAULT '0',`value_min` bigint(20) unsigned NOT NULL DEFAULT '0',`value_avg` bigint(20) unsigned NOT NULL DEFAULT '0',`value_max` bigint(20) unsigned NOT NULL DEFAULT '0',PRIMARY KEY (`itemid`,`clock`)) ENGINE=InnoDB DEFAULT CHARSET=utf8

housekeeper表结构

mysql> show create table housekeeper/G;*************************** 1. row *************************** Table: housekeeperCreate Table: CREATE TABLE `housekeeper` (`housekeeperid` bigint(20) unsigned NOT NULL,`tablename` varchar() NOT NULL DEFAULT '',`field` varchar() NOT NULL DEFAULT '',`value` bigint(20) unsigned NOT NULL,PRIMARY KEY (`housekeeperid`)) ENGINE=InnoDB DEFAULT CHARSET=utf8

尽管将housekeeper功能已经关闭,但zabbix-server和WEB前端仍然会记录数据到housekeeper表,这里为了防止写入数据,将其表的引擎设置为BLACKHOLE,使其不可写。

mysql>ALTER TABLE housekeeper ENGINE = BLACKHOLE;
mysql> show create table housekeeper/G;*************************** 1. row *************************** Table: housekeeperCreate Table: CREATE TABLE `housekeeper` (`housekeeperid` bigint(20) unsigned NOT NULL,`tablename` varchar() NOT NULL DEFAULT '',`field` varchar() NOT NULL DEFAULT '',`value` bigint(20) unsigned NOT NULL,PRIMARY KEY (`housekeeperid`)) ENGINE=BLACKHOLE DEFAULT CHARSET=utf8

查看索引

mysql> show index from history/G;

如下表所示

改变history_text表结构

mysql> show create table history_text/G;

*************************** 1. row ***************************

Table: history_text

Create Table: CREATE TABLE `history_text` (

`id` bigint(20) unsigned NOT NULL,

`itemid` bigint(20) unsigned NOT NULL,

`clock` int(11) NOT NULL DEFAULT '0',

`value` text NOT NULL,

`ns` int(11) NOT NULL DEFAULT '0',

PRIMARY KEY (`id`),

UNIQUE KEY `history_text_2` (`itemid`,`id`),

KEY `history_text_1` (`itemid`,`clock`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8

mysql> Alter table history_text drop primary key, add index (id), drop index history_text_2, add index history_text_2 (itemid, id);

mysql> show create table history_text/G;

*************************** 1. row ***************************

Table: history_text

Create Table: CREATE TABLE `history_text` (

`id` bigint(20) unsigned NOT NULL,

`itemid` bigint(20) unsigned NOT NULL,

`clock` int(11) NOT NULL DEFAULT '0',

`value` text NOT NULL,

`ns` int(11) NOT NULL DEFAULT '0',

KEY `history_text_1` (`itemid`,`clock`),

KEY `id` (`id`), #原来的PRIMARY KEY

KEY `history_text_2` (`itemid`,`id`) #原来的UNIQUE KEY

) ENGINE=InnoDB DEFAULT CHARSET=utf8

改变history_log表结构

mysql> show create table history_log/G;

*************************** 1. row ***************************

Table: history_log

Create Table: CREATE TABLE `history_log` (

`id` bigint(20) unsigned NOT NULL,

`itemid` bigint(20) unsigned NOT NULL,

`clock` int(11) NOT NULL DEFAULT '0',

`timestamp` int(11) NOT NULL DEFAULT '0',

`source` varchar() NOT NULL DEFAULT '',

`severity` int(11) NOT NULL DEFAULT '0',

`value` text NOT NULL,

`logeventid` int(11) NOT NULL DEFAULT '0',

`ns` int(11) NOT NULL DEFAULT '0',

PRIMARY KEY (`id`),

UNIQUE KEY `history_log_2` (`itemid`,`id`),

KEY `history_log_1` (`itemid`,`clock`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8

mysql> Alter table history_log drop primary key, add index (id), drop index history_log_2, add index history_log_2 (itemid, id);

mysql> show create table history_log/G;

*************************** 1. row ***************************

Table: history_log

Create Table: CREATE TABLE `history_log` (

`id` bigint(20) unsigned NOT NULL,

`itemid` bigint(20) unsigned NOT NULL,

`clock` int(11) NOT NULL DEFAULT '0',

`timestamp` int(11) NOT NULL DEFAULT '0',

`source` varchar() NOT NULL DEFAULT '',

`severity` int(11) NOT NULL DEFAULT '0',

`value` text NOT NULL,

`logeventid` int(11) NOT NULL DEFAULT '0',

`ns` int(11) NOT NULL DEFAULT '0',

KEY `history_log_1` (`itemid`,`clock`),

KEY `id` (`id`), #原来的PRIMARY KEY

KEY `history_log_2` (`itemid`,`id`) #原来的UNIQUE KEY

) ENGINE=InnoDB DEFAULT CHARSET=utf8

表分区的过程

防盗链,来自博客http://www.itnihao.com

创建存储过程

分区创建的存储过程

DELIMITER $$

CREATEPROCEDURE`partition_create`(SCHEMANAMEVARCHAR(),TABLENAMEVARCHAR(),PARTITIONNAMEVARCHAR(),CLOCKINT)

BEGIN

/*

SCHEMANAME = The DB schema in which to make changes

TABLENAME = The table with partitions to potentially delete

PARTITIONNAME = The name of the partition to create

*/

/*

Verify that the partition does not already exist

*

DECLARERETROWSINT;

SELECTCOUNT(1)INTORETROWS

FROMinformation_schema.partitions

WHEREtable_schema=SCHEMANAMEANDTABLE_NAME=TABLENAMEANDpartition_name=PARTITIONNAME;

IFRETROWS=0THEN

/*

1. Print a message indicating that a partition was created

2. Create the SQL to create the partition

3. Execute the SQL from #2.

*/

SELECTCONCAT("partition_create(",SCHEMANAME,",",TABLENAME,",",PARTITIONNAME,",",CLOCK,")")ASmsg;

SET@SQL=CONCAT('ALTER TABLE ',SCHEMANAME,'.',TABLENAME,' ADD PARTITION (PARTITION ',PARTITIONNAME,' VALUES LESS THAN (',CLOCK,'));');

PREPARESTMTFROM@SQL;

EXECUTESTMT;

DEALLOCATEPREPARESTMT;

ENDIF;

END$$

DELIMITER ;

分区删除的存储过程

DELIMITER $$

CREATEPROCEDURE`partition_drop`(SCHEMANAMEVARCHAR(),TABLENAMEVARCHAR(),DELETE_BELOW_PARTITION_DATEBIGINT)

BEGIN

/*

SCHEMANAME = The DB schema in which to make changes

TABLENAME = The table with partitions to potentially delete

DELETE_BELOW_PARTITION_DATE = Delete any partitions with names that are dates older than this one (yyyy-mm-dd)

*/

DECLAREdoneINTDEFAULTFALSE;

DECLAREdrop_part_nameVARCHAR(16);

/*

Get a list of all the partitions that are older than the date

in DELETE_BELOW_PARTITION_DATE. All partitions are prefixed with

a "p", so use SUBSTRING TO get rid of that character.

*/

DECLAREmyCursor CURSORFOR

SELECTpartition_name

FROMinformation_schema.partitions

WHEREtable_schema=SCHEMANAMEANDTABLE_NAME=TABLENAMEANDCAST(SUBSTRING(partition_nameFROM2)ASUNSIGNED)

DECLARECONTINUE HANDLERFORNOTFOUNDSETdone=TRUE;

/*

Create the basics for when we need to drop the partition. Also, create

@drop_partitions to hold a comma-delimited list of all partitions that

should be deleted.

*/

SET@alter_header=CONCAT("ALTER TABLE ",SCHEMANAME,".",TABLENAME," DROP PARTITION ");

SET@drop_partitions="";

/*

Start looping through all the partitions that are too old.

*/

OPENmyCursor;

read_loop: LOOP

FETCH myCursorINTOdrop_part_name;

IFdoneTHEN

LEAVE read_loop;

ENDIF;

SET@drop_partitions=IF(@drop_partitions="",drop_part_name,CONCAT(@drop_partitions,",",drop_part_name));

ENDLOOP;

IF@drop_partitions !=""THEN

/*

1. Build the SQL to drop all the necessary partitions.

2. Run the SQL to drop the partitions.

3. Print out the table partitions that were deleted.

*/

SET@full_sql=CONCAT(@alter_header,@drop_partitions,";");

PREPARESTMTFROM@full_sql;

EXECUTESTMT;

DEALLOCATEPREPARESTMT;

SELECTCONCAT(SCHEMANAME,".",TABLENAME)AS`table`,@drop_partitionsAS`partitions_deleted`;

ELSE

/*

No partitions are being deleted, so print out "N/A" (Not

applicable) to indicatethat no changes were made.

*/

SELECTCONCAT(SCHEMANAME,".",TABLENAME)AS`table`,"N/A"AS`partitions_deleted`;

ENDIF;

END$$

DELIMITER ;

分区维护的存储过程

DELIMITER $$

CREATEPROCEDURE`partition_maintenance`(SCHEMA_NAMEVARCHAR(32),TABLE_NAMEVARCHAR(32),KEEP_DATA_DAYSINT,HOURLY_INTERVALINT,CREATE_NEXT_INTERVALSINT)

BEGIN

DECLAREOLDER_THAN_PARTITION_DATEVARCHAR(16);

DECLAREPARTITION_NAMEVARCHAR(16);

DECLARELESS_THAN_TIMESTAMPINT;

DECLARECUR_TIMEINT;

CALLpartition_verify(SCHEMA_NAME,TABLE_NAME,HOURLY_INTERVAL);

SETCUR_TIME=UNIX_TIMESTAMP(DATE_FORMAT(NOW(),'%Y-%m-%d 00:00:00'));

IFDATE(NOW())='2014-04-01'THEN

SETCUR_TIME=UNIX_TIMESTAMP(DATE_FORMAT(DATE_ADD(NOW(),INTERVAL1DAY),'%Y-%m-%d 00:00:00'));

ENDIF;

SET@__interval=1;

create_loop: LOOP

IF@__interval>CREATE_NEXT_INTERVALSTHEN

LEAVE create_loop;

ENDIF;

SETLESS_THAN_TIMESTAMP=CUR_TIME+(HOURLY_INTERVAL*@__interval*3600);

SETPARTITION_NAME=FROM_UNIXTIME(CUR_TIME+HOURLY_INTERVAL*(@__interval-1)*3600,'p%Y%m%d%H00');

CALLpartition_create(SCHEMA_NAME,TABLE_NAME,PARTITION_NAME,LESS_THAN_TIMESTAMP);

SET@__interval=@__interval+1;

ENDLOOP;

SETOLDER_THAN_PARTITION_DATE=DATE_FORMAT(DATE_SUB(NOW(),INTERVALKEEP_DATA_DAYSDAY),'%Y%m%d0000');

CALLpartition_drop(SCHEMA_NAME,TABLE_NAME,OLDER_THAN_PARTITION_DATE);

END$$

DELIMITER ;

分区校验的存储过程

DELIMITER $$

CREATEPROCEDURE`partition_verify`(SCHEMANAMEVARCHAR(),TABLENAMEVARCHAR(),HOURLYINTERVALINT(11))

BEGIN

DECLAREPARTITION_NAMEVARCHAR(16);

DECLARERETROWSINT(11);

DECLAREFUTURE_TIMESTAMPTIMESTAMP;

/** Check if any partitions exist for the given SCHEMANAME.TABLENAME. */

SELECTCOUNT(1)INTORETROWS

FROMinformation_schema.partitions

WHEREtable_schema=SCHEMANAMEANDTABLE_NAME=TABLENAMEANDpartition_nameISNULL;

/* * If partitions do not exist, go ahead and partition the table*/

IFRETROWS=1THEN

/*

* Take the current date at 00:00:00 and add HOURLYINTERVAL to it. This is the timestamp below which we will store values.

* We begin partitioning based on the beginning of a day. This is because we don't want to generate a random partition

* that won't necessarily fall in line with the desired partition naming (ie: if the hour interval is 24 hours, we could

* end up creating a partition now named "p201403270600" when all other partitions will be like "p201403280000").

*/

SETFUTURE_TIMESTAMP=TIMESTAMPADD(HOUR,HOURLYINTERVAL,CONCAT(CURDATE()," ",'00:00:00'));

SETPARTITION_NAME=DATE_FORMAT(CURDATE(),'p%Y%m%d%H00');

-- Create the partitioning query

SET@__PARTITION_SQL=CONCAT("ALTER TABLE ",SCHEMANAME,".",TABLENAME," PARTITION BY RANGE(`clock`)");

SET@__PARTITION_SQL=CONCAT(@__PARTITION_SQL,"(PARTITION ",PARTITION_NAME," VALUES LESS THAN (",UNIX_TIMESTAMP(FUTURE_TIMESTAMP),"));");

-- Run the partitioning query

PREPARESTMTFROM@__PARTITION_SQL;

EXECUTESTMT;

DEALLOCATEPREPARESTMT;

ENDIF;

END$$

DELIMITER ;

使用存储过程

mysql>CALLpartition_maintenance('','',,,)

例如,zabbix.history保存28天,表区间的时间为24小时,预留14天的区间。

mysql> CALL partition_maintenance('zabbix', 'history', 28, 24, 14);+-----------------------------------------------------------+| msg |+-----------------------------------------------------------+| partition_create(zabbix,history,p201405070000,1399478400) |+-----------------------------------------------------------+1 row in set (18.75 sec)+-----------------------------------------------------------+| msg |+-----------------------------------------------------------+| partition_create(zabbix,history,p201405080000,13995800) |+-----------------------------------------------------------+1 row in set (19.08 sec)+-----------------------------------------------------------+| msg |+-----------------------------------------------------------+| partition_create(zabbix,history,p201405090000,1399651200) |+-----------------------------------------------------------+1 row in set (19.16 sec)+-----------------------------------------------------------+| msg |+-----------------------------------------------------------+| partition_create(zabbix,history,p201405100000,1399737600) |+-----------------------------------------------------------+1 row in set (19.27 sec)+-----------------------------------------------------------+| msg |+-----------------------------------------------------------+| partition_create(zabbix,history,p201405110000,1399824000) |+-----------------------------------------------------------+1 row in set (19.42 sec)+-----------------------------------------------------------+| msg |+-----------------------------------------------------------+| partition_create(zabbix,history,p201405120000,1399910400) |+-----------------------------------------------------------+1 row in set (19.52 sec)+-----------------------------------------------------------+| msg |+-----------------------------------------------------------+| partition_create(zabbix,history,p201405130000,1399996800) |+-----------------------------------------------------------+1 row in set (19.63 sec)+-----------------------------------------------------------+| msg |+-----------------------------------------------------------+| partition_create(zabbix,history,p201405140000,1400083200) |+-----------------------------------------------------------+1 row in set (19. sec)+-----------------------------------------------------------+| msg |+-----------------------------------------------------------+| partition_create(zabbix,history,p201405150000,1400169600) |+-----------------------------------------------------------+1 row in set (20.00 sec)+-----------------------------------------------------------+| msg |+-----------------------------------------------------------+| partition_create(zabbix,history,p201405160000,1400256000) |+-----------------------------------------------------------+1 row in set (20.07 sec)+-----------------------------------------------------------+| msg |+-----------------------------------------------------------+| partition_create(zabbix,history,p201405170000,1400342400) |+-----------------------------------------------------------+1 row in set (20.13 sec)+-----------------------------------------------------------+| msg |+-----------------------------------------------------------+| partition_create(zabbix,history,p201405180000,1400428800) |+-----------------------------------------------------------+1 row in set (20.20 sec)+-----------------------------------------------------------+| msg |+-----------------------------------------------------------+| partition_create(zabbix,history,p201405190000,1400515200) |+-----------------------------------------------------------+1 row in set (20.31 sec)+----------------+--------------------+| table| partitions_deleted |+----------------+--------------------+| zabbix.history | N/A|+----------------+--------------------+1 row in set (20.42 sec)Query OK, 0 rows affected (20.42 sec)

创建存储过程

DELIMITER $$CREATE PROCEDURE `partition_maintenance_all`(SCHEMA_NAME VARCHAR(32))BEGIN	CALL partition_maintenance(SCHEMA_NAME, 'history', 28, 24, 14);	CALL partition_maintenance(SCHEMA_NAME, 'history_log', 28, 24, 14);	CALL partition_maintenance(SCHEMA_NAME, 'history_str', 28, 24, 14);	CALL partition_maintenance(SCHEMA_NAME, 'history_text', 28, 24, 14);	CALL partition_maintenance(SCHEMA_NAME, 'history_uint', 28, 24, 14);	CALL partition_maintenance(SCHEMA_NAME, 'trends', 730, 24, 14);	CALL partition_maintenance(SCHEMA_NAME, 'trends_uint', 730, 24, 14);END$$DELIMITER ;

调用存储过程

mysql> CALL partition_maintenance_all('zabbix');+----------------+--------------------+| table| partitions_deleted |+----------------+--------------------+| zabbix.history | N/A|+----------------+--------------------+1 row in set (0.01 sec)............+--------------------+--------------------+| table| partitions_deleted |+--------------------+--------------------+| zabbix.trends_uint | N/A|+--------------------+--------------------+1 row in set (22.41 sec)Query OK, 0 rows affected, 1 warning (22.41 sec)mysql>

查看表结构

mysql> show create table history/G;*************************** 1. row *************************** Table: historyCreate Table: CREATE TABLE `history` (`itemid` bigint(20) unsigned NOT NULL,`clock` int(11) NOT NULL DEFAULT '0',`value` double(16,4) NOT NULL DEFAULT '0.0000',`ns` int(11) NOT NULL DEFAULT '0',KEY `history_1` (`itemid`,`clock`)) ENGINE=InnoDB DEFAULT CHARSET=utf8/*!50100 PARTITION BY RANGE (`clock`)(PARTITION p201405060000 VALUES LESS THAN (1399392000) ENGINE = InnoDB, PARTITION p201405070000 VALUES LESS THAN (1399478400) ENGINE = InnoDB, PARTITION p201405080000 VALUES LESS THAN (13995800) ENGINE = InnoDB, PARTITION p201405090000 VALUES LESS THAN (1399651200) ENGINE = InnoDB, PARTITION p201405100000 VALUES LESS THAN (1399737600) ENGINE = InnoDB, PARTITION p201405110000 VALUES LESS THAN (1399824000) ENGINE = InnoDB, PARTITION p201405120000 VALUES LESS THAN (1399910400) ENGINE = InnoDB, PARTITION p201405130000 VALUES LESS THAN (1399996800) ENGINE = InnoDB, PARTITION p201405140000 VALUES LESS THAN (1400083200) ENGINE = InnoDB, PARTITION p201405150000 VALUES LESS THAN (1400169600) ENGINE = InnoDB, PARTITION p201405160000 VALUES LESS THAN (1400256000) ENGINE = InnoDB, PARTITION p201405170000 VALUES LESS THAN (1400342400) ENGINE = InnoDB, PARTITION p201405180000 VALUES LESS THAN (1400428800) ENGINE = InnoDB, PARTITION p201405190000 VALUES LESS THAN (1400515200) ENGINE = InnoDB) */

添加定时任务

1 1 * * * mysql-uzabbix -pzabbix zabbix -e "CALL partition_maintenance_all('zabbix')"

参考文档

本文参考https://www.zabbix.org/wiki/Docs/howto/mysql_partition写成。

下载本文
显示全文
专题