MySQL计划任务实现定期备份(mysql计划任务备份)
MySQL数据库应用比较广泛,无论是在小型企业还是大型企业,都有使用MySQL数据库,生产环境中需要对数据库进行定期备份。对MySQL进行定期备份,一般有很多方法可以实现,如使用 MySql dump 实现定期备份;使用mysqldump 脚本实现定期备份;使用crontab实现定期备份;使用MySQL 计划任务实现定期备份。
其中,使用MySQL计划任务实现定期备份的方法比较实用,开发人员不需要再围绕某一时刻定时设置任务执行,留给MySQL服务器处理的相对较少,对于程序开发人员来说比较友好。下面,我们介绍使用MySQL计划任务实现定期备份的步骤:
1. 使用MySQL客户端登录MySQL,执行查询:
SHOW VARIABLES LIKE 'event_scheduler';
2. 如果变量event_scheduler的值为ON,说明MySQL计划任务是开启的,否则,需要开启MySQL计划任务:
SET GLOBAL event_scheduler = ON;
3. 创建一个存储过程备份数据库:
“`sql
DELIMITER $$
DROP PROCEDURE IF EXISTS `backup_database` $$
CREATE PROCEDURE `backup_database`()
BEGIN
DECLARE i INT DEFAULT 0;
DECLARE dbName VARCHAR(20);
DECLARE tables_found INT DEFAULT 0;
DECLARE no_more_tables INT DEFAULT 0;
CREATE TABLE ob (
dbName VARCHAR(20) NOT NULL
);
INSERT INTO ob (dbName)
SELECT DISTINCT(table_schema)
FROM INFORMATION_SCHEMA.TABLES
WHERE table_type = ‘BASE TABLE’ AND table_schema’mysql’;
SELECT COUNT(*) INTO tables_found FROM ob;
SET i = 0;
REPEAT
SET i = i + 1;
SET no_more_tables = 1;
SELECT dbName INTO dbName FROM ob LIMIT i, 1;
IF dbName IS NOT NULL THEN
SET no_more_tables = 0;
END IF;
IF no_more_tables = 0 THEN
SET @sqlstr = CONCAT(‘mysqldump –no-data –single-transaction -u root -p`cat ~/.mysql_root_pwd` ‘, dbName, ‘ > ‘, dbName, ‘.sql’);
PREPARE stmt FROM @sqlstr;
EXECUTE stmt;
SET @sqlstr = NULL;
DEALLOCATE PREPARE stmt;
END IF;
UNTIL no_more_tables = 1
END REPEAT;
DROP TABLE IF EXISTS ob;
END $$
DELIMITER ;
4. 创建一个计划任务:
```sqlCREATE EVENT back_event
ON SCHEDULE EVERY 1 DAYDO
CALL backup_database();
以上步骤,运行正确的话,每天定时执行备份任务。
MySQL计划任务实现定期备份,操作简单,管理方便,常用于生产环境,使用MySQL实现定期备份,可以节省人力成本,提高备份数据保障度。