1.新建脚本:testbackupsql.sh (需要授权:777最高权限)
#!/bin/bash
expire_backup_delete="ON"
backup_time=`date +%Y%m%d%H%M`
docker exec -i mysql mysqldump -uroot -p123456 base | gzip > /home/testbackupsql/mysql_backup-$backup_time.sql.gz
if [ "$expire_backup_delete" == "ON" ];then
`find /home/testbackupsql/ -type f -mtime +2 | xargs rm -rf`
echo "Expired backup data delete complete!"
fi
find /home/testbackupsql/ -type f -mtime +2 | xargs rm -rf 删除创建时间是2天以前的备份
备份文件压缩成了.gz格式,减少内存占用,解压使用:gunzip *****.gz
2.定时任务:
crontab -e 编辑
#定时器定时备份数据库数据(每分钟执行一次)
# */1 * * * * /home/testbackupsql.sh > /tmp/testbackup.log 2>&1
#定时任务每天两点执行数据库备份任务
0 2 * * * /home/testbackupsql.sh > /tmp/testbackup.log 2>&1
.log文件是定时任务的日志文件,方便查看定时任务的执行情况
定时任务修改完,需要重启:service crond restart
3.docker 安装的MySQL 数据导出,导入
docker备份数据指令
container_name:容器名称,此处也可填容器ID。
db_user:数据库账号。
db_password:数据库密码。
database:要备份的数据库。
file_path:备份出来的文件名。
docker exec -it {container_name} mysqldump -u{db_user} -p{db_password} {database} > {file_path}
4.导入:
1、查看mysql容器
docker ps
比如我的是:94df84cbaaaa
2、复制sql文件到docker mysql里面的tmp文件夹
docker cp ./admin.sql 94df84cbaaaa:/tmp/
3、然后进入docker mysql里面执行命令登录mysql
1. docker exec -ti 94df84cbaaaa /bin/bash
2. msyql -u root -p
3. 回车输入密码
4、然后选择数据库
use admin;
5、执行命令导入
source /tmp/admin.sql
完成。