MySQL 定时备份数据库(非常全)
-- 创建存储过程,用于定期备份数据库
DELIMITER $$
CREATE PROCEDURE DailyBackup()
BEGIN
-- 设置需要备份的数据库名称
SET @dbname = 'your_database_name';
-- 设置备份文件的前缀
SET @bkp_dir = '/path/to/your/backup/directory/';
SET @timestamp = DATE_FORMAT(NOW(), '%Y%m%d%H%i%s');
SET @cmd = CONCAT('mysqldump -u backup_user --password=YourBackupPassword ', @dbname, ' > ', @bkp_dir, @dbname, '_', @timestamp, '.sql');
-- 执行备份命令
PREPARE stmt FROM @cmd;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END$$
-- 创建事件,定期执行备份过程
CREATE EVENT IF NOT EXISTS E_DailyBackup
ON SCHEDULE EVERY 1 DAY STARTS DATE_ADD(DATE_ADD(CURDATE(), INTERVAL 1 DAY), INTERVAL 1 MINUTE)
ON COMPLETION PRESERVE
DO
BEGIN
CALL DailyBackup();
END$$
DELIMITER ;
这段代码首先创建了一个存储过程DailyBackup
,该过程会使用mysqldump
工具备份指定的数据库。接着,它创建了一个事件E_DailyBackup
,该事件配置为每天定时执行这个备份过程。这里的YourBackupPassword
应替换为实际的备份用户密码,your_database_name
应替换为要备份的数据库名称,/path/to/your/backup/directory/
应替换为备份文件存储的路径。
评论已关闭