成都做营销型网站,学软件技术需要什么基础,网络优化工程师需要具备哪些能力,网站建设前期策划内 容 简 介
本文介绍了MongoDB数据库的优点的数据存储模式的安装部署过程。
利用MongoDB在存储海量数据上的优势#xff0c;部署存储空间大数据。
欢迎批评指正补充
由于编者水平有限#xff0c;所搜集资料也很有限#xff0c;制定的规范肯定有考虑不周全、甚至完全错误…内 容 简 介
本文介绍了MongoDB数据库的优点的数据存储模式的安装部署过程。
利用MongoDB在存储海量数据上的优势部署存储空间大数据。
·欢迎批评指正补充
由于编者水平有限所搜集资料也很有限制定的规范肯定有考虑不周全、甚至完全错误的地方欢迎大家批评指正。这些内容肯定很不全面有什么好的原则、经验也欢迎补充。
安装MongoDB
MongoDB官方已经发布了WinLinuxMAC Solaris 4种平台的发布包最新的版本是3.2.3MongoDB遵循了偶数版本较为稳定的发布策略这里推荐下载2.4.x2.6.x3.0.x版本。安装版本推荐使用64位版本因为MongoDB自身并不管理内存这些工作都是交由操作系统完成所以寻址空间只支持2.8G同时MongoDB的性能与内存大小有直接关联下载地址是http://www.mongodb.org/downloads 解压
下载完成后解压就可以直接运行bin目录下的二进制文件一般意义上的安装MongoDB就是安装MongoDB的服务端进程mongod如图1-1所示。 图1-1 解压后的文件 配置目录环境win平台为例
bin目录下的mongod.exe在运行时需要配置数据文件目录如D:\mongodb\db_rs0\data\rs0_0同时指定一个日志接收文件如: D:\mongodb\db_rs0\logs\1.log;配置服务配置文件的路径,如D:\mongodb\db_rs0\logs也可以直接运行下列命令mongod -- dbpath D:/mongodb\db_rs0\data\rs0_0 Linux下的安装可以利用对应的包管理器系统自动创建目录和日志文件。 集群配置复制集
Mongo复制集的配置
复制集操作实现了数据库的冗余用于数据从故障中的恢复同时以复制集的冗余也保证了分片功能的稳定。
一般来说一个复制集至少需要3个节点每个节点都是mongod的一个实例节点之间通过心跳检测检查对方状态。复制集分为PrimarySecondArbiter节点primary负责读写second负责备份在对数据一致性要求不是很严格的情况下有时可以让primary只负责写副节点负责读操作在MongoDB空闲时完成数据的更新这样能提高一定的性能arbiter不参与数据处理arbiter只在primary节点故障时起到裁决新primary节点的任务。 具体配置如下
1:、创建3个节点的数据目录 D:\mongodb\db_rs0\data\rs0_0
D:\mongodb\db_rs0\data\rs0_1
D:\mongodb\db_rs0\data\rs0_2 2、创建3个节点的日志目录 D:\mongodb\db_rs0\logs\rs0_0.log;
D:\mongodb\db_rs0\logs\rs0_1.log;
D:\mongodb\db_rs0\logs\rs0_2.log; 3、创建3个节点的启动配置文件 D:\mongodb\configs_rs0\rs0_0.conf;
D:\mongodb\configs_rs0\rs0_1.conf;
D:\mongodb\configs_rs0\rs0_2.conf; 4、3个节点的配置文件的配置
dbpathD:\mongodb\db_rs0\data\rs0_0 这里是该节点的数据目录
logpathD:\mongodb\db_rs0\logs\rs0_0.log 这里是该节点的日志目录
journaltrue 是否需要Journal日志功能
port40000 端口号
replSetrs0 复制集号 5、编写MongoDB实例启动代码
rs0start.bat:
D:\mongodb\bin\mongod -config D:\mongodb\configs_rs0\rs0_0.conf
rs1start.bat:
D:\mongodb\bin\mongod -config D:\mongodb\configs_rs0\rs0_1.conf
rs2start.bat:
D:\mongodb\bin\mongod -config D:\mongodb\configs_rs0\rs0_1.conf 运行上面3个启动代码就开启了MongoDB实例服务第一次使用需要对复制集初始化以及设置primarysecondarbiter节点。 6、运行mongo客户端
mongo --port 40000(服务端口号) rs.initiate() (初始化rs0对象这里其实是在磁盘上开辟空间MongoDB会保留一部分磁盘空间并不删除提高数据处理响应速度)
这里返回如果是OK初始化就完成了
rs.conf() (查看节点信息) 添加其余两个节点作为second与arbiter节点
rs0primaryrs.add(主机号IP端口号)
{“ok”1}
rs0.primaryrs.addArb(主机名IP端口号)
注意
如果需要修改replica域名信息
cfgrs.conf
cfg.members[复制集号].hostIp:port
rs.reconfigcfg 集群配置分片
Mongo分片的配置
分片集群操作实现了数据的海量存储查询。
分片集群分为3个部分shardmongos路由进程配置服务器其中shard就是单个mongod实例一般是一个复制集每个复制集的节点可以不布置到同一个主机mongos路由进程对客户端是透明的在用户看来整个集群就是一个服务配置服务器其本质也是一个mongod实例它存储了分片信息以提供给上层的mongos路由进程使用这里存储了所有数据库的分片情况正是有了这些信息在分片集群上的查询的速度有了保证。 具体配置如下
1、复制集的配置如1.3所示只是需要配置多个复制集 2、配置configure服务器
为了保证分片集群在故障后的恢复一般将服务器也设置成复制集的形式 configure服务配置文件
dbpath D:\mongodb\db_configs\data\db_config0
logpath D:\mongodb\db_configs\logs\db_config0.log
journaltrue
port40006
configsvrtrue 声明这是一个集群的configure服务 3、启动mongos路由服务器:
配置cfg_mongos.conf:
logpathD:\mongodb\mongos\logs\mongos.log
port40009
configdbIP1:PORT1, IP2:PORT2, IP3:PORT3 4启动路由服务器
mongos --config D:\mongodb\mongos\cfg_mongos.conf 5、添加复制集至集群中
mongo --port 40009
mongossh.addShard(复制集名/复制集中不包含arbiter的所有节点) 集合分片 数据库设置
分片设置完成后需要对选定的数据库集合分片首先需要使数据库支持分片
如下
1、连接到集群中的mongos实例
mongo --port 40009 2、创建或打开数据库
mongosuse 数据库名 3、使数据库支持分片
mongossh.enableSharding(数据库名) 4、创建基于片键的索引使集合分片
mongosdb.users.ensureIndex({片键:1})
mongosdb.shardCollection(“库名.集合名”,{片键1}) MongoDB安全设置 角色设置
1、mongod启动后默认是没有打开权限认证的功能的需要mongod实例修改配置文件
如下 dbpath D:\mongodb\db_rs0\data\rs0_0
logpath D:\mongodb\db_rs0\logs\rs0_0.log
journaltrue
port40000
authtrue 2、启动mongod命令
rs0start.bat:
D:\mongodb\bin\mongod -config D:\mongodb\configs_rs0\rs0_0.conf
3、创建角色 db.createUser(
{
user:角色名,
pwd:密码,
roles:[{role:系统角色,db:admin(admin是用于管理角色的数据库保存权限信息)}
]
} 4、下次登陆就需要:
mongo --port 端口号 -u 角色名 -p密码 --authenticationDatabase admin
注意
1、系统角色readAnyDatabase只读 readwriteAnyDatabase读写 userAdminAnyDatabase用户管理 dbAdminAnyDatabase管理
root包括上面4个
2、复制集分片权限
每个节点启动的指令
mongo --keyFile 存储密码的txt文件路径
其余设置与单个实例设置相同