1.下载镜像
docker pull mysql:5.7
2.创建/usr/local/docker/mysql/docker-compose.yml文件
version: '3.1'
services:
mysql:
image: 'mysql:5.7'
restart: always
container_name: mysql
ports:
- 3306:3306
volumes:
- ./conf/conf.d:/etc/mysql/conf.d
- ./logs:/logs
- ./data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD=root
脚本版
#!/bin/bash
containId=`docker ps -a | grep -i mysql|awk '{print $1}'`
FDIR=$(dirname $(readlink -f "$0"))
if [[ ! $containid ]];then
echo "target container not exist!"
else
echo "target container exist , ID = "$containId
docker stop $containId
docker rm $containid
echo "success delete container "$contain1d
fi
docker run --name mysql -e TZ=Asia/Shanghai --restart always -p 3306:3306 -v $FDIR/conf/conf.d:/etc/mysql/conf.d -v $FDIR/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=Aa@123456 -d mysql:8.0.27
3.执行docker-compose.yml文件
docker-compose up
4.访问mysql
进入docker容器
docker exec -it mysql bash
连接mysql
mysql -u root -p
4.定时备份mysql数据
脚本backup.sh
#!/bin/bash
docker exec -i mysql bash<<'EOF'
# 判断目录是不是已经存在,如果不存在则创建
if [ ! -d "/backups/mysql" ]; then
mkdir -p /backups/mysql
fi
# -A 为所有数据库
mysqldump -uroot -p1234567 -A > /backups/mysql/backups_$(date +%Y%m%d).sql
#删除超过10天的数据
rm -f /backups/mysql/backups_$(date -d -10day +%Y%m%d).sql
exit
EOF
# 判断目录是不是已经存在,如果不存在则创建
if [ ! -d "/backups/mysql" ]; then
mkdir -p /backups/mysql
fi
# 将docker中的备份的数据拷贝到宿主机上。
docker cp mysqldocker:/backups/mysql/backups_$(date +%Y%m%d).sql /backups/mysql
#删除超过10天的数据
rm -f /backups/mysql/backups_$(date -d -10day +%Y%m%d).sql
定时:
vi /etc/crontab
30 1 * * * root /home/dbbackup/backup.sh