mysql如何做计划任务

2023年 8月 10日 71.0k 0

MySQL是目前使用非常广泛的一款数据库管理系统,其功能强大,性能稳定,适用于大型企业应用系统。除了作为数据存储的工具,MySQL还可以通过编写计划任务来定时执行一些操作,例如备份数据、定期清理垃圾数据等。

MySQL支持两种方法来定时执行计划任务:

1. 脚本计划任务
2. 事件调度器

下面分别详细介绍这两种方法的步骤。

1. 脚本计划任务

#!/bin/bash
# backup.sh
# export data
DB_HOST="localhost"
DB_USER="root"
DB_PASS="password"
DB_NAME="db_name"
DATE=$(date +%d-%m-%Y_%H:%M:%S)
DEST="/var/backups/mysql"
mkdir -p "$DEST"
# dump database
echo "Back up the database ${DB_NAME}..."
mysqldump --host="$DB_HOST" --user="$DB_USER" --password="$DB_PASS" --single-transaction --routines "$DB_NAME" | gzip >"$DEST/${DB_NAME}_${DATE}.gz"
echo "Done!"

保存脚本并添加执行权限:

chmod +x /path/to/backup.sh

添加计划任务,打开终端并输入:

crontab -e

在打开的文件中,添加下面一行:

0 0 * * * /path/to/backup.sh >/dev/null 2>&1

此行的意思是,在每天的0点0分备份数据库,将日志输出到/dev/null,即不输出日志。

2. 事件调度器

MySQL的事件调度器是一种内置工具,可以用来在特定时间或特定时间间隔内执行指定的SQL语句或程序。

首先,需要开启事件调度器:

SET GLOBAL event_scheduler = ON;

创建事件:

CREATE EVENT event_name
ON SCHEDULE EVERY 1 DAY
DO
BEGIN
DELETE FROM table_name WHERE date

这个事件的名称为 "event_name",每隔一天执行一次,删除"table_name"表中日期小于30天前的记录。

删除事件:

DROP EVENT event_name;

固定时间执行事件:

CREATE EVENT event_name
ON SCHEDULE AT '2022-07-11 23:50:00'
DO
BEGIN
INSERT INTO table_name (id, name, age) VALUES (1, 'John Doe', 30);
END

这个事件的名称为 "event_name",在指定的日期和时间点执行,插入一条记录到“table_name”表中。

通过这两种方法,我们可以轻松地实现MySQL的计划任务。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论