-- 创建备份数据库的存储过程
DELIMITER $$
CREATE PROCEDURE BackupDatabase(IN dbName VARCHAR(255), IN backupPath TEXT)
BEGIN
SET @stmt = CONCAT('BACKUP TABLES TO `', backupPath, '`');
PREPARE stmt FROM @stmt;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END$$
DELIMITER ;
-- 调用存储过程进行备份
CALL BackupDatabase('my_database', '/path/to/backup/directory');
-- 创建还原数据库的存储过程
DELIMITER $$
CREATE PROCEDURE RestoreDatabase(IN dbName VARCHAR(255), IN backupPath TEXT)
BEGIN
SET @stmt = CONCAT('RESTORE TABLES FROM `', backupPath, '`');
PREPARE stmt FROM @stmt;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END$$
DELIMITER ;
-- 调用存储过程进行还原
CALL RestoreDatabase('my_database', '/path/to/backup/directory');
这个例子展示了如何在MySQL中创建备份和还原数据库的存储过程。备份和还原操作都是通过准备和执行动态SQL语句来完成的,这样可以避免SQL注入风险,并允许使用过程参数来指定数据库和备份路径。在实际运用中,你需要根据自己的数据库环境和备份需求来调整这些存储过程。