參照
https://www.zabbix.org/wiki/Docs/howto/mysql_partition#partition_create
注意:zabbix 啓用分區表後需要關閉Housekeeper
分區的過程其實很簡單,按着做就是。
假設你當前在/root目錄
mkdir Partitioning
cd Partitioning
wget wget https://www.zabbix.org/mw/images/1/10/Partitioning.zip
unzip Partitioning.zip
查看目錄
[root@gt-zabbix Partitioning]# ll
total 36
-rw-r--r-- 1 root root 8021 Jun 11 2019 partition_create.sql
-rw-r--r-- 1 root root 2383 Jun 11 2019 partition_delete.sql
-rw-r--r-- 1 root root 5547 Dec 11 19:58 Partitioning.zip
-rw-r--r-- 1 root root 1063 Dec 11 20:05 partition_maintenance_all.sh
-rw-r--r-- 1 root root 750 Jun 3 2019 partition_maintenance_all.sql
-rw-r--r-- 1 root root 683 Jun 11 2019 partition_maintenance.sql
-rw-r--r-- 1 root root 3604 Jun 11 2019 partition_verify.sql
執行
mysql < partition_create.sql
mysql < partition_maintenance_all.sql
想看數據庫的存儲過程
MariaDB [(none)]> show procedure status;
+--------+---------------------------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| Db | Name | Type | Definer | Modified | Created | Security_type | Comment | character_set_client | collation_connection | Database Collation |
+--------+---------------------------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| zabbix | partition_create | PROCEDURE | root@localhost | 2019-12-11 18:56:37 | 2019-12-11 18:56:37 | DEFINER | | utf8 | utf8_general_ci | utf8_general_ci |
| zabbix | partition_drop | PROCEDURE | root@localhost | 2019-12-11 18:56:56 | 2019-12-11 18:56:56 | DEFINER | | utf8 | utf8_general_ci | utf8_general_ci |
| zabbix | partition_maintenance | PROCEDURE | root@localhost | 2019-12-11 18:57:08 | 2019-12-11 18:57:08 | DEFINER | | utf8 | utf8_general_ci | utf8_general_ci |
| zabbix | partition_maintenance_all | PROCEDURE | root@localhost | 2019-12-11 19:39:48 | 2019-12-11 19:39:48 | DEFINER | | utf8 | utf8_general_ci | utf8_general_ci |
| zabbix | partition_verify | PROCEDURE | root@localhost | 2019-12-11 20:13:44 | 2019-12-11 20:13:44 | DEFINER | | utf8 | utf8_general_ci | utf8_general_ci |
+--------+---------------------------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
5 rows in set (0.01 sec)
如果要看過程的創建代碼:
MariaDB [(none)]> use zabbix;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [zabbix]> show create procedure partition_maintenance_all;
+---------------------------+----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+--------------------+
| Procedure | sql_mode | Create Procedure | character_set_client | collation_connection | Database Collation |
+---------------------------+----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+--------------------+
| partition_maintenance_all | | CREATE DEFINER=`root`@`localhost` 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 | utf8 | utf8_general_ci | utf8_general_ci |
+---------------------------+----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+--------------------+
1 row in set (0.00 sec)
自動執行分表腳本:
[root@gt-zabbix Partitioning]# cat partition_maintenance_all.sh
#!/bin/bash
echo 'Partitioned table maintenance tasks begin at '`date +%Y%m%d%H%M%S`'.' > /tmp/partition_maintenance_all_mail.tmp
echo '' >> /tmp/partition_maintenance_all_mail.tmp
mysql -D zabbix -e 'CALL partition_maintenance_all("zabbix");' >> /tmp/partition_maintenance_all_mail.tmp 2>&1
echo '' >> /tmp/partition_maintenance_all_mail.tmp
echo 'Partitioned table maintenance tasks finish at '`date +%Y%m%d%H%M%S`'.' >> /tmp/partition_maintenance_all_mail.tmp
#cat /tmp/partition_maintenance_all_mail.tmp | mailx -r '[email protected]' -s 'Partitioned table maintenance' [email protected]
#CURL_DATA="{
# \"content\": \""`sed ":a;N;s/\n/<br \/>/;s/\t/ /g;ta" /tmp/partition_maintenance_all_mail.tmp`"\",
# \"sender\": \"[email protected]\",
# \"subject\": \"Partitioned table maintenance\",
# \"tos\": [
# \"[email protected]\"
# ]
#}
#"
#curl -X POST --header "Content-Type: application/json" --header "Accept: */*" -d "$CURL_DATA" "http://10.89.139.46:8088/api/v2/notification/email/send?token=【token值】"
結合我前面文章寫的python發郵箱腳本可實現把執行結果發送了郵箱
https://blog.csdn.net/h106140873/article/details/97772503
/usr/lib/zabbix/alertscripts/send.py '[email protected]' 'partition_maintenance_all_mail' "`cat /tmp/partition_maintenance_all_mail.tmp`"
創建定時執行任務crontab -euroot
[root@gt-zabbix Partitioning]# crontab -luroot
#* * * * * command
#分 時 日 月 周 命令
#第1列表示分鐘1~59 每分鐘用*或者 */1表示
#第2列表示小時1~23(0表示0點)
#第3列表示日期1~31
#第4列表示月份1~12
#第5列標識號星期0~6(0表示星期天)
#第6列要運行的命令
#每天1點30分鐘執行一次同步
30 1 * * * /usr/bin/sh /root/Partitioning/partition_maintenance_all.sh