mongodb 集 群
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
[root@im03 bin]# ./mongo 192.168.229.138:30000 MongoDB shell version: 2.4.8 connecting to: 192.168.229.138:30000/test mongos> use admin switched to db admin mongos> db.addUser('admin','allentuns') mongos> use imdb switched to db imdb mongos> db.addUser('root','gypwd')
十四、连接到monபைடு நூலகம்os服务配置分片;
[root@im03 bin]# ./mongo 192.168.229.138:30000 mongos> use admin mongos> db.runCommand({"addShard":"db1/192.168.229.138:10001"}) mongos> db.runCommand({"addShard":"db2/192.168.229.138:10002"}) mongos> db.runCommand({"addShard":"db3/192.168.229.138:10003"})
查看分片信息:mongos> db.runCommand({listshards:1})
十五、登录mongos激活数据库及集合的分片功能: mongos>db.runCommand({enablesharding:"imdb"}) #imdb数据库名 mongos>db.runCommand({shardcollection:"imdb.table1",key:{_id:"hashed"}}) 十六、登录mongos添加用户
十七、关闭三台服务器的mongod和mongos服务; 十八、生成keyfile:(每个进程的key file都保持一致)
[root@im03 bin]#openssl rand -base64 753 >keyfile [root@im03 bin]#chmod 600 keyfile
十九、将生成的keyfile 拷贝到mongod/mongos/config 进程对应的文件夹
[root@im03 bin]# cp keyfile /opt/mongodb/data/configdb [root@im03 bin]# cp keyfile /opt/mongodb/data/db1 [root@im03 bin]# cp keyfile /opt/mongodb/data/db2 [root@im03 bin]# cp keyfile /opt/mongodb/data/db3 [root@im03 bin]# cp keyfile /opt/mongodb/data/mongos
[root@im03 bin]# ./mongo 192.168.229.138:10002 > use admin db.runCommand({ "replSetInitiate": { "_id":"db3", "members": [ { "_id":1,"host":"192.168.229.138:10003" }, { "_id":2, "host":"192.168.229.139:10003"}, { "_id":3,"host":"192.168.229.140:10003"} ] } })
[root@im03 bin]# ./mongo 192.168.229.138:10002 > use admin db.runCommand({ "replSetInitiate": { "_id":"db2", "members": [ { "_id":1,"host":"192.168.229.138:10002" }, { "_id":2, "host":"192.168.229.139:10002" }, { "_id":3,"host":"192.168.229.140:10002"} ] } })
六、分别启动三台机器的db1、db2、db3的实例即: [root@im05 bin]# ./mongod -f ./db1.conf [root@im05 bin]# ./mongod -f ./db2.conf [root@im05 bin]# ./mongod -f ./db3.conf
七、查看db服务启动是否成功;
每一片都可以是复制集
(replica set)。
mongodb集群分片搭建:
一、准备三台机器:192.168.229.138,192.168.229.139,192.168.229.140 二、在三台机器上新建mongodb目录:mkdir - p mongodb 三、下载mongodb安装包到新建mongodb目录并解压; wget /linux/mongodb-linux-x86_64-2.4.8.tgz tar xvzf mongodb-linux-x86_64-2.4.8.tgz 四、在三台机器上的mongodb目录下创建data/db1,db2,db3目录
通过scp的方式把这个文件分别拷贝到139和140机器的对应目录中:
[root@im04 data]# mkdir -p db1 db2 db3
五、在/opt/mongodb/mongodb-linux-x86_64-2.4.8/bin目录建立db1.conf、db2.conf、db3.conf 文件,注意replSet的名字:
db1.conf: fork=true nojournal=true dbpath=/opt/mongodb/data/db1 port=10001 replSet=db1 logpath=/opt/mongodb/log/db1.log
以选择接受这个声称或是拒绝并进入主节点 竞争。被其他所有节点接受的节点才能成为 主节点。节点按照一些属性来判断谁应该胜 出。这个属性可以是一个静态ID,也可以是
更新的度量像最近一次事务ID(最新的节点
会胜出)。
MongoDB分片架构
简单注解: 1、 mongos 路由进程, 应 用程序接入mongos再查询到 具体分片。 2 、config server 路由表服 务。 每一台都具有全部chunk 的路由信息。 3 、shard为数据存储分片。
mongodb分布式应用原理
MongoDB 集群包括一定数量的 mongod (分片存储数据)、 mongos (路由处理)、 config server(配置节点)、clients(客户端)、arbiter(仲裁节点:为了选举某个分片存储数 据节点那台为主节点)。
1、shards:一个shard为一组mongod,通常一组为两台,主从或互为主从,这一组mongod中 的数据时相同的。
2、mongos:可以有多个,相当于一个控制中心,负责路由和协调操作,使得集群像一个整体 的系统。 mongos 可以运行在任何一台服务器上,有些选择放在 shards 服务器上,也有放在 client 服务器上的。mongos启动时需要从config servers上获取基本信息,然后接受client端的 请求,路由到shards服务器上,然后整理返回的结果发回给client服务器。
port=30000 configdb= 192.168.229.138:20000,192.168.229.139:20000,192.168.229.140:20000 logpath=/opt/mongodb/log/mongos.log fork=true
启动mongos服务:[root@im03 bin]# ./mongos -f ./mongos.conf
[root@im03 bin]# ps aux |grep mongod
八、初始化副本(在任意一台机器执行)
[root@im03 bin]# ./mongo 192.168.229.138:10001 > use admin db.runCommand({ "replSetInitiate": { "_id":"db1", "members": [ { "_id":1, "host":"192.168.229.138:10001" }, { "_id":2, "host":"192.168.229.139:10001"}, { "_id":3, "host":"192.168.229.140:10001"} ] } })
3 、 config server :存储集群的信息,包括分片和块数据信息。主要存储块数据信息,每个 config server上都有一份所有块数据信息的拷贝,以保证每台config server上的数据的一致性。
4、shard key:为了分割数据集,需要制定分片key的格式,类似于用于索引的key格式,通常 由一个或多个字段组成以分发数据。mongoDB的分片为有序存储(1为升序,-1为降序),shard key相邻的数据通常会存在同一台服务(数据块)上。
mongodb 集 群
mongodb 概述:
MongoDB是一个基于分布式文件存储的数据库。为WEB应用提供可 扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非 关系数据库之间的产品,是非关系数据库当***能最丰富,最像关系数据库 的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储 比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大, 其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单 表查询的绝大部分功能,而且还支持对数据建立索引。
db2.conf: fork=true nojournal=true dbpath=/opt/mongodb/data/db2 port=10002 replSet=db2 logpath=/opt/mongodb/log/db2.log
db3.conf: fork=true nojournal=true dbpath=/opt/mongodb/data/db3 port=10003 replSet=db3 logpath=/opt/mongodb/log/db3.log
mongodb 节点选举机制:
不用指定主节点,集群中的任意节 点都可以成为主节点。MongoDB也就 是采用这种架构,一但主节点挂了其他 从节点自动接替变成主节点。如图:
主节点主要是通过Bully算法来确定。 Bully算法是一种协调者(主节点)竞选 算法,主要思想是集群的每个成员都可以声
明它是主节点并通知其他节点。别的节点可
启动configdb服务: [root@im04 bin]# ./mongod -f ./configdb.conf
十二、在以上3台服务器中的任意一台服务器上创建mongos启动配置文件并启动; 在/opt/mongodb/mongodb-linux-x86_64-2.4.8/bin目录下创建mongos.conf
九、查看1000x端口在3台机器的主备 [root@im03 bin]# ./mongo 192.168.229.138:10002 > use admin > rs.status(); 十、在3台服务器的data目录下创建configdb目录; [root@im03 data]# mkdir -p configdb
十一、在/opt/mongodb/mongodb-linux-x86_64-2.4.8/bin目录下创建configdb.conf文件并启动;
configdb.conf内容: nojournal=true fork=true dbpath=/opt/mongodb/data/configdb port=20000 logpath=/opt/mongodb/log/configdb.log
十四、连接到monபைடு நூலகம்os服务配置分片;
[root@im03 bin]# ./mongo 192.168.229.138:30000 mongos> use admin mongos> db.runCommand({"addShard":"db1/192.168.229.138:10001"}) mongos> db.runCommand({"addShard":"db2/192.168.229.138:10002"}) mongos> db.runCommand({"addShard":"db3/192.168.229.138:10003"})
查看分片信息:mongos> db.runCommand({listshards:1})
十五、登录mongos激活数据库及集合的分片功能: mongos>db.runCommand({enablesharding:"imdb"}) #imdb数据库名 mongos>db.runCommand({shardcollection:"imdb.table1",key:{_id:"hashed"}}) 十六、登录mongos添加用户
十七、关闭三台服务器的mongod和mongos服务; 十八、生成keyfile:(每个进程的key file都保持一致)
[root@im03 bin]#openssl rand -base64 753 >keyfile [root@im03 bin]#chmod 600 keyfile
十九、将生成的keyfile 拷贝到mongod/mongos/config 进程对应的文件夹
[root@im03 bin]# cp keyfile /opt/mongodb/data/configdb [root@im03 bin]# cp keyfile /opt/mongodb/data/db1 [root@im03 bin]# cp keyfile /opt/mongodb/data/db2 [root@im03 bin]# cp keyfile /opt/mongodb/data/db3 [root@im03 bin]# cp keyfile /opt/mongodb/data/mongos
[root@im03 bin]# ./mongo 192.168.229.138:10002 > use admin db.runCommand({ "replSetInitiate": { "_id":"db3", "members": [ { "_id":1,"host":"192.168.229.138:10003" }, { "_id":2, "host":"192.168.229.139:10003"}, { "_id":3,"host":"192.168.229.140:10003"} ] } })
[root@im03 bin]# ./mongo 192.168.229.138:10002 > use admin db.runCommand({ "replSetInitiate": { "_id":"db2", "members": [ { "_id":1,"host":"192.168.229.138:10002" }, { "_id":2, "host":"192.168.229.139:10002" }, { "_id":3,"host":"192.168.229.140:10002"} ] } })
六、分别启动三台机器的db1、db2、db3的实例即: [root@im05 bin]# ./mongod -f ./db1.conf [root@im05 bin]# ./mongod -f ./db2.conf [root@im05 bin]# ./mongod -f ./db3.conf
七、查看db服务启动是否成功;
每一片都可以是复制集
(replica set)。
mongodb集群分片搭建:
一、准备三台机器:192.168.229.138,192.168.229.139,192.168.229.140 二、在三台机器上新建mongodb目录:mkdir - p mongodb 三、下载mongodb安装包到新建mongodb目录并解压; wget /linux/mongodb-linux-x86_64-2.4.8.tgz tar xvzf mongodb-linux-x86_64-2.4.8.tgz 四、在三台机器上的mongodb目录下创建data/db1,db2,db3目录
通过scp的方式把这个文件分别拷贝到139和140机器的对应目录中:
[root@im04 data]# mkdir -p db1 db2 db3
五、在/opt/mongodb/mongodb-linux-x86_64-2.4.8/bin目录建立db1.conf、db2.conf、db3.conf 文件,注意replSet的名字:
db1.conf: fork=true nojournal=true dbpath=/opt/mongodb/data/db1 port=10001 replSet=db1 logpath=/opt/mongodb/log/db1.log
以选择接受这个声称或是拒绝并进入主节点 竞争。被其他所有节点接受的节点才能成为 主节点。节点按照一些属性来判断谁应该胜 出。这个属性可以是一个静态ID,也可以是
更新的度量像最近一次事务ID(最新的节点
会胜出)。
MongoDB分片架构
简单注解: 1、 mongos 路由进程, 应 用程序接入mongos再查询到 具体分片。 2 、config server 路由表服 务。 每一台都具有全部chunk 的路由信息。 3 、shard为数据存储分片。
mongodb分布式应用原理
MongoDB 集群包括一定数量的 mongod (分片存储数据)、 mongos (路由处理)、 config server(配置节点)、clients(客户端)、arbiter(仲裁节点:为了选举某个分片存储数 据节点那台为主节点)。
1、shards:一个shard为一组mongod,通常一组为两台,主从或互为主从,这一组mongod中 的数据时相同的。
2、mongos:可以有多个,相当于一个控制中心,负责路由和协调操作,使得集群像一个整体 的系统。 mongos 可以运行在任何一台服务器上,有些选择放在 shards 服务器上,也有放在 client 服务器上的。mongos启动时需要从config servers上获取基本信息,然后接受client端的 请求,路由到shards服务器上,然后整理返回的结果发回给client服务器。
port=30000 configdb= 192.168.229.138:20000,192.168.229.139:20000,192.168.229.140:20000 logpath=/opt/mongodb/log/mongos.log fork=true
启动mongos服务:[root@im03 bin]# ./mongos -f ./mongos.conf
[root@im03 bin]# ps aux |grep mongod
八、初始化副本(在任意一台机器执行)
[root@im03 bin]# ./mongo 192.168.229.138:10001 > use admin db.runCommand({ "replSetInitiate": { "_id":"db1", "members": [ { "_id":1, "host":"192.168.229.138:10001" }, { "_id":2, "host":"192.168.229.139:10001"}, { "_id":3, "host":"192.168.229.140:10001"} ] } })
3 、 config server :存储集群的信息,包括分片和块数据信息。主要存储块数据信息,每个 config server上都有一份所有块数据信息的拷贝,以保证每台config server上的数据的一致性。
4、shard key:为了分割数据集,需要制定分片key的格式,类似于用于索引的key格式,通常 由一个或多个字段组成以分发数据。mongoDB的分片为有序存储(1为升序,-1为降序),shard key相邻的数据通常会存在同一台服务(数据块)上。
mongodb 集 群
mongodb 概述:
MongoDB是一个基于分布式文件存储的数据库。为WEB应用提供可 扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非 关系数据库之间的产品,是非关系数据库当***能最丰富,最像关系数据库 的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储 比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大, 其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单 表查询的绝大部分功能,而且还支持对数据建立索引。
db2.conf: fork=true nojournal=true dbpath=/opt/mongodb/data/db2 port=10002 replSet=db2 logpath=/opt/mongodb/log/db2.log
db3.conf: fork=true nojournal=true dbpath=/opt/mongodb/data/db3 port=10003 replSet=db3 logpath=/opt/mongodb/log/db3.log
mongodb 节点选举机制:
不用指定主节点,集群中的任意节 点都可以成为主节点。MongoDB也就 是采用这种架构,一但主节点挂了其他 从节点自动接替变成主节点。如图:
主节点主要是通过Bully算法来确定。 Bully算法是一种协调者(主节点)竞选 算法,主要思想是集群的每个成员都可以声
明它是主节点并通知其他节点。别的节点可
启动configdb服务: [root@im04 bin]# ./mongod -f ./configdb.conf
十二、在以上3台服务器中的任意一台服务器上创建mongos启动配置文件并启动; 在/opt/mongodb/mongodb-linux-x86_64-2.4.8/bin目录下创建mongos.conf
九、查看1000x端口在3台机器的主备 [root@im03 bin]# ./mongo 192.168.229.138:10002 > use admin > rs.status(); 十、在3台服务器的data目录下创建configdb目录; [root@im03 data]# mkdir -p configdb
十一、在/opt/mongodb/mongodb-linux-x86_64-2.4.8/bin目录下创建configdb.conf文件并启动;
configdb.conf内容: nojournal=true fork=true dbpath=/opt/mongodb/data/configdb port=20000 logpath=/opt/mongodb/log/configdb.log