1. 定时备份
1.1 备份脚本
编写一个备份数据库的脚本:backupdb.sh
#!/bin/sh
###定义参数###
# 数据库地址
db_host='127.0.0.1'
# 端口
db_port='3306'
#数据库名
db_name='jt_lock'
# 数据库用户名
db_user='root'
# 数据库密码
db_pwd='jintoufs123'
# 按时间创建备份文件夹名
mk_date=`date +%Y%m%d`
# 定期删除10天以前的备份数据
rm_date=`date -d"10 day ago" +%Y%m%d`
# 存放路径
dir_backup='/jintoufs/dbhistory'
###创建文件夹目录###
if [ ! -d $dir_backup ]
then
mkdir -p $dir_backup
fi
if [ ! -d $dir_backup/$mk_date ]
then
mkdir -p $dir_backup/$mk_date
fi
mysqldump -h$db_host -P$db_port -u$db_user -p$db_pwd --single-transaction $db_name > "$dir_backup/$mk_date/$db_name$mk_date.sql"
if [ -d $dir_backup/$rm_date ]
then
rm -rf $dir_backup/$rm_date
fi
若执行该脚本提示mysqldump: 未找到命令,这是因为系统默认会查找/usr/bin目录下的命令,如果这个命令不在这个路径下,就会提示这个错误,则需要做一个软链接映射到/usr/bin目录下,首先要明确mysqldump文件路径,例如路径在:/usr/local/mysql/bin/mysqldump,那么这里做软链接就可以这样执行命令:
ln -fs /usr/local/mysql/bin/mysqldump /usr/bin/mysqldump
1.2 定时任务
使用脚本创建定时任务
#!/bin/sh
###定义参数###
dir_base='/jintoufs'
# 每天凌晨1点执行备份
cron='0 1 * * *'
# 脚本文件名
file_name='backupdb.sh'
# 数据库地址
db_host='127.0.0.1'
# 端口
db_port='3306'
#数据库名
db_name='jt_lock'
# 数据库用户名
db_user='root'
# 数据库密码
db_pwd='jintoufs123'
# 按时间创建备份文件夹名
mk_date='`date +%Y%m%d`'
# 定期删除10天以前的备份数据
rm_date='`date -d"10 day ago" +%Y%m%d`'
# 存放路径
dir_backup='/jintoufs/dbhistory'
###创建基层文件夹###
if [ ! -d $dir_base ]
then
mkdir -p $dir_base
fi
###删除原有脚本文件###
rm -f $dir_base/$file_name
###创建数据库备份脚本文件###
echo "#!/bin/sh
if [ ! -d $dir_backup ]
then
mkdir -p $dir_backup
fi
if [ ! -d $dir_backup/$mk_date ]
then
mkdir -p $dir_backup/$mk_date
fi
mysqldump -h$db_host -P$db_port -u$db_user -p$db_pwd --single-transaction $db_name > \"$dir_backup/$mk_date/$db_name$mk_date.sql\"
if [ -d $dir_backup/$rm_date ]
then
rm -rf $dir_backup/$rm_date
fi" >> $dir_base/$file_name
###授权###
chmod 777 $dir_base/$file_name
###添加定时任务###
echo "$cron $dir_base/$file_name" >> /var/spool/cron/root
###重启定时任务服务###
service crond restart
此脚本包含创建crontab定时任务命令,以及定期清理备份数据脚本,执行时需根据具体服务器环境修改参数。请勿反复执行该脚本(反复执行该脚本会创建多个定时任务,可用crontab命令维护定时任务)
2. 导入/恢复数据
#!/bin/sh
###定义参数###
# 要导入的sql数据脚本路径
source_path='/jintoufs/dbhistory/20220125/jt_lock20220125.sql'
# 数据库ip
db_host='127.0.0.1'
# 端口
db_port='3306'
# 库名
db_name='db_name'
# 用户名
db_user='root'
# 密码
db_pwd='jintoufs123'
# 创建数据库
create_db_sql="create database IF NOT EXISTS $db_name"
mysql -h$db_host -P$db_port -u$db_user -p$db_pwd -e "$create_db_sql"
mysql -u$db_user -p$db_pwd $db_name < $source_path