要在MySQL中定时备份数据库,可以使用cron job或者MySQL自带的事件调度器来实现。
使用cron job:
- 编写一个Shell脚本来备份数据库,例如backup.sh:
#!/bin/bash
1. 备份全部数据库的数据和结构
mysqldump -uroot -p123456 -A > backup.sql
2. 备份全部数据库的结构(加 -d 参数)
mysqldump -uroot -p123456 -A -d > backup.sql
3. 备份全部数据库的数据 (加 -t 参数)
mysqldump -uroot -p123456 -A -t > backup.sql
4. 备份单个数据库的数据和结构 (数据库名 backup)
mysqldump -uroot-p123456 backup > backup.sql
5. 备份单个数据库的结构
mysqldump -uroot -p123456 backup -d > backup.sql
6. 备份单个数据库的数据
mysqldump -uroot -p123456 backup -t > backup.sql
7. 备份多个表的数据和结构(数据,结构的单独备份方法与上同)
mysqldump -uroot -p123456 backup t1 t2 > backup.sql
8. 一次备份多个数据库
mysqldump -uroot -p123456 --databases db1 db2 > backup.sq
- 使用crontab命令编辑定时任务表:
crontab -e
- 在打开的文件中添加一行来定时执行备份任务,例如每天凌晨3点:
0 3 * * * /path/to/backup.sh
- 保存文件并退出。
使用MySQL事件调度器:
- 创建一个存储过程来备份数据库,例如:
DELIMITER $$
CREATE PROCEDURE backup_database()
BEGIN
SET @backup_sql := CONCAT('mysqldump -u username -p password mydatabase > ', DATE_FORMAT(NOW(), '%Y%m%d%H%i%s'), '_backup.sql');
PREPARE stmt FROM @backup_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END $$
DELIMITER ;
- 创建一个事件调度器来定时执行备份任务,例如每天凌晨3点:
CREATE EVENT backup_event
ON SCHEDULE
EVERY 1 DAY
STARTS CURRENT_TIMESTAMP + INTERVAL 3 HOUR
DO
CALL backup_database();
- 保存并执行以上代码,就会创建定时备份的事件调度器。
无论是使用cron job还是MySQL事件调度器,都可以根据需要来定制备份频率和具体的备份脚本。请根据自己的实际情况进行相应的修改和调整。