本文方法为作者自己尝试得出,不一定有效,若失败,还请参考正规的解决方案
本文的三种数据库恢复都以Docker来进行恢复,即本文会用Docker创建相应的数据库容器来对需要恢复的数据库进行恢复,在删除配置文件时,需要查看一些配置文件内容是否与需要恢复的数据库相同,如K8S集群中创建的数据库与Docker中创建的pg数据库就不同,
postmaster.pid
等文件内容
1 MongoDB
- 找到需要恢复的数据库的存储配置文件,如下图所示
- 拉取MongoDB镜像,版本最好要对应,这里就以安装最新版本为例
docker pull mongo
- 生成容器
-d
:后台启动模式,不会占用终端-p
:主机端口:容器内端口--name
:容器名称-v
:指定了主机文件系统路径/mnt/storage/wbw-mongo/data
和容器内部路径/data/db
之间的卷映射。这个映射用于将 MongoDB 数据库数据存储在主机上,以便数据持久性。容器内的数据将被存储在主机的/mnt/storage/wbw-mongo/data
目录中
docker run -d -p 31074:27017 --name wbw-mongo -v /mnt/storage/wbw-mongo/data:/data/db mongo:latest
- 删除刚刚生成的存储配置文件
注意,不要直接删除data文件夹,而是将data内的文件全部删除
rm -rf /mnt/storage/wbw-mongo/data/*
- 将需要恢复的数据库的存储配置文件复制到
/mnt/storage/wbw-mongo/data/
下,假设需要恢复的数据库的存储配置文件位置为/mnt/storage/bak-mongo/data/
cp /mnt/storage/bak-mongo/data/* /mnt/storage/wbw-mongo/data/
- 重启容器
docker restart wbw-mongo
- 恢复结束
2 MySQL
- 找到需要恢复的数据库的存储配置文件,如下图所示
- 拉取MySQL镜像,版本最好要对应,这里就以安装最新版本为例
docker pull mysql
- 生成容器
docker run -d -p 30491:3306 --name wbw-mysql -e MYSQL_ROOT_PASSWORD=123456 -v /mnt/storage/wbw-mysql/data:/var/lib/mysql mysql:latest
- 删除刚刚生成的存储配置文件
rm -rf /mnt/storage/wbw-mysql/data/*
- 将需要恢复的数据库的存储配置文件复制到
/mnt/storage/wbw-mysql/data/
下,假设需要恢复的数据库的存储配置文件位置为/mnt/storage/bak-mysql/data/
cp /mnt/storage/bak-mysql/data/* /mnt/storage/wbw-mysql/data/
- 重启容器
docker restart wbw-mysql
- 恢复结束
3 PostgreSQL
- 找到需要恢复的数据库的存储配置文件,如下图所示
- 拉取PostgreSQL镜像,版本最好要对应,这里就以安装14为例
docker pull postgres:14
- 生成容器
docker run -d --name wbw-postgres -v /mnt/storage/wbw-postgres/data:/var/lib/postgresql/data -e POSTGRES_PASSWORD=123456 -p 5432:5432 postgres:14
- 删除刚刚生成的存储配置文件
rm -rf /mnt/storage/wbw-postgres/data/*
- 将需要恢复的数据库的存储配置文件复制到
/mnt/storage/postgresql/data/
下,假设需要恢复的数据库的存储配置文件位置为/mnt/storage/bak-postgresql/data/
cp /mnt/storage/bak-postgres/data/* /mnt/storage/wbw-postgres/data/
- 重启容器
docker restart wbw-postgres
- 恢复结束