mysqldump
命令结合Linux的crontab
定时任务。创建一个备份脚本,backup_mysql.sh,内容如下:,,
`bash,#!/bin/bash,# 设置变量,DB_USER="your_database_user",DB_PASS="your_database_password",DB_NAME="your_database_name",BACKUP_DIR="/path/to/your/backup/directory",DATE=
date +%Y%m%d%H%M,,# 使用mysqldump命令备份数据库,mysqldump -u$DB_USER -p$DB_PASS $DB_NAME > $BACKUP_DIR/$DB_NAME-$DATE.sql,
`,,确保脚本具有可执行权限:,,
`bash,chmod +x backup_mysql.sh,
`,,2. 编辑
crontab文件,添加定时任务。运行以下命令:,,
`bash,crontab -e,
`,,在打开的编辑器中,添加一行,例如每天凌晨1点执行备份脚本:,,
`,0 1 * * * /path/to/your/backup_mysql.sh,
``,,保存并退出编辑器。MySQL数据库将每天凌晨1点自动备份到指定目录。MySQL定时备份数据库
mysqldump命令备份数据
1、基本用法:
mysqldump -u [用户名] -p[密码] --databases [数据库名] > [路径/文件名].sql
2、常用操作示例:
操作类型 | 命令示例 |
备份全部数据库的数据和结构 | mysqldump -uroot -p123456 -A > /data/mysqlDump/mydb.sql |
备份全部数据库的结构 | mysqldump -uroot -p123456 -A -d > /data/mysqlDump/mydb.sql |
备份全部数据库的数据 | mysqldump -uroot -p123456 -A -t > /data/mysqlDump/mydb.sql |
备份单个数据库的数据和结构 | mysqldump -uroot -p123456 mydb > /data/mysqlDump/mydb.sql |
备份单个数据库的结构 | mysqldump -uroot -p123456 mydb -d > /data/mysqlDump/mydb.sql |
备份单个数据库的数据 | mysqldump -uroot -p123456 mydb -t > /data/mysqlDump/mydb.sql |
备份多个表的数据和结构 | mysqldump -uroot -p123456 mydb t1 t2 > /data/mysqlDump/mydb.sql |
一次备份多个数据库 | mysqldump -uroot -p123456 --databases db1 db2 > /data/mysqlDump/mydb.sql |
1、在系统命令行中还原:
```shell
mysql -uroot -p123456 < /data/mysqlDump/mydb.sql
```
2、使用SHELL行完成还原:
```shell
mysql> source /data/mysqlDump/mydb.sql
```
编写BASH脚本维护固定数量备份文件
1、脚本示例:
```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
# 执行mysqldump命令保存备份文件,并将操作打印至同目录下的log.txt中标记操作日志
$tool -u $username -p$password $database_name > $backup_dir/$database_name-$dd.sql
echo "create $backup_dir/$database_name-$dd.sql" >> $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
```
使用crontab定期执行备份脚本
1、启动cron服务:
```shell
service crond start //启动服务
```
2、编辑crontab配置文件:
```shell
crontab -e
```
添加以下内容(每天凌晨2点执行备份脚本)
```text
0 2 * * * /path/to/mysql_dump_script.sh
```
相关问题与解答
1、Q1: 如何设置MySQL定时备份任务?
A1: 通过编写BASH脚本并结合crontab来实现,首先创建一个包含备份逻辑的BASH脚本,然后使用crontab设定定时任务,确保该脚本在指定时间自动执行,每天凌晨2点执行备份。
2、Q2: MySQL备份脚本中的参数如何配置?
A2: 在BASH脚本中,需要配置以下参数:备份个数(如31天)、备份保存路径、日期格式、用户名、密码及要备份的数据库名称,这些参数可以根据实际情况进行调整。