mysql进行数据迁移,最简单的不过是导出sql,然后在运行sql,数据也自然迁移过去了。
可是mongodb里,我们存储的是文件,是怎么做到的呢,当我在翻阅网上博客的时候,并没有发现有这方面的顾虑。
当我本地自测过程中(本地一个数据库的gridFS下的文件,迁移到另一个数据库时),有权限方面的问题,比如我的账号好像只能读取固定某一个数据库下的数据,
我是嫌麻烦,所以弄了一个超级管理员账号,当然如果你的账号能够访问数据库,可以不需要创账号了,直接向下翻到正文。
如下图,2数据库,我可以正常上传文件,但是新建的demo1数据库,提示我无权限。
我干脆就新建了一个超级管理员账户,在目录窗口输入cmd
输入mongo,再输入use admin,
然后输入db.createUser({user:"usename",pwd:"password",roles:[{role:"root",db:"admin"}]})
记得修改usename为你的用户名,password为你的密码。
能够看到创建成功,然后我本地试了这个账号,在两个数据库都可以上传文件。
本地和服务器上的账号密码是一样的,最终实现本地数据库的数据迁移到云服务器上的数据库。
正文开始,开始迁移。
我测试的使用的是windows
需要下载 Download MongoDB Command Line Database Tools | MongoDB
等下会使用到,下载安装到一个目录下
再配置到环境变量path下
准备工作完成,只需要两步命令即可!
第一步:备份到本地!
第二步:恢复到服务器!
第1步,先备份到本地
cmd打开窗口
mongodump --db demo1 --out C:\Users\Administrator\Desktop\mongodb迁移 -u superAdmin -p 123456 --authenticationDatabase admin
解释:demo1:是想要备份的数据库名称
C:\Users\Administrator\Desktop\mongodb迁移:是把数据库备份到本地地址
superAdmi:是我的账号名称
123456:是我的账号密码
第一步完成
第2步,把导出的这个demo1文件夹拷贝到目标服务器上,我的目标服务器也是windows 同样需要下载Download MongoDB Command Line Database Tools | MongoDB,前面下载配置流程同理即可。
在目标服务器,cmd窗口,输入
mongorestore --db target C:\Users\Administrator\Desktop\demo1 -u superAdmin -p 123456 --authenticationDatabase admin
解释:target:是目标服务器的mongodb下的数据库(也就是想把数据迁移到哪个库里)
C:\Users\Administrator\Desktop\demo1:告诉目标服务器,从哪个文件夹获取数据(也就是先前导出的文件夹拷贝到云服务器某一目录下)
superAdmin:目标服务器的mongodb 用户的账号名称
123456:目标服务器的mongodb 用户的账号密码
目标服务器上的操作
最后navicat 连接服务器上的mongodb,能够看到迁移的数据。