[centos@loovelj~]$ docker pull registry.cn-hangzhou.aliyuncs.com/acs-sample/mysql:5.7
5.7: Pulling from acs-sample/mysql
d4bce7fd68df: Pull complete
a3ed95caeb02: Pull complete
01588229585e: Pull complete
ada32b818a1a: Pull complete
ac7528e308ac: Pull complete
44e3fb8779c7: Pull complete
bfcca86efc6a: Pull complete
32da415dff2e: Pull complete
aae6d9712a36: Pull complete
3148136ce9cc: Pull complete
Digest: sha256:32ff2f404c3bd199aaec2e6d19d91d59673e40d7394732124f91dd72a2e1ed97
Status: Downloaded newer image for registry.cn-hangzhou.aliyuncs.com/acs-sample/mysql:5.7
[centos@loovelj~]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test/ubuntu v1.0 523e7db0e264 11 minutes ago 98.3MB
ubuntu latest dd6f76d9cc90 7 days ago 122MB
hello-world latest 725dcfab7d63 8 days ago 1.84kB
registry.cn-hangzhou.aliyuncs.com/acs-sample/mysql 5.7 ec7e75e5260c 23 months ago 360MB
[centos@loovelj~]$ docker tag registry.cn-hangzhou.aliyuncs.com/acs-sample/mysql:5.7 mysql:5.7
[centos@loovelj~]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test/ubuntu v1.0 523e7db0e264 12 minutes ago 98.3MB
ubuntu latest dd6f76d9cc90 7 days ago 122MB
hello-world latest 725dcfab7d63 8 days ago 1.84kB
mysql 5.7 ec7e75e5260c 23 months ago 360MB
registry.cn-hangzhou.aliyuncs.com/acs-sample/mysql 5.7 ec7e75e5260c 23 months ago 360MB
[centos@loovelj~]$ docker create -it mysql:5.7
62c975b37ad25b03914eb61e05088019f37ff9cb049a682ac02f20fac1761a4d
[centos@loovelj~]$ docker run --name mysqlserver -e MYSQL_ROOT_PASSWORD=sgcc -d -i -p 3306:3306 mysql:5.7
2a7a85124400be6fd47e0d97cf5d602456b1db1a11c6331747fe662481eea537
[centos@loovelj~]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2a7a85124400 mysql:5.7 "/entrypoint.sh my..." 9 seconds ago Up 8 seconds 0.0.0.0:3306->3306/tcp mysqlserver
188099665d1e ubuntu:latest "/bin/bash" 23 hours ago Up 23 hours angry_spence
[centos@liujun ~]$ docker exec -it 2a7a85124400 /bin/bash
root@2a7a85124400:/# mysql -h 127.0.0.1 -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.9 MySQL Community Server (GPL)
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
mysql -h 127.0.0.1 -u root -p
docker exec -it da0c1f5490f6 mysqldump -uroot -proot mysqlserver > /dfq/mysqldata/mysqlbakup_20210523.sql
docker exec -it mysql bash
mysql -uroot -p
use mysql;
source /usr/src/mysql20200706.sql
编辑一个脚本文件dataBaseName.sh
简单写法
#!/bin/bash
docker exec -it da0c1f5490f6 mysqldump -uroot -proot gowork > /dfq/mysqldata/mysql_gowork_$(date +%Y%m%d_%H%M%S).sql
#删除10天前的备份文件(-exec rm -rf {} \是固定写法,删除查询出来的数据)
find /dfq/mysqldata/ -mtime +10 -name "*.tar.gz" -exec rm -rf {} \;
复杂写法
#!/bin/bash
#完成数据库的定时备份
#备份的路径
BACKUP=/dfq/mysqldata/gowork
#当前的时间作为文件名
DATETIME=$(date +%Y_%m_%d_%H%M%S)
#可以输出变量调试
#echo ${DATETIME}
echo "==========开始备份==========="
echo "备份的路径是 $BACKUP/$DATETIME.tar.gz"
#容器ID
DOCKER_ID=da0c1f5490f6
#用户名
DB_USER=root
#密码
DB_PWD=root
#备份数据库名
DATABASE=yuanchangliang
#创建备份的路径
#如果备份的路径文件夹存在就使用,否则创建
[ ! -d "$BACKUP/$DATETIME" ] && mkdir -p "$BACKUP/$DATETIME"
#执行mysql的备份数据库的指令
docker exec -it ${DOCKER_ID} mysqldump -u${DB_USER} -p${DB_PWD} $DATABASE | gzip > $BACKUP/$DATETIME/$DATETIME.sql
#打包备份文件
cd $BACKUP
tar -zcvf $DATETIME.tar.gz $DATETIME
#删除临时目录
rm -rf $BACKUP/$DATETIME
#删除10天前的备份文件(-exec rm -rf {} \是固定写法,删除查询出来的数据)
find $BACKUP -mtime +10 -name "*.tar.gz" -exec rm -rf {} \;
echo "==========备份完成==========="
目前我正在使用的:
BACKUP=/dfq/mysqldata/gowork
#当前时间作为文件名
DATETIME=$(date +%Y-%m-%d-%H%M%S)
#可以输出变量调试
#echo ${DATETIME}
echo "==========开始备份==========="
echo "备份路径是 $BACKUP/$DATETIME.sql"
#容器ID
DOCKER_ID=da0c1f5490f6
echo "备份的容器是 $DOCKER_ID"
#用户名
DB_USER=root
#密码
DB_PWD=root
#数据库
DATABASE=gowork
echo "备份的数据库$DATABASE"
#创建备份路径
#如果备份路径存在就使用,否则就创建
[ ! -d "$BACKUP" ] && mkdir -p "$BACKUP"
#ִ执行备份命令
docker exec -it da0c1f5490f6 mysqldump -u$DB_USER -p$DB_PWD $DATABASE > $BACKUP/$DATETIME.sql
#删除10天前的备份文件(-exec rm -rf {} \固定写法删除查询出来的数据)
find $BACKUP -mtime +10 -name "*.sql" -exec rm -rf {} \;
echo "==========备份完成==========="
5 * * * * 每小时第5分钟执行
*/5 * * * * 每5分钟执行
0 2 * * * 每天凌晨2点执行
cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:
/bin/systemctl start crond.service //启动服务
/bin/systemctl stop crond.service //关闭服务
/bin/systemctl restart crond.service //重启服务
/bin/systemctl reload crond.service //重新载入配置
crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除某个用户的cron服务
crontab -e //编辑某个用户的cron服务
如果在使用crontab过程中出现了一下错误
You have mail in /var/spool/mail/root
你可以到、var/mail目录下 找到你的用户文件,使用
cat 文件名
可以查看错误信息