mysql数据库备份shell脚本

防止数据丢失,生产环境数据使用脚本每天进行备份,可指定需要备份的互数据库备份为不同的sql文件,数据丢失恢复时,可以创建对应的库,然后使用对应的数据库执行对应的sql文件即可恢复数据

1、数据库备份shell脚本mysql-backups.sh内容如下:

# Database info
DB_USER="root"
DB_PASS="123456"
DB_HOST="127.0.0.1"
# Database array
DB_NAME=("database1" "database2")
# Others vars
BIN_DIR="/usr/local/mysql/bin"
#the backup file directory
BCK_DIR="/mydata/mysql/data-backups"
DATE=`date +%F`
# create file
mkdir $BCK_DIR/$DATE
# TODO
# /usr/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher > /mnt/mysqlBackup/db_`date +%F`.sql
for var in ${DB_NAME[@]};
do
  $BIN_DIR/mysqldump --opt --single-transaction --master-data=2 -u$DB_USER -p$DB_PASS -h$DB_HOST $DB_NAME > $BCK_DIR/$DATE/db_$var.sql
done

清理备份数据脚本mysql-backups-clean.sh内容如下:

# 清理十天前的数据
find /mydata/mysql/data-backups -mtime +10 -name "*.*" -exec rm -Rf {} \;

上面脚本对应参数说明
DB_USER:访问数据里的用户名
DB_PASS:用户名对应的密码
DB_HOST:数据库所在服务器ip,一般都是备份在数据库当前所在服务器即可
DB_NAME:需要备份的数据库名称
BIN_DIR:mysql安装目录下的bin目录,因为mysqldump在该目录下
BCK_DIR:备份的sql文件存放的目录

数据恢复命令,连接mysql之后,切换到对应的数据库use testDB,执行source /data-bak/app.sql,即可完成数据的恢复

如果执行脚本报获取不到对应变量值的问题时,使用vi命令打开脚本,然后使用::set ff?查看文件是否为unix类型,unix类型是正确的文件类型,如果为dos类型则是错误的,需要强转为unix类型,使用命令::set ff=unix
参考文章:https://blog.csdn.net/weixin_41502742/article/details/80742526

2、添加定时任务执行该脚本:
执行命令:crontab -e
在文件中添加对应的定时任务,如下:(下面包含定时清理备份数据的定时任务)

\# 每天凌晨1点执行一次数据库备份
0 1 * * * /usr/local/mysql/mysql-backups.sh
\# 每天凌晨2点清理10天前的数据
0 2 * * * /usr/local/mysql/mysql-backups-clean.sh

定时任务配置解析:
0 1 * * * /usr/local/mysql/mysql-backups.sh
crontab任务配置基本格式:
*  *  *  *  *  command
分钟(0-59) 小时(0-23) 日期(1-31) 月份(1-12) 星期(0-6,0代表星期天)  命令
第1列表示分钟1~59 每分钟用或者 /1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

通过以上的操作就可以实现每天定时备份数据功能

你可能感兴趣的:(mysql数据库备份shell脚本)