mongodb09----replicattion set--健壮性

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介:

 

 

复制代码
replication set复制集


replicattion set 多台服务器维护相同的数据副本,提高服务器的可用性.一台是服务器出问题了另外2台还可以接收干,secondary平时保持只读状态,专心读取primary只做备份(类似于mysql数据库的主从分离),2台secondary相互也通信, 看看谁更健康,


副本集:是一组保持着相同数据集合的mongod实例.
其中1个mongod为primary,接收全部写操作,其余secodary只负责读操作
primary instance打开oplog, secendary读取oplog,并产生相同的数据集




Replication set 设置全过程( SecureCRT连接linux )
0:创建目录 
mkdir -p /data/r0 /data/r1 /data/r2


1:启动3个实例,且声明实例属于某复制集(3个进程都属于相同的复制集rsa)
./bin/mongod --port 27017 --dbpath /data/r0 --smallfiles --replSet rsa --fork --logpath /data/r0/mongo17.log    //rsa 是复制集,smallfiles 减小文件
./bin/mongod --port 27018 --dbpath /data/r1 --smallfiles --replSet rsa --fork --logpath /data/r1/mongo18.log
./bin/mongod --port 27019 --dbpath /data/r2 --smallfiles --replSet rsa --fork --logpath /data/r2/mongo19.log

netstat –aon | findstr "27017"

//进入/d/mongodb/bin开启gitbush
mongod --dbpath ../data/r0 --logpath ../data/r0/r17.log --port 27017 --replSet rsa --smallfiles

mongod --dbpath ../data/r1 --logpath ../data/r1/r18.log --port 27018 --replSet rsa --smallfiles

mongod --dbpath ../data/r2 --logpath ../data/r2/r19.log --port 27019 --replSet rsa --smallfiles



//以下在cmd中操作
$ mongo
use admin  //管理application set
//直接运行下面代码
var  rsconf = {  //2:配置文件(mongo都是js语言)
    _id:'rsa',     //复制集的id叫rsa
    members:    //复制集的成员
    [
        {_id:0,
        host:'127.0.0.1:27017'
        },
        {_id:1,
        host:'127.0.0.1:27018'
        },
        {_id:2,
        host:'127.0.0.1:27019'
        }

    ]
}
//3: 根据配置做初始化
rs.initiate(rsconf);
{
    "OK":1
}
5:查看状态
rs.status();
//已经配置成功了


4: 添加节点,rsconf的members中添加,后期添加节点,
rs.add('192.168.1.201:27018');
rs.add('192.168.1.201:27019');

6:删除节点
rs.remove('192.168.1.201:27019');


7:主节点插入数据
>use test
>db.user.insert({uid:1,name:'lily'});


8:连接secondary查询同步情况
./bin/mongo --port 27019,rs.slaveOk();
>use test
>show tables
>db.user.find()

rsa:SECONDARY> show tables;
Sat Aug 17 16:03:55.786 JavaScript execution failed: error: { "$err" : "not master and slaveOk=false", "code" : 13435 } 

8.1 出现上述错误,是因为secondary默认不许读写,只能secondary只和primary说话,不润许人和secondary说话
>rs.slaveOk();   //
>show tables
>db.user.find()
#看到与primary 一致的数据

use admin
db.shutdoenServer()  //断开primary,查看rs.status();可以看到secondary服务器自动变成primary,secondary不能insert,只能primary能写,现在连到primary(原来的secondary变成的primary)就能够写了。

//原来17端口是主节点,18.19端口是次节点(次节点不能人来insert,只能与主节点同步),17down了后18自动变成了主节点(查看rs.status();),19仍然是次节点,18端口就可以人来写了,19仍然不能写(因为是次端口)。18插入新值之后19次节点就自动同步了,(17活了之后应该能同步新值)


/////////写自动化脚本

//清理现场
if[$1 == 'reset']; then   //如果要重置环境,就杀掉进程,重置环境
    pkill -9 mongo    //遗留的mongo进程杀掉
    rm -rf /data/r*   //遗留的文件夹删掉
fi

if[$1 == 'repl'];then

IP=192.168.1.202
NA=rs2   //集群名称
mkdir -p /data/r0 /data/r1 /data/r2  //创建目录

//启动3个复制集的实例
/usr/local/mongodb/bin/mongod --dbpath /data/r0 --logpath /data/r0/r17.log --port 27017 --fork --smallfile --replSet ${NA}
/usr/local/mongodb/bin/mongod --dbpath /data/r1 --logpath /data/r0/r18.log --port 27018 --fork --smallfile --replSet ${NA}
/usr/local/mongodb/bin/mongod --dbpath /data/r2 --logpath /data/r0/r19.log --port 27019 --fork --smallfile --replSet ${NA}

//配置
/usr/local/mongodb/bin/mongod <<EOF
use admin
var  rsconf = {  //2:配置文件(mongo都是js语言)
    _id:'rsa',     //复制集的id叫rsa
    members:    //复制集的成员
    [
        {_id:0,
        host:'${IP}:27017'      
        },
        {_id:1,
        host:'${IP}:27018'
        },
        {_id:2,
        host:'${IP}:27019'
        }
    ]
}
rs.initiate(rsconf);
<<


//最后执行sh文件:
sh start.sh


添加仲裁 :
mongod --port 30000 --dbpath /the/path --replSet rs
rs.addArb("m1.example.net:30000")
复制代码

副本集与仲裁



本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/8159034.html,如需转载请自行联系原作者

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
NoSQL 算法 容灾
『MongoDB』MongoDB高可用部署架构——复制集篇(Replica Set)
读完这篇文章里你能收获到 1. MongoDB是如何通过复制集实现高可用的 2. 主节点宕机后如何通过选举做到故障恢复 3. 在复制集中常见的可调整参数有哪些 4. 在Linux原生环境搭建MongoDB复制集 5. 在Winodws环境搭建MongoDB复制集
1019 1
『MongoDB』MongoDB高可用部署架构——复制集篇(Replica Set)
|
存储 NoSQL MongoDB
mongodb搭建Replica Set
mongodb搭建Replica Set 简单高效
242 0
|
存储 NoSQL 测试技术
MongoDB系列-解决面试中可能遇到的MongoDB复制集(replica set)问题
MongoDB复制集(replica set):MongoDB复制集维护相同数据集的一组mongod进程,复制集是生产部署的基础,具有数据冗余以及高可用性。
404 0
MongoDB系列-解决面试中可能遇到的MongoDB复制集(replica set)问题
|
存储 NoSQL Shell
(1)解锁MongoDB replica set核心姿势
本文倒腾目前大热的MongoDB Replica Set集群,在倒腾的同时串讲一些 MongoDB特性。
(1)解锁MongoDB replica set核心姿势
|
存储 NoSQL 网络协议
MongoDB系列-复制集(Replica Set)应用部署(生产、测试、开发环境)
通过在不同的计算机上托管mongod实例来尽可能多地保持成员之间的分离。将虚拟机用于生产部署时,应将每个mongod实例放置在由冗余电源电路和冗余网络路径提供服务的单独主机服务器上,而且尽可能的将副本集的每个成员部署到自己的计算机绑定到标准的MongoDB端口27017。
578 0
|
NoSQL 算法 Linux
搭建高可用MongoDB集群(Replica set)
MongoDB基础可参考http://blog.51cto.com/kaliarch/2044423 一、概述 1.1 MongoDB副本集 通俗来讲,mongodb的副本集相当于具有自动故障恢复的主从集群,主从集群和副本集最明显的特征为副本集没有固定的“主节点”,整个集群会通过一定...
10298 0
下一篇
DataWorks