mongodb从2.6迁移到3.0过程
首发于 搞起博客
总共有这么几个问题需要解决:
1. mongodb3.0版本的二进制包
1. wiredTiger引擎的配置
1. 数据的迁移
1. 权限
mongodb3.0的二进制包
这个就不用多说了,直接去官网选择对应的系统下载就好
https://www.mongodb.org/downloads
我是centos 6.3,对应的发行版貌似是redhat6.x,所以选择的redhat6 64bit
wiredTiger引擎的配置
官方给的例子是以yaml形式写的配置,我还是以conf文件形式,所以就在后面追加了一个选项就可以了。当然我是重建的库路径,如果原有的数据路径的话,启用wiredTiger是会报错的。这就是下面要说的一个部分。
dbpath=/your/data/path
logpath=/your/log/path
logappend=true
bind_ip = 127.0.0.1
auth = true
port = 27017
journal = true
#fork=true
storageEngine=wiredTiger
数据的迁移
由于需要换引擎,所以原来的数据不能直接使用了,必须使用monogodump
和mongorestore
两个工具来迁移数据。
具体操作可以参见这篇文章
通过mongodump和mongorestore实现Mongodb备份和恢复
权限
那么将数据导入之后,如果需要设置权限的话,首先是需要admin库中创建一个user的,还是先把auth=true
给注释掉了,创建个用户,到这里懵逼了一下,提示addUser方法错误,查了一下发现,3.0的用户及权限有些改变。
定义
创建一个数据库新用户用db.createUser()方法,如果用户存在则返回一个用户重复错误。
语法
db.createUser(user, writeConcern)
* user这个文档创建关于用户的身份认证和访问信息;
* writeConcern这个文档描述保证MongoDB提供写操作的成功报告。
· user文档,定义了用户的以下形式:
{ user: "<name>",pwd: "<cleartext password>",customData: { <any information> },roles: [{ role: "<role>", db: "<database>" } | "<role>",...]
}
user文档字段介绍:
- user字段,为新用户的名字;
- pwd字段,用户的密码;
- cusomData字段,为任意内容,例如可以为用户全名介绍;
- roles字段,指定用户的角色,可以用一个空数组给新用户设定空角色;
在roles字段,可以指定内置角色和用户定义的角色。
Built-In Roles内置角色:
1. 数据库用户角色:read、readWrite;
2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4. 备份恢复角色:backup、restore;
5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6. 超级用户角色:root
// 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
7. 内部角色:__system
PS:关于每个角色所拥有的操作权限可以点击上面的内置角色链接查看详情。
writeConcern文档 官方说明
- w选项:允许的值分别是 1、0、大于1的值、"majority"、;
- j选项:确保mongod实例写数据到磁盘上的journal(日志),这可以确保mongd以外关闭不会丢失数据。设置true启用。
- wtimeout:指定一个时间限制,以毫秒为单位。wtimeout只适用于w值大于1。
例如:在products数据库创建用户accountAdmin01,并给该用户admin数据库上clusterAdmin和readAnyDatabase的角色,products数据库上readWrite角色。
use products
db.createUser( { "user" : "accountAdmin01","pwd": "cleartext password","customData" : { employeeId: 12345 },"roles" : [ { role: "clusterAdmin", db: "admin" },{ role: "readAnyDatabase", db: "admin" },"readWrite"] },{ w: "majority" , wtimeout: 5000 } )
以上是新版本用户、角色、权限的一些说明。
看看我们现在要做的:
先创建个管理员
use admin
db.createUser({user: "adminuser",pwd: "12345678",roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]}
)
再创建我们应用库的用户
use appdb
db.createUser({user: "luoyjx",pwd: "12345678",roles: [{ role: "readWrite", db: "appdb" }]}
)
使用db.auth(username,pwd)
可以验证一下
创建用户大概到这里了,创建完admin,再创建一个普通用户就基本OK了。
到这里,单实例的mongodb从2.6迁移到3.0就基本完成了。
TODO
副本集(没有折腾)
mongodb从2.6迁移到3.0过程相关推荐
- 迁移至Android3.0遇到一些问题
一.AS3.0新增功能 此处略(自行Google ) 官方文档 二.迁移后速度对比 gradle2.2 gradle3.0 首次 770s 260s 修改代码(一行) 291s 123s 修改代码(一 ...
- mongoDB 从单节点迁移到分布式集群 遇到的问题
mongoDB 从单节点迁移到分布式集群 遇到的问题: 1.linux 环境下limit 的设置问题: 错误: $ ps -ef|grep mongod -bash: fork: re ...
- mongoose换成mysql_如何将MongoDB数据库的数据迁移到MySQL数据库中
FAQ v2.0终于上线了,断断续续忙了有2个多月.这个项目是我实践的第一个全栈的项目,从需求(后期有产品经理介入)到架构,再到设计(有征询设计师的意见).构建(前端.后台.数据库.服务器部署),也是 ...
- Djang1.8+Python2.0迁移到Django2.0+Python3.6注意事项(转)
Djang1.8+Python2.0迁移到Django2.0+Python3.6注意事项 参考:https://blog.csdn.net/weixin_40475396/article/detail ...
- mysql为什么直接8.0_为什么要迁移到MySQL8.0?
原标题:为什么要迁移到MySQL8.0? 来自公众号:老叶茶馆,作者:lefred,翻译:徐晨亮 原文链接:https://lefred.be/content/replace-mariadb-10-3 ...
- tensorflow1.0代码迁移到2.0官方指导
https://www.tensorflow.org/guide/migrate 解决源代码中tensorflow版本过低问题(tensorflow1.x代码迁移到2.0) 原创风一样的rain 最后 ...
- 从 Vuex 0.6.x 迁移到 1.0
从 Vuex 0.6.x 迁移到 1.0 Vuex 2.0 已经发布了,但是这份指南只涵盖迁移到 1.0?这是打错了吗?此外,似乎 Vuex 1.0 和 2.0 也同时发布.这是怎么回事?我该用哪一个 ...
- 【MySQL5.7版本单节点大数据量迁移到PXC8.0版本集群全记】
MySQL5.7版本单节点大数据量迁移到PXC8.0版本集群全记录-1 - likingzi - 博客园 MySQL5.7版本单节点大数据量迁移到PXC8.0版本集群全记录-2 - likingzi ...
- 体验VMware Converter Client 6.2与Veeam BR 10迁移ESXi 6.0 vm到vCenter 6.7 u3
体验VMware Converter Client 6.2与Veeam BR 10迁移ESXi 6.0 vm到vCenter 6.7 u3 https://www.charflower.com/?p= ...
最新文章
- IC/FPGA笔试/面试题分析(八)近期IC/FPGA笔试面试讨论群题目汇总解析
- 虫趣:BAD POOL CALLER (par1: 0x20)
- Observer 模式在eHR中的应用
- PostgreSQL学习手册(PL/pgSQL过程语言)【转】
- 国产OS推广应从娃娃和体制内双管齐下
- SVM分类算法的基本理论问题
- vue2学习计划1-1 浏览器跨域问题
- leetcode-507-Perfect Number
- 实体 联系 模型mysql_数据库实体联系模型与关系模型
- Swing-文本输入组件(一)
- [Redis]Redis的数据类型
- java乐视面试题_乐视面试题 · vagabond1-1983/JavaRock Wiki · GitHub
- 《Python核心编程(第2版)》读书笔记(6)之用列表模拟堆栈(关键词:Python/列表/堆栈/stack.py)
- 校园网里,一账号多人上网或者多账号多人上网的宿舍路由器设置方法
- PostgreSQL 11.2 手册 (中文版) PostgreSQL中文社区
- 到底游戏中有什么是让你沉迷游戏的呢
- 买了一个西瓜,切开后傻眼,这是冬瓜出轨了?还是西瓜变心了?
- 计算机图形学流体仿真mac网格,正交网格下不可压缩流体的图形学模拟
- 深度学习CPU版本环境搭建(从anaconda->pycharm->tensorflow)
- 下班前几分钟,我彻底弄懂了并查集
热门文章
- python爬虫05--添加header
- 一文理解JDK静态代理、JDK动态代理、Cglib动态代理
- SpringBoot 自动配置原理
- putty远程登录ssh主机
- Go面试题 | []int 能转换为 []interface 吗?
- win10乱码了怎么办一招解决windows乱码问题百度经验_TIA Portal博途常见的15大问题汇总...
- 下载并导入mysql提供的测试数据库employees
- 在scrapy上使用cookie模拟登录
- 什么是serverless无服务架构
- Eureka缓存机制