脚本功能
定时按天删分区
脚本使用示例
定时任务
0 23 * * * sh /appdata/goldendb/auto_drop_part.sh >> /appdata/goldendb/auto_drop_part.log
shell脚本
#! /usr/bin/bash
# created enmo-liujichao LINUX
# auto drop partition
echo "current user: ${USER}"
if [[ -f ~/.profile ]]
then
. ~/.profile
fi
if [[ -f ~/.bash_profile ]]
then
. ~/.bash_profile
fi
if [ "${USER}" != "zxmanager" ]
then
echo "ERROR: This script must be run as zxmanager"
echo "current user: ${USER}"
exit 98
fi
STTIME=`date "+%Y-%m-%d %H:%M:%S"`
echo $STTIME
echo "begin drop partition..."
mysql -u$dbproxy_user -p$dbproxy_password -h$ip_proxy -P$dbproxy_port -Ddbmt -e"call P_drop_partition('xxx','CHKCDR',6);"
存储过程
----------------------------------------
DDL:
CREATE DEFINER=`root`@`%` PROCEDURE `p_drop_partition`(P_SCHEMA in char(50),P_TABLE_NAME in char(50),P_EXPIRE_DAY in int)
IS
v_name varchar(500);
nums int DEFAULT 0;
clean_sql VARCHAR(500);
tab_partition_name VARCHAR(100);
i INT DEFAULT 0;
cursor drop_partitions is select CONCAT('ALTER TABLE ',P_SCHEMA,'.',P_TABLE_NAME,' drop PARTITION ',PARTITION_NAME,';'), PARTITION_NAME from INFORMATION_SCHEMA.PARTITIONS where TABLE_SCHEMA= P_SCHEMA and TABLE_NAME= P_TABLE_NAME and to_number(REGEXP_SUBSTR(PARTITION_NAME ,'[0-9]{8}$')) < = to_number(DATE_FORMAT(CURDATE() - INTERVAL P_EXPIRE_DAY DAY, '%Y%m%d')) order by PARTITION_NAME ;
BEGIN
SELECT COUNT(*) FROM INFORMATION_SCHEMA.PARTITIONS where TABLE_SCHEMA= P_SCHEMA and TABLE_NAME= P_TABLE_NAME and to_number(REGEXP_SUBSTR(PARTITION_NAME ,'[0-9]{8}$')) < = to_number(DATE_FORMAT(CURDATE() - INTERVAL P_EXPIRE_DAY DAY, '%Y%m%d')) INTO nums;
INSERT into dbmt.drop_table_partition_log VALUES (user(),P_SCHEMA,P_TABLE_NAME,tab_partition_name,now(),NULL);
SET @pre_sql = clean_sql;
PREPARE STMT1 FROM @pre_sql;
EXECUTE STMT1;
UPDATE dbmt.drop_table_partition_log set end_time=now() WHERE table_schema = P_SCHEMA AND table_name = P_TABLE_NAME AND partition_name = tab_partition_name;
COMMIT;
END WHILE;
DEALLOCATE PREPARE STMT1;
CLOSE drop_partitions;
END
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




