本文介绍两种在CentOS系统上使用Docker备份数据的方法:运行中容器数据备份和Docker镜像备份。
一、运行中容器数据备份
创建备份目录: 在服务器上创建一个目录用于存储备份文件,例如:
mkdir -p /home/docker/mysql/data_back && chmod -R 777 /home/docker/mysql/data_back
确认容器ID: 使用以下命令获取名为mysql容器的ID:
docker ps -aqf "name=mysql"
创建备份脚本 (backup.sh): 在/home/docker/mysql/data_back目录下创建backup.sh脚本,并添加以下内容:
#!/bin/bash# 获取容器IDcontainer_id=$(docker ps -aqf "name=mysql")echo "MySQL容器ID: $container_id"# 检查容器是否存在if [ -z "$container_id" ]; then echo "未找到名为mysql的容器!" exit 1fi# MySQL登录信息 (请替换为您的实际信息)MYSQL_USER="root"MYSQL_PASSWORD="your_password" # 请替换为您的MySQL密码MYSQL_PORT="3306"# 是否删除过期备份 (true/false)expire_backup_delete="true"expire_days=7# 备份文件存放路径backup_location="/home/docker/mysql/data_back"# 备份时间戳backup_time=$(date +%Y%m%d%H%M)backup_Ymd=$(date +%Y-%m-%d)backup_dir="$backup_location/$backup_Ymd"# 获取数据库列表 (排除系统数据库)DATABASES=$(docker exec $container_id mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -e 'SHOW DATABASES;' | grep -vE '^(Database|information_schema|performance_schema)$')echo "数据库列表: $DATABASES"# 备份数据库if [ -n "$DATABASES" ]; then mkdir -p "$backup_dir" while read dbname; do echo "开始备份数据库: $dbname..." docker exec $container_id mysqldump --defaults-extra-file=/etc/mysql/conf.d -F -B --default-character-set=utf8 "$dbname" | gzip > "$backup_dir/bak-$dbname-$backup_time.sql.gz" if [ $? -eq 0 ]; then echo "数据库 $dbname 备份成功: $backup_dir/bak-$dbname-$backup_time.sql.gz" else echo "数据库 $dbname 备份失败!" fi done <<< "$DATABASES" # 删除过期备份 if [ "$expire_backup_delete" == "true" ] && [ -n "$backup_dir" ]; then find "$backup_dir" -type f -mtime +$expire_days -exec rm -f {} ; echo "已删除过期备份。" fielse echo "没有需要备份的数据库。" exit 1fiecho "所有数据库备份完成。"exit 0
配置MySQL (my.cnf): 确保/etc/mysql/conf.d目录下有正确的配置文件,并设置正确的MySQL用户和密码。 请务必将your_password替换成您的实际MySQL密码。
如知AI笔记
如知笔记——支持markdown的在线笔记,支持ai智能写作、AI搜索,支持DeepseekR1满血大模型
27 查看详情
赋予脚本执行权限:
chmod +x /home/docker/mysql/data_back/backup.sh
设置定时任务 (crontab): 使用crontab -e编辑crontab,添加定时任务,例如每天凌晨2点执行备份:
0 2 * * * /home/docker/mysql/data_back/backup.sh
二、Docker镜像备份
使用docker save命令: 使用以下命令将镜像保存为tar包:
docker save -o mycentos.tar mycentos_new:1.1
请根据实际情况修改脚本中的参数,例如容器名称、MySQL密码、备份路径和定时任务。 备份完成后,请妥善保管备份文件,并定期测试恢复流程。 记住定期检查备份的完整性和有效性。
以上就是Docker在CentOS上如何备份的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/372105.html
微信扫一扫
支付宝扫一扫