本文方法为作者自己尝试得出,不一定有效,若失败,还请参考正规的解决方案

本文的三种数据库恢复都以Docker来进行恢复,即本文会用Docker创建相应的数据库容器来对需要恢复的数据库进行恢复,在删除配置文件时,需要查看一些配置文件内容是否与需要恢复的数据库相同,如K8S集群中创建的数据库与Docker中创建的pg数据库就不同,postmaster.pid等文件内容

1 MongoDB

  • 找到需要恢复的数据库的存储配置文件,如下图所示

image-20231012214612701

  • 拉取MongoDB镜像,版本最好要对应,这里就以安装最新版本为例
1
docker pull mongo
  • 生成容器
    • -d:后台启动模式,不会占用终端
    • -p:主机端口:容器内端口
    • --name:容器名称
    • -v:指定了主机文件系统路径 /mnt/storage/wbw-mongo/data 和容器内部路径 /data/db 之间的卷映射。这个映射用于将 MongoDB 数据库数据存储在主机上,以便数据持久性。容器内的数据将被存储在主机的 /mnt/storage/wbw-mongo/data 目录中
1
docker run -d -p 31074:27017 --name wbw-mongo -v /mnt/storage/wbw-mongo/data:/data/db  mongo:latest
  • 删除刚刚生成的存储配置文件

注意,不要直接删除data文件夹,而是将data内的文件全部删除

1
rm -rf /mnt/storage/wbw-mongo/data/*
  • 将需要恢复的数据库的存储配置文件复制到/mnt/storage/wbw-mongo/data/下,假设需要恢复的数据库的存储配置文件位置为/mnt/storage/bak-mongo/data/
1
cp /mnt/storage/bak-mongo/data/* /mnt/storage/wbw-mongo/data/
  • 重启容器
1
docker restart wbw-mongo
  • 恢复结束

2 MySQL

  • 找到需要恢复的数据库的存储配置文件,如下图所示

image-20231012221503300

  • 拉取MySQL镜像,版本最好要对应,这里就以安装最新版本为例
1
docker pull mysql
  • 生成容器
1
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
  • 删除刚刚生成的存储配置文件
1
rm -rf /mnt/storage/wbw-mysql/data/*
  • 将需要恢复的数据库的存储配置文件复制到/mnt/storage/wbw-mysql/data/下,假设需要恢复的数据库的存储配置文件位置为/mnt/storage/bak-mysql/data/
1
cp /mnt/storage/bak-mysql/data/* /mnt/storage/wbw-mysql/data/
  • 重启容器
1
docker restart wbw-mysql
  • 恢复结束

3 PostgreSQL

  • 找到需要恢复的数据库的存储配置文件,如下图所示

image-20231012225210135

  • 拉取PostgreSQL镜像,版本最好要对应,这里就以安装14为例
1
docker pull postgres:14
  • 生成容器
1
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
  • 删除刚刚生成的存储配置文件
1
rm -rf /mnt/storage/wbw-postgres/data/*
  • 将需要恢复的数据库的存储配置文件复制到/mnt/storage/postgresql/data/下,假设需要恢复的数据库的存储配置文件位置为/mnt/storage/bak-postgresql/data/
1
cp /mnt/storage/bak-postgres/data/* /mnt/storage/wbw-postgres/data/
  • 重启容器
1
docker restart wbw-postgres
  • 恢复结束