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

本贴最后更新于 1614 天前,其中的信息可能已经时移世易

先看下备份脚本:

#!/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 (容器中存储路径)/(数据库文件名);
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    675 引用 • 535 回帖
  • crontab

    crontab 命令常见于 类 Unix 的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρνο),原意是时间。

    12 引用 • 25 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...