欢迎投稿

今日深度:

MongoDB 集群搭建(主从复制、副本及)(五),

MongoDB 集群搭建(主从复制、副本及)(五),mongodb主从


六:架构管理


mongodb的主从集群分为两种:
1:master-Slave 复制(主从)    --从服务器不会主动变成主服务器,需要设置才行
2:replica Sets 复制(副本集)  --如果主服务器挂掉,会选举出一台从服务器当主服务器

一:主从复制
mongodb支持在多个机器中通过异步复制达到故障转移和实现冗余。
  多机器中统一时刻只有一台是用于写操作。正是由于这个情况,为mongodb提供了数据一致性的保障。
  担当primary角色的机器能把读操作分发给slave。
  
  一主一从     一主多从方式
  
只需要在某一个服务器启动时加上-master参数,而另外一个服务器加上-slave与-source参数,即可实现同步。
 mongodb的最新版本已不推荐使用这种方法 。
 
 开始模拟(直接开玩得,没有用户验证):
1:打开2个终端(安装2台mongodb数据库)
*--你可以再你同一台电脑上模拟,但是把dbpath logpath,对应的目录建上就行
mongodb/   下创建文件就(只需要打开2个终端链接就行,不用安装多个mongodb数据库)
bin(mongodb自带的文件)  data1 data2 dblog1 dblog2    --1是主服务用的文件   2是从服务器用的文件
2:主(设置一台主服务器)
./mongod --master --dbpath=/usr/local/mongodb/data1/ --logpath=/usr/local/mongodb/dblog1 --fork --port 20001       (port开启一个对应的端口)
   
3:从  --source表示“源” ,链接那台服务器和端口                
./mongod --slave --source 127.0.0.100:20001 --dbpath=/usr/local/mongodb/data2/ --logpath=/usr/local/mongodb/dblog2 --fork --port 20002       

  从:./mongo --port 20002

4: 主:./mongo --port 20001
  db.c1.insert({name:"user1"});
  db.c1.insert({name:"user2"});
5:从:会发现主创建的c1集合已经过来了
db.c1.find();
db.c1.insert({name:"user3"});   --在从服务器是插不进去的,会报错“not master”

为了减少主服务器的压力备份什么的可以再从服务器完成(比如数据较大,一备份就是几十分钟明显增大主服务器的压力):
./mongodump --port 20002 -d test    备份test数据库

  **这样增删改的时候可以操作主服务器,读的时候链接从服务器
 
  
 
二:Replica Sets复制(副本集)
mongodb在1.6版本中开发了replica set,主要是增加了故障自动切换和自动修复成员节点,各个DB之间
数据完全一致,最为显著的区别在于,副本集没有固定的主节点,它是整个集群选举出得到的一个主节点,当
其不工作是变更其他节点强烈推荐使用。(主挂掉后会自动在从中选取出一个作为主服务器)

部署Replica Sets:
1):创建对应的文件  mongodb/(建立key 、 data 、 log文件夹)  --key是存同一个会议的小组成员,为选举主服务器用的
bin  key(建立钥匙文件:touch key1 、 touch key2)  data(下创建文件夹data1 、data2)   log(下创建文件夹dblog1 、 dblog2)

2): 在key目录下导入2个秘钥(linux的命令这个,win下的话可以自己手动建立)
echo "123456" >key1
echo "123456" >key2

chmod 600 *     --记住:这2把钥匙一定要设置成600 (key文件下操作)

3):准备完毕,启动开玩(开启2个mongodb服务)
rs1 :表示定义一个小组,小组组号叫rs1,开会用的
./mongod --replSet rs1 --keyFile=/usr/local/mongodb/key/key1 --port 20001 --dbpath=/usr/local/mongodb/data/data1/ --logpath=/local/mongodb/log/dblog1 --fork

能后在启动一个:
./mongod --replSet rs1 --keyFile=/usr/local/mongodb/key/key2 --port 20002 --dbpath=/usr/local/mongodb/data/data2/ --logpath=/local/mongodb/log/dblog2 --fork


*副本集就已经启动了

4):2个成员会自动开会,现在建立下会议室的配置
./mongo --port 20001      ------>(20002也行,哪台机器都可以) 
 
