先看下备份脚本:
#!/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 (容器中存储路径)/(数据库文件名);
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于