mongodb备份数据
由于之前是在本地启动的mongodb服务,现在需要用docker容器部署,数据需要把之前的数据导出来
使用mongo自带命令来迁移数据,思路是先导出集合数据再导入到数据库中
1、导出命令:mongoexport
语法:
mongoexport -d dbname -c collectionname -o filepath --type json/csv
mongoexport -d ycblog -u yc -p ycblog -c clickNum -o /yc/mongodb/clickNumData --jsonArray
mongoexport -d ycblog -u yc -p ycblog -c experience -o /yc/mongodb/experienceData --jsonArray
-d:数据库名
-c:集合名称
-o:导出数据文件的路径
--type:导出数据类型,默认json
2、导入命令:mongoimport
语法:mongoimport -d dbname -c collectionname --file filename --headerline --type json/csv
mongoimport -d ycblog -u yc -p ycblog -c clickNum --file /importData/clickNumData --jsonArray --type json
mongoimport -d ycblog -u yc -p ycblog -c experience --file /importData/experienceData --jsonArray --type json
-d:数据库名
-c:集合名称
--file : 选择导入的文件
--type : 文件类型,默认json
注意:导入数据时需要将导出的文件拷贝到容器中,在容器中执行导入命令
docker拷贝本地文件到容器命令:
docker cp 本地路径 容器长ID:容器路径
查找容器长ID
docker inspect -f '{{.ID}}' 容器名
docker cp /yc/mongodb/mongodbDocker/exportData d527b8abe6587b267e4ceea3a39e4810bf70c0c509272e7234876e0296d369ef:/importData
docker部署mongodb
1、拉取镜像
拉取最新版
docker pull mongo
拉取指定版本
docker pull mongo:4.0.20
2、启动容器
docker run -itd --name mongodb --restart=always --privileged -p 27017:27017 -v /yc/mongodb/mongodbDocker/data/db:/data/db -v /yc/mongodb/mongodbDocker/configdb:/data/configdb -v /yc/mongodb/mongodbDocker/log:/data/log mongo:4.0.20 --auth
# -v /yc/mongodb/mongodbDocker/data/db 挂载数据文件,注意挂载的地址需要对应配置文件中的地址
# -v /yc/mongodb/mongodbDocker/configdb 挂载配置文件
# -v /yc/mongodb/mongodbDocker/log 挂载日志文件,注意挂载的地址需要对应配置文件中的地址
# --restart=always Docker服务重启容器也启动
# --privileged 拥有真正的root权限
# --auth 开启权限认证,需要账户密码才能登录,否则直接使用ip和端口就可以直接登录
mongod.conf配置文件如下:
systemLog:
#MongoDB发送所有日志输出的目标指定为文件
destination: file
#mongod或mongos应向其发送所有诊断日志记录信息的日志文件的路径
path: "/yc/mongodb/mongodbDocker/log/mongod.log"
#当mongos或mongod实例重新启动时,mongos或mongod会将新条目附加到现有日志文件的末尾。
logAppend: true
storage:
#mongod实例存储其数据的目录。storage.dbPath设置仅适用于mongod。
dbPath: "/yc/mongodb/mongodbDocker/data/db"
journal:
#启用或禁用持久性日志以确保数据文件保持有效和可恢复。
enabled: true
security:
#开启授权认证
authorization: enabled
#linux环境下配置
processManagement:
#启用在后台运行mongos或mongod进程的守护进程模式。
fork: true
#指定用于保存mongos或mongod进程的进程ID的文件位置,其中mongos或mongod将写入其PID
pidFilePath: "/yc/mongodb/mongodbDocker/log/mongod.pid"
net:
#服务实例绑定所有IP,有副作用,副本集初始化的时候,节点名字会自动设置为本地域名,而不是ip
#bindIpAll: true
#服务实例绑定的IP
bindIp: 0.0.0.0
#bindIp
#绑定的端口
port: 27017
如何设置权限请看这篇博客:https://www.ycblog.top/article?articleId=89&pageNum=1