mysqldump
工具结合操作系统的任务调度(如Linux的cron或Windows的任务计划程序)来实现数据库的定时备份。在MySQL数据库管理中,定时备份是一项至关重要的任务,它能有效防止数据丢失和损坏,以下是几种常见的MySQL定时备份方法及其详细操作步骤:
mysqldump命令备份数据
1、备份全部数据库的数据和结构:
```sql
mysqldump uroot p123456 A > /data/mysqlDump/mydb.sql
```
2、备份单个数据库的数据和结构:
```sql
mysqldump uroot p123456 mydb > /data/mysqlDump/mydb.sql
```
3、备份多个表的数据和结构:
```sql
mysqldump uroot p123456 mydb t1 t2 > /data/mysqlDump/mydb.sql
```
BASH脚本与crontab结合实现自动备份
1、编写BASH脚本:
```bash
#!/bin/bash
# 保存备份个数,备份31天数据
number=31
# 备份保存路径
backup_dir=/root/mysqlbackup
# 日期
dd=date +%Y%m%d%H%M%S
# 备份工具
tool=mysqldump
# 用户名
username=root
# 密码
password=TankB214
# 将要备份的数据库
database_name=edoctor
# 如果文件夹不存在则创建
if [ ! d $backup_dir ]; then
mkdir p $backup_dir;
fi
$tool u $username p$password $database_name > $backup_dir/$database_name$dd.sql
# 写创建备份日志
echo "create $backup_dir/$database_name$dd.dupm" >> $backup_dir/log.txt
# 找出需要删除的备份
delfile=ls l crt $backup_dir/*.sql | awk '{print $9 }' | head 1
# 判断现在的备份数量是否大于number
count=ls l crt $backup_dir/*.sql | awk '{print $9 }' | wc l
if [ $count gt $number ]
then
# 删除最早生成的备份,只保留number数量的备份
rm $delfile
# 写删除文件日志
echo "delete $delfile" >> $backup_dir/log.txt
fi
```
2、使用crontab定期执行备份脚本:
编辑crontab配置文件,添加以下内容以每天凌晨2点执行备份脚本:
```bash
0 2 * * * /path/to/mysql_dump_script.sh
```
常见问题解答(FAQs)
1. 如何恢复MySQL备份?
使用系统命令行还原:
```bash
mysql uroot p123456 < /data/mysqlDump/mydb.sql
```
使用MySQL命令行还原:
```sql
mysql> source /data/mysqlDump/mydb.sql
```
2. 如何设置crontab以每日凌晨2点执行备份?
编辑crontab配置文件,添加以下内容:
0 2 * * * /path/to/mysql_dump_script.sh