前言
提供mysqldump备份脚本 适合中小型数据库。数据量过大需要根据实际情况考虑是否适用!
常用备份命令
命令 | 备份速度 | 恢复速度 | 用途 |
---|---|---|---|
cp | 快 | 快 | 用于少量数据备份 |
mysqldump | 慢 | 慢 | 用于中小规模数据备份 |
xtrabackup | 较快 | 较快 | 用于较大规模数据备份 |
脚本
创建mysql_back.sh脚本
#!/bin/bash
# 定义 MySQL 连接信息
# 用户名
mysql_user="root"
# 密码
mysql_password=""
#数据库host
mysql_host="localhost"
# 定义备份目录
backup_dir="/usr/local/mysql_back"
# 定义要备份的数据库列表
database_list=("datasource1" "datasource2")
# 循环备份每个数据库
for database_name in "${database_list[@]}"
do
# 定义备份文件名格式(以当前日期命名)
backup_file="$backup_dir/db_backup_${database_name}_$(date +'%Y%m%d').sql"
# 备份指定的数据库
/usr/local/mysql/bin/mysqldump -h $mysql_host -u $mysql_user -p$mysql_password $database_name > $backup_file
# 删除7天前的备份文件
find $backup_dir -name "db_backup_${database_name}_*.sql" -type f -mtime +7 -exec rm {} \;
done
配置linux自动执行
crontab -e
* * * * *
- - - - -
| | | | |
| | | | +----------星期中星期几 (0 - 6) (星期天 为0)
| | | +---------------月份 (1 - 12)
| | +--------------------一个月中的第几天 (1 - 31)
| +-------------------------小时 (0 - 23)
+------------------------------分钟 (0 - 59)
## 每天0.30执行/usr/local/mysql_back/mysql_back.sh脚本
30 0 * * * /usr/local/mysql_back/mysql_back.sh