环境是linux的,使用的是mysqldump命令。
创建一个脚本dbbackup.sh然后内容如下:
#! /bin/bash
# 执行此文件将会备份数据库到/opt/backup/data目录中
cd /opt/backup/data
date=`date -I`; #取出当前的日期
/opt/lampp/bin/mysqldump -u用户名 -p密码 数据库> 备份文件名前缀_$date.sql; #导出数据库为sql脚本
/bin/tar zcvhf 备份文件名前缀_$date.tar.gz 备份文件名前缀_$date.sql; #压缩sql脚本
rm 备份文件名前缀_$date.sql #删除sql文件
现在我们将这个脚本添加到定时任务中去,让每天都执行一次
使用crontab -l命令查看当前定时任务
使用crontab -e 命令编辑用户的定时任务,会使用vi编辑一个文本文件。文本文件的格式是这样的:
分钟 小时 天 月 天每星期 命令,例子:
58 23 * * * /home/yangyan/bin/dbbackup.sh
一行一个任务,保存后就可以了。
具体的cron可以查看这个blog说的比较清楚一些:
http://www.cnblogs.com/lhj588/archive/2012/02/20/2359172.html
如果是从docker中备份数据库出来可以:
–hex-blob 是确保一些blob的字段类型的内容正确无误的导出来。
docker exec $DOCKERID /usr/bin/mysqldump -u $USERNAME --password=$PASSWORD --hex-blob $DB | gzip > /root/data_backup/database_name_$DATE.sql.gz
下面是来自CSDN博客分享的脚本:
#!/bin/bash
echo '##########################################'
echo '###### The database is automatically backed up at 01:00 am every day ######'
echo '##########################################'
# Setting environment variables
DATE=$(date +%Y_%m_%d_%H_%M_%S)
# $(date +%Y%m%d)
# 数据库用户名
USERNAME=root
# 密码
PASSWORD=123456
# 要备份的数据库
DB=favorites
# Docker容器ID
DOCKERID=********
#DB1=xxxx
# ubuntu 系统非 root 用户,要将备份产生的文件放到 xxx 用户所在的目录下,否则必须使用 sudo 输入管理员密码执行此脚本。
# Linux服务器上备份文件目录。
DIR=/root/data_backup
echo 'Get system date: ' $DATE
if [ ! -d "$DIR" ]; then
mkdir $DIR
fi
cd $DIR
echo 'backup started...' $(date "+%Y-%m-%d %H:%M:%S")
# 备份 docker 容器中的数据库
# docker exec -it 容器名称 mysqldump -u用户名 -p密码 要备份的数据库名称 | gzip > 要打包到的文件名称
# docker exec -it c7f1b671c57f mysqldump -u$USERNAME -p$PASSWORD $DB > /root/data_backup/database_name_$DATE.sql
# docker exec -it c7f1b671c57f mysqldump -uroot -proot favorites | gzip > /root/data_backup/database_name_2021_05_07.sql.gz
# 最关键的备份语句
docker exec $DOCKERID /usr/bin/mysqldump -u $USERNAME --password=$PASSWORD $DB | gzip > /root/data_backup/database_name_$DATE.sql.gz
# 备份 直接安装在 linux 系统中的数据库
# /usr/bin/mysqldump -u$USERNAME -p$PASSWORD $DB2 | gzip > xxx_$DATE.sql.gz
# just backup the latest 7 days
# find ${DIR} -name "database_name_*.sql.gz" -type f -mtime +7 -exec rm {} \; > /dev/null 2>&1
# find ${DIR} -name "database_name_*.sql.gz" -type f -mtime +7 -exec rm {} \; > /dev/null 2>&1
#保留最近文件数5,删除其它多余的文件。
ReservedNum=5
date=$(date "+%Y%m%d-%H%M%S")
FileNum=$(ls -l $DIR|grep ^- |wc -l)
while(( $FileNum > $ReservedNum))
do
OldFile=$(ls -rt $DIR| head -1)
echo $date "Delete File:"$OldFile
rm -rf $DIR/$OldFile
let "FileNum--"
done
echo 'backup completed!' $(date "+%Y-%m-%d %H:%M:%S")
了解 工作生活心情记忆 的更多信息
Subscribe to get the latest posts sent to your email.