Leif の 坊

己亥中原兴似火,九月金陵凉至秋。
琴声已散弦犹振,雁飞九天声已留。

目录
crontab 备份docker mysql镜像的数据库不生效
/    

crontab 备份docker mysql镜像的数据库不生效

先看下备份脚本:

#!/bin/sh
docker=/usr/bin/docker
mysqldump=/usr/bin/mysqldump
backup_dir=/root/solo/mysql/data_backup
date=`date -d "today" +"%Y-%m-%dT%H-%M-%S"`
mins=10080
tar_name="mysql_bak_${date}.tar.gz"
cd ${backup_dir}
mkdir -p ${backup_dir}/${date}
${docker} exec -it solo_mysql ${mysqldump} -u root -p123456 --default-character-set=utf8 -q --lock-all-tables --flush-logs -E -R --triggers  --databases solo > ${backup_dir}/${date}/solo.sql
tar -zcvf ${tar_name} ${date}
find ${backup_dir}/ -mmin +${mins} -exec rm -rf {} \;

乍一看上去是没问题的,但是crontab定时执行的时候dump出来的文件大小始终是4KB,后来发现去掉-it就可以了,按照文档解释-t是分配一个伪终端,但是crontab执行的时候实际是不需要的

拓展:docker中mysql数据库导出导入

导出:

docker exec -it (容器名称或ID) mysql -u root -p(数据库密码) (数据库名) > (宿主机存储路径)/(数据库文件名)

导入:

docker cp (宿主机存储路径)/(数据库文件名) (容器名称或ID):(容器中存储路径)/(数据库文件名) #复制宿主机的sql文件到容器中
docker exec -it (容器名称或ID) /bin/bash #进入容器中
mysql -u root -p(数据库密码) < (容器中存储路径)/(数据库文件名) #导入sql文件,也可以使用 mysql> source (容器中存储路径)/(数据库文件名);

“The first 90% of the code accounts for the first 90% of the development time. The remaining 10% of the code accounts for the other 90% of the development time.” – Tom Cargill

标  题crontab 备份docker mysql镜像的数据库不生效
作  者Leif160519
出  处https://leif.fun/articles/2019/09/02/1567407142298.html
关于博主:坐标金陵古城,运维工程师,如有问题探讨可以直接下方留言。
声援博主:如果您觉得文章对您有帮助,可以评论、订阅、收藏。您的鼓励是博主的最大动力!

评论