配置建立副本集(小组清单):
config_rs1={  
_id:"rs1",
members:['
{_id:0,host:"localhost:20001",priority:1},     --表示优先级,数字越大优先级就越高,选举主服务器就更大
{_id:1,host:"localhost:20002",priority:2},
']
}   --回车,   config_rs1可以直接回车查看

初始化副本集配置(小组清单):
rs.initiate(config_rs1);   --回车 在回车,你会发现mongodb的  ">" 符号 变成 "SECONDARY>"(从)  或者  "PRIMARY>"(主)

为什么会变符号呢?(mongodb的  ">" 符号 变成 "SECONDARY>"(从)  或者  "PRIMARY>"(主)):
以为当你初始化副本集的时候,他们就在开会能后把localhost:20002选举为主服务器(priority数字越大优先级越高),
  所以localhost:20002被选举为主服务器"PRIMARY>"

5):数据测试
./mongo --port 20002   (主)
db.c1.insert({name:"user1"});
db.c1.insert({name:"user2"});
db.c1.find();
rs.status();   --查看副本集的状态

在登录从服务器(从服务器同步是的增删改的数据):
./mongo --port 20001
show tables;   --如果报错,说明你没权限,能后你敲下下面的命令
rs.slaveOk();  --副本集主从里面,从要想有主的读权限的时候敲下该命令,来确认你的身份是从服务器
show tables;   --就好使
db.c1.find();  --主的数据就能读到了
db.c1.insert({name:"user2"}); --副本集的主从也一样,不能再从里面插入数据,因为不是主服务器


故障转移:
要2台以上的mongodb服务器哦;
副本集比传统的master-salve有改进的地方是它可以进行故障的自动转移
如果我们停掉复制集中的一个成员,那么剩下的成员就会自动选举出一个新的成员,做为主数据库





谁有mongodb的高级视频教程

你是要学习这个软件吗?
 

谁有学习MongoDB视频教程

给你推荐一份资料,叫《深入浅出MongoDB应用实战开发(基础、开发指南、系统管理、集群及系统架构)》有22课时,侧重于讲解MongoDB的常用特性及高级特性,从实际开发的角度出发对MongoDB进行全方位深入剖析。具体内容如下:可以联系我 1511065175

MongoDB基础:

第一讲:nosql与MongoDB(nosql兴起的背景、各种nosql数据库介绍,MongoDB的特点)
第二节:MongoDB安装配置 (MongoDB安装使用,基本系统管理的技巧,web控制台使用)
第三讲:MongoDB shell详解 (介绍MongoDB shell使用及命令,备份恢复、数据导入导出)
第四讲:MongoDB文档、集合、数据库的概念(介绍文档、集合、数据库等基本概念,库文件存储方式,命令规则)
第五讲:Mongodb 数据类型介绍 (详细介绍MongoDB支持数据类型)
MongoDB开发指南:
第六讲:MongoDB增、删、改文档(讲解MongoDB中增加、删除、修改文档的命令,插入原理、批量修改、修改器使用)
第七讲:MongoDB查询语法一 (详细讲解MongoDB强大的查询功能,$in、$or、$ne、$lt、$gt等操作符组合查询)
第八讲:MongoDB查询语法二(详细讲解MongoDB强大的查询功能,正则表达式查询、数组查询、内嵌文档查询)
第九讲:MongoDB查询语法三(详细讲解MongoDB where查询,游标操作、分页查询及代码示例、游标内幕)
第十讲:MongoDB索引(详细讲解MongoDB的索引原理、管理、索引查询分析工具、强制索引使用等)
第十一讲:MongoDB聚合统计(讲解MongoDB聚合统计功能)
第十二讲:MongoDB高级指南-命令工作原理(介绍数据库命令的工作原理)
第十三讲:MongoDB高级指南-固定集合、GridFS(介绍固定集合、GridFS原理及应用)
第十四讲:MongoDB高级指南-服务端脚本(介绍服务端脚本dbeval、javascript存储)
MongoDB系统管理:
第十五讲:MongoDB系统管理高级技巧1(系统监控)
第十六讲:MongoDB系统管理高级技巧2(数据库安全、备份恢复、数据修复)
MongoDB集群及系统架构:
第十七讲:MongoDB复制功能(详细讲解MongoDB主从复制建立、管理、维护)
第十八讲:MongoDB副本集功能(详细讲解MongoDB副本集建立、管理、维护)
第十九讲:MongoDB分片功能(详细讲解MongoDB分片建立、管理、维护)
第二十讲:MongoDB内幕( 深入剖析MongoDB系统架构、数据文件结构原理)
MongoDB应用案例:
第二十一讲:基于MongoDB通用帐号管理系统开发1
第二十二讲:基于MongoDB通用帐号管理系统开发2
 

www.htsjk.Com true http://www.htsjk.com/shujukunews/3315.html NewsArticle MongoDB 集群搭建(主从复制、副本及)(五),mongodb主从 六:架构管理 mongodb的主从集群分为两种: 1:master-Slave 复制(主从) --从服务器不会主动变成主服务器,需要设置才行 2:r...
评论暂时关闭