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. 创建一个计划任务:

```sql
CREATE EVENT back_event
ON SCHEDULE EVERY 1 DAY
DO
CALL backup_database();

以上步骤,运行正确的话,每天定时执行备份任务。

MySQL计划任务实现定期备份,操作简单,管理方便,常用于生产环境,使用MySQL实现定期备份,可以节省人力成本,提高备份数据保障度。


数据运维技术 » MySQL计划任务实现定期备份(mysql计划任务备份)