环境:
Centos7、MySQL 5.6 (Docker 安装)
需求:
实现每小时备份指定的数据库到本地及远程机器
1.shell脚本
#docker 安装Mysql时指定的容器名称
DOCKERNAME=mymysql
#备份的目录
BAKDIR=/data/backup/mysql/`date +%Y-%m-%d-%H`
#备份指定的数据库名称
MYSQLDB=cbec
#数据库连接密码
MYSQLPW=Qwe123456.
#数据库用户名
MYSQLUSR=root
#数据库服务地址
MYSQLHOST=localhost
#数据库端口号
PORT=3306
if
[ $UID -ne 0 ];then
echo This script must use the root user ! ! !
sleep 2
exit 0
fi
#Define DIR and mkdir DIR 判断目录是否存在,不存在则新建
if
[ ! -d $BAKDIR ];then
mkdir -p $BAKDIR
else
echo This is $BAKDIR exists....
fi
#执行备份操作
#非docker安装执行这条 mysqldump -u$MYSQLUSR -P$PORT -p$MYSQLPW -h$MYSQLHOST --default-character-set=utf8 $MYSQLDB >$BAKDIR/$MYSQLDB.sql
docker exec -it $DOCKERNAME mysqldump -u$MYSQLUSR -P$PORT -p$MYSQLPW -h$MYSQLHOST --default-character-set=utf8 $MYSQLDB >$BAKDIR/$MYSQLDB.sql
#将备份sql文件复制到远程机器(可选)注意这个操作是需要远程密码才能执行的,[使用ssh代替密码登录](https://blog.csdn.net/xyang81/article/details/51477925)
scp -r $BAKDIR root@47.102.202.67:/data/backup/mysql
cd $BAKDIR ; tar -czf $MYSQLDB.tar.gz *.sql
find . -type f -name \*.sql |xargs rm -rf
[ $? -eq 0 ]&&echo “This `date +%Y-%m-%d` MySQL BACKUP is SUCCESS”
cd /data/backup/mysql/ ;find . -type d -mtime +30 |xargs rm -rf
echo "The mysql backup successfully "
执行脚本:
//添加可执行权限
chmod +x bakupmysql.sh
//执行
./bakupmysql.sh
2.编写定时任务
输入crontab -e
添加定时任务,按 i
进入编辑模式,输入:0 */1 * * * /bin/sh /sh/bakupmysql.sh
。保存退出,先按Esc然后输入:wq
,最后回车。
最后再静静观察结果,每小时备份一次