在Ubuntu上使用Docker进行备份与恢复可以通过以下几种方法实现:
docker exec -i <container_name_or_id> sh -c 'exec mysqldump -u root -p<password> mydatabase' > mydatabase_backup.sql
docker exec -i <container_name_or_id> sh -c 'exec mysqldump -u root -p<password> --all-databases' > all_databases_backup.sql
docker exec -i <container_name_or_id> sh -c 'exec mysqldump -u root -p<password> mydatabase' | gzip > mydatabase_backup.sql.gz
编辑 crontab 文件:
crontab -e
添加备份任务:
0 1 * * * docker exec -i <container_name_or_id> sh -c 'exec mysqldump -u root -p<password> mydatabase' | gzip > /path/to/backup/mydatabase_$(date +\%Y\%m\%d).sql.gz
恢复单个数据库:
docker exec -i <container_name_or_id> mysql -u root -p<password> mydatabase < mydatabase_backup.sql
恢复所有数据库:
docker exec -i <container_name_or_id> mysql -u root -p<password> < all_databases_backup.sql
恢复压缩备份:
gunzip < mydatabase_backup.sql.gz | docker exec -i <container_name_or_id> mysql -u root -p<password> mydatabase
docker save -o mysql:5.6.tar.gz mysql:5.6
docker load -i mysql:5.6.tar.gz
docker run --volumes-from container_name -v PWD:/backup busybox tar cvf /backup/backup.tar /var/lib/docker
将备份的数据卷tar文件解压到目标位置,然后使用Docker容器挂载数据卷。
docker-compose save > docker-compose.yml
docker-compose load
在进行备份和恢复操作之前,请确保容器和应用程序处于可靠的状态,并定期备份容器镜像和数据卷,以防止数据丢失。