【mysql】dump
dump文件用于恢复数据
mysql进行dump
定时任务
脚本文件
文件 mysqldump.sh
.
#!/bin/bash#################################################################
# 1. 与该脚本同级目录下,需存在.sql.cnf文件(用于数据库备份)、.back.cnf文件(用于读取配置)
# 2. 需配置ssh-keygen支持免密登录
#################################################################
# 保存备份个数,备份31天数据
NUMBER=15
# 备份保存路径,当前路径
BACKUP_DIR=$(dirname $(readlink -f "$0"))
# 日期,用于备份文件名后缀
NOW=$(date +"%Y-%m-%d-%H-%M-%S")
##############################################
# 以下配置从.back.cnf文件中读取
# 将要备份的数据库
DATABASE_NAME=
# SCP配置
SCP_FLAG=no
SCP_HOST=
SCP_PORT=
SCP_USER=
############################################### 从.back.cnf读取配置
loadConfig() {while read line; doeval "$line"done < .back.cnf
}# 根据.sql.cnf配置备份数据库
backup() {# 当前备份的文件名backup_file=$BACKUP_DIR/$DATABASE_NAME-$NOW.sqlecho "create $backup_file begin..."# mysqldumpmysqldump --defaults-extra-file=.sql.cnf "$DATABASE_NAME" > "$backup_file"#写创建备份日志echo "create $backup_file" >> "$BACKUP_DIR"/log.txt# SCP至远端if [ "$SCP_FLAG" == 'yes' ]; thenscp -pq -P "$SCP_PORT" "$backup_file" "$SCP_USER"@"$SCP_HOST":"$backup_file"fi
}# 删除最早生成的备份,只保留NUMBER数量的备份
delete() {# 判断现在的备份数量是否大于$NUMBERcount=`ls -l -crt "$BACKUP_DIR"/*.sql | awk '{print $9 }' | wc -l`while [ "$count" -gt $NUMBER ]do# 找出需要删除的备份delete_files=`ls -l -crt "$BACKUP_DIR"/*.sql | awk '{print $9 }' | head -1`# 判断现在的备份数量是否大于$NUMBERcount=`ls -l -crt "$BACKUP_DIR"/*.sql | awk '{print $9 }' | wc -l`# 删除最早生成的备份,只保留NUMBER数量的备份rm "$delete_files"# 写删除文件日志echo "delete $delete_files" >> "$BACKUP_DIR"/log.txtdone
}# 校验配置文件是否存在
sql_config=".sql.cnf"
if [ ! -f "$sql_config" ]; then# .sql.cnf文件不存在echo "BACKUP FAILED: Missing $sql_config"exit
fi
backup_config=".back.cnf"
if [ ! -f "$backup_config" ]; then# .back.cnf文件不存在echo "BACKUP FAILED: Missing $backup_config"exit
fi
loadConfig
backup
delete
exit
.sql.cnf
[mysqldump]
host=
port=
user=
password=
.back.cnf
DATABASE_NAME=
SCP_FLAG=no
SCP_HOST=
SCP_PORT=22
SCP_USER=root
发布者:admin,转转请注明出处:http://www.yc00.com/news/1687389027a6404.html
评论列表(0条)