MongoDB复制集管理(后续)

简介:
复制集:
1:标准节点:
参与primary选举
2:被动节点:
只能成为secend,不参与选举
3:仲裁节点:
负责投票选举,不存放数据

实验环境:2台标准节点 1台被动节点 1台仲裁点
具体实验步骤:(前半部分实验为上次实验操作)

[[email protected] ~]# mkdir -p /data/mongodb/mongodb{2,3,4}
[[email protected] ~]# mkdir -p /data/mongodb/logs
[[email protected] ~]# touch /data/mongodb/logs/mongodb{2,3,4}.log
[[email protected] ~]# chmod 777 /data/mongodb/logs/*.log
编辑配置文件
[[email protected] logs]# vim /etc/mongod.conf
开启replication,名字自定义
replication:
replSetName: kgcrs
[[email protected] yum.repos.d]# mongod -f /etc/mongod.conf --shutdown #关闭服务
[[email protected] yum.repos.d]# mongod -f /etc/mongod.conf #开启服务

复制产生四个实例
[[email protected] yum.repos.d]# cp -p /etc/mongod.conf /etc/mongod2.conf
[[email protected] yum.repos.d]# cp -p /etc/mongod.conf /etc/mongod3.conf
[[email protected] yum.repos.d]# cp -p /etc/mongod.conf /etc/mongod4.conf
[[email protected] yum.repos.d]# vim /etc/mongod2.conf
#修改三处
path: /data/mongodb/logs/mongodb2.log
dbPath: /data/mongodb/mongodb2
port: 27018
#将其他几个都修改
[[email protected] yum.repos.d]# cp -p /etc/mongod2.conf /etc/mongod3.conf
[[email protected] yum.repos.d]# vim /etc/mongod3.conf
(还是那三条,序号改好即可)
[[email protected] yum.repos.d]# cp -p /etc/mongod2.conf /etc/mongod4.conf
[[email protected] yum.repos.d]# vim /etc/mongod4.conf
#修改完成后依次启动
[[email protected] yum.repos.d]# mongod -f /etc/mongod2.conf
[[email protected] yum.repos.d]# mongod -f /etc/mongod3.conf
[[email protected] yum.repos.d]# mongod -f /etc/mongod4.conf
#查看端口开启
[[email protected] yum.repos.d]# netstat -ntap
#登录MongoDB
#复制集

cfg={"_id":"kgcrs","members":[{"_id":0,"host":"192.168.120.136:27017","priority":100},{"_id":1,"host":"192.168.120.136:27018","priority":100},{"_id":2,"host":"192.168.120.136:27019","priority":0},{"_id":3,"host":"192.168.120.136:27020","arbiterOnly":true}]}
{
"_id" : "kgcrs",
"members" : [
{
"_id" : 0,
"host" : "192.168.120.136:27017",
"priority" : 100
},
{
"_id" : 1,
"host" : "192.168.120.136:27018",
"priority" : 100
},
{
"_id" : 2,
"host" : "192.168.120.136:27019",
"priority" : 0
},
{
"_id" : 3,
"host" : "192.168.120.136:27020",
"arbiterOnly" : true
}
]
}
#初始化
rs.initiate(cfg)
{
"ok" : 1,
"operationTime" : Timestamp(1536821356, 1),
"$clusterTime" : {
"clusterTime" : Timestamp(1536821356, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
}
#查看身份
kgcrs:PRIMARY> rs.isMaster()
{
"hosts" : [
"192.168.120.136:27017",
"192.168.120.136:27018"
],
"passives" : [
"192.168.120.136:27019"
],
"arbiters" : [
"192.168.120.136:27020"
],
"setName" : "kgcrs",
"setVersion" : 1,
"ismaster" : true,
"secondary" : false,
"primary" : "192.168.120.136:27017",
"me" : "192.168.120.136:27017",
"electionId" : ObjectId("7fffffff0000000000000001"),
"lastWrite" : {
"opTime" : {
"ts" : Timestamp(1536821508, 1),
"t" : NumberLong(1)
},
"lastWriteDate" : ISODate("2018-09-13T06:51:48Z"),
"majorityOpTime" : {
"ts" : Timestamp(1536821508, 1),
"t" : NumberLong(1)
},
"majorityWriteDate" : ISODate("2018-09-13T06:51:48Z")
},
"maxBsonObjectSize" : 16777216,
"maxMessageSizeBytes" : 48000000,
"maxWriteBatchSize" : 100000,
"localTime" : ISODate("2018-09-13T06:51:54.761Z"),
"logicalSessionTimeoutMinutes" : 30,
"minWireVersion" : 0,
"maxWireVersion" : 6,
"readOnly" : false,
"ok" : 1,
"operationTime" : Timestamp(1536821508, 1),
"$clusterTime" : {
"clusterTime" : Timestamp(1536821508, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
}
-------------------------------------日志操作--------------------------------------------------
#创建库kgc,并进入kgc
kgcrs:PRIMARY> use kgc
switched to db kgc
在kgc库中创建t1集合,插入两条信息
kgcrs:PRIMARY> db.t1.insert({"id":1,"name":"jack"})
WriteResult({ "nInserted" : 1 })
kgcrs:PRIMARY> db.t1.insert({"id":2,"name":"tom"})
WriteResult({ "nInserted" : 1 })
#查看数据
kgcrs:PRIMARY> db.t1.find()
{ "_id" : ObjectId("5b9a0d9efa7413d9cb629b39"), "id" : 1, "name" : "jack" }
{ "_id" : ObjectId("5b9a0dacfa7413d9cb629b3a"), "id" : 2, "name" : "tom" }
#数据库操作结束后我们开始日志操作
#进入local
kgcrs:PRIMARY> use local
switched to db local
#查看集合
kgcrs:PRIMARY> show collections
me
oplog.rs
replset.election
replset.minvalid
startup_log
system.replset
system.rollback.id
#查看日志文件
kgcrs:PRIMARY> db.oplog.rs.find()
(所有操作都记录在这个日志中)
#我们都知道主节点能进行操作,从节点只能充当复制集(不能操作)那就不能查看,但有一条命令可以查看
#登录到从节点后查看,发现查看不了
kgcrs:SECONDARY> show dbs
2018-09-13T15:28:51.529+0800 E QUERY [thread1] Error: listDatabases failed:{
"operationTime" : Timestamp(1536823728, 1),
"ok" : 0,
"errmsg" : "not master and slaveOk=false",
"code" : 13435,
"codeName" : "NotMasterNoSlaveOk",
"$clusterTime" : {
"clusterTime" : Timestamp(1536823728, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
} :br/>[email protected]/mongo/shell/utils.js:25:13
[email protected]/mongo/shell/mongo.js:65:1br/>[email protected]/mongo/shell/utils.js:849:19
[email protected]/mongo/shell/utils.js:739:15
br/>@(shellhelp2):1:1
#输入命令
kgcrs:SECONDARY> rs.slaveOk()
#查看一下(可以)
kgcrs:SECONDARY> show dbs
admin 0.000GB
config 0.000GB
kgc 0.000GB
#命令记不住,可以查看帮助
kgcrs:SECONDARY> rs.help()
#查看日志时间和大小
kgcrs:SECONDARY> rs.printReplicationInfo()
configured oplog size: 990MB
log length start to end: 2812secs (0.78hrs)
oplog first event time: Thu Sep 13 2018 14:49:16 GMT+0800 (CST)
oplog last event time: Thu Sep 13 2018 15:36:08 GMT+0800 (CST)
now: Thu Sep 13 2018 15:36:12 GMT+0800 (CST)
#查看节点和复制时间
kgcrs:SECONDARY> rs.printSlaveReplicationInfo()
source: 192.168.120.136:27018
syncedTo: Thu Sep 13 2018 15:40:28 GMT+0800 (CST)
0 secs (0 hrs) behind the primary
source: 192.168.120.136:27019
syncedTo: Thu Sep 13 2018 15:40:28 GMT+0800 (CST)
0 secs (0 hrs) behind the primary
#调整日志文件大小(离线升级)
#首先进入admin
kgcrs:SECONDARY> use admin
switched to db admin
#关闭服务
kgcrs:SECONDARY> db.shutdownServer()
server should be down...
#注销Replia set相关启动参数,并修改port端口号成27028
#进入配置文件
[[email protected] ~]# vim /etc/mongod2.conf
#replication:
#replSetName: kgcrs将这两条先注释掉(退出复制集)
将端口27018改成27028
#重启服务
[[email protected] ~]# mongod -f /etc/mongod2.conf
#全备当前节点的所有oplog记录
[[email protected] ~]# mongodump --port 27028 --db local --collection ‘oplog.rs‘
2018-09-13T16:01:34.259+0800 writing local.oplog.rs to
2018-09-13T16:01:34.280+0800 done dumping local.oplog.rs (347 documents)
[[email protected] ~]# mongo --port 27028
use local
switched to db local
#删除原有的
db.oplog.rs.drop()
true
#创建新的,并设置大小(2048M)
db.runCommand({create:"oplog.rs",capped:true,size:(210241024*1024)})
{ "ok" : 1 }
#关闭服务
use admin
switched to db admin
db.shutdownServer()
#再进配置文件
[[email protected] ~]# vim /etc/mongod2.conf
#去掉注释,添加大小
replication:
replSetName: kgcrs
oplogSizeMB: 2048
#把端口改回27018
#开启服务
[[email protected] ~]# mongod -f /etc/mongod2.conf
#进入27018
#查看大小
kgcrs:SECONDARY> rs.printReplicationInfo()
configured oplog size: 2048MB
log length start to end: 100secs (0.03hrs)
oplog first event time: Thu Sep 13 2018 16:10:29 GMT+0800 (CST)
oplog last event time: Thu Sep 13 2018 16:12:09 GMT+0800 (CST)
now: Thu Sep 13 2018 16:12:16 GMT+0800 (CST)
-------------------------------部署认证复制---------------------------------------------
#j进入主节点
kgcrs:PRIMARY> use admin
switched to db admin
#创建用户设置密码
kgcrs:PRIMARY> db.createUser({"user":"root","pwd":"123","roles":["root"]})
Successfully added user: { "user" : "root", "roles" : [ "root" ] }
#编辑配置文件
[[email protected] ~]# vim /etc/mongod.conf
#开启security添加两条语句
security:
keyFile: /usr/bin/kgcrskeyl
clusterAuthMode: keyFile
#修改后面几台同步操作()
[[email protected] ~]# vim /etc/mongod2.conf
security:
keyFile: /usr/bin/kgcrskey2
clusterAuthMode: keyFile
[[email protected] ~]# vim /etc/mongod3.conf
security:
keyFile: /usr/bin/kgcrskey3
clusterAuthMode: keyFile
[[email protected] ~]# vim /etc/mongod4.conf
security:
keyFile: /usr/bin/kgcrskey4
clusterAuthMode: keyFile
#写入
[[email protected] ~]# cd /usr/bin/
[[email protected] bin]# echo "kgcrs key" > kgcrskey1
[[email protected] bin]# echo "kgcrs key" > kgcrskey2
[[email protected] bin]# echo "kgcrs key" > kgcrskey4
[[email protected] bin]# echo "kgcrs key" > kgcrskey3

[[email protected] bin]# mongod -f /etc/mongod.conf --shutdown
killing process with pid: 50970
[[email protected] bin]# chmod 600 kgc*
[[email protected] bin]# mongod -f /etc/mongod.conf
#依次重启四个节点
#进入primary
kgcrs:PRIMARY> show dbs #无法查看数据库
kgcrs:PRIMARY> rs.status() #无法查看复制集

kgcrs:PRIMARY>use admin #身份验证登录
kgcrs:PRIMARY>db.auth("root","123")
#登录成功,可以查看

MongoDB复制集管理(后续)

原文地址:http://blog.51cto.com/13756916/2174833

时间: 2024-10-14 20:35:48

MongoDB复制集管理(后续)的相关文章

MongoDB复制集管理优化

本文章将介绍MongoDB复制集的基本配置和管理,分别包括配置从节点可以读取数据.查看复制集状态.更改oplog大小.配置带认证的复制集 复制集的选举原理 复制是基于操作日志oplog,相当于Mysql中的二进制日志,只记录发生改变的记录.复制是将主节点的oplog日志同步并应用到其他从节点的过程. 选举的原理 节点的类型分为标准(host)节点.被动(passive)节点和仲裁(arbiter)节点. 标准节点可能被选举为活跃(primary)节点,有选举权. 被动节点有完整副本,不可能成为活

MongoDB复制选举原理及复制集管理

MongoDB复制集的选举原理 MongoDB复制的原理 MongoDB的复制是基于操作日志oplog,相当于MySQL中的二进制日志,只记录发生改变的记录.复制是将主节点的oplog日志同步并应用到其他从节点的过程. MongoDB选举的原理 MongoDB的节点分为三种类型,分别为标准节点(host).被动节点(passive)和仲裁节点(arbiter) 只有标准节点才有可能被选举为活跃节点(主节点),拥有选举权.被动节点有完整副本,不可能成为活跃节点,具有选举权.仲裁节点不复制数据,不可

MongoDB复制集及管理

MongoDB复制集及管理 MongoDB复制集概述 什么是复制集 复制集是额外的数据副本,是跨多个服务器同步数据的过程,复制集提供了冗余并增加了数据可用性,通过复制集可以对硬件故障和中断的服务进行恢复. 复制集的优点如下: 1).让数据更安全:2).高数据可用性:3).灾难恢复:4).无停机恢复(如备份.索引重建.故障转移):5).读缩放(额外的副本读取):6).副本集对应用程序是透明的: 复制集工作原理 MongoDB的复制集至少需要两个节点.其中一个是主节点(Primary),负责处理客户

【亲测】教你如何搭建 MongoDB 复制集 + 选举原理

目录 1·MongoDB 复制集概述2·MongoDB 复制集部署3·MongoDB 复制集管理(添加.移除等)4·复制集的总结 MongoDB 复制集是什么? 之前的一片文章讲了 MongoDB 的安装和日常的操作,有兴趣的朋友可以看看 MongoDB 的安装和简单操作 1)什么是复制集? 复制集是额外的一种数据副本,是跨多个服务器同步数据的过程,通俗的说就是可以在不同的服务器上备份数据,专业点说就是冗灾处理.通过复制集可以对硬件和终端的服务进行恢复. 2)复制集的优势如下: 1-让数据更加安

MongoDB复制集部署和基本管理

MongoDB复制集部署和基本管理 MongoDB复制集概述 复制集(Replica Sets)是额外的数据副本,是跨多个服务器同步数据的过程,复制集提供了冗余并增加了数据的可用性,通过复制集可以对硬件故障和中断服务进行恢复. 复制集由下列优点: 让数据更安全 高数据可用性(7*24) 灾难恢复 无停机维护(如备份.索引重建.故障转移) 读缩放(额外的副本读取) 副本集对应用程序是透明的 复制集工作原理 MongoDB的复制集至少需要两个节点.其中一个节点是主节点(Primary),负责处理客户

MongoDB复制集架构

MongoDB复制集架构 由数据结点,投票结点组成,需要配置集群信息,可自动检测集群中的结点健康状态,当有结点出故障时,自动下线和切换主从结点.适用于数据量较大,高可用服务 通常,为了防止单点故障应用程序需要做集群.然而在数据库中除了防止单点故障,还需要做到数据库备份,读写分离,故障转移等.而 MongoDB 的 Replica Set 恰恰都能满足这些要求. Replica Set角色 Replica Set 的成员是一堆有着同样的数据内容 mongod 的实例集合,包含以下三类角色: 主节点

MongoDB复制集技术

第1章 MongoDB复制集简介: 一组MongoDB复制集,就是一组MongoDB进程,这些进程维护同一个数据集合,复制集提供了数据冗余和高等级的可靠性,这是生产部署的基础 1.1 复制集的目的: 保证数据在生产部署是的冗余和可靠性,通过在不同的机器上保存副本来保证数据的不会因为单间损坏而丢失,能够随时应对数据丢失或者机器损坏带来的风险 还可以提高用户读写数据的性能,提高整个系统的负载 1.2 简单介绍: 1.      一组复制集就是一组MongoDB实例掌管同一个数据集,实例可以在不同的机

配置MongoDB复制集

什么是复制集? 复制集是额外的数据副本,是跨多个服务器同步数据的过程,复制集提供了冗余并增加了数据可用性,通过复制集可以对硬件故障和中断的服务进行恢复.复制集的优势如下: 让数据更安全 高数据可用性(24*7) 灾难恢复 无停机维护(如备份.索引重建.故障转移) 读缩放(额外的副本读取) 副本集对应用程序是透明的 复制集工作原理 MongoDB的复制集至少需要两个节点.其中一个是主节点(Primary),负责处理客户端的请求,其余的都是从节点(Secondary),负责复制主节点上的数据.Mon

MongoDB复制集(实现选举复制、故障切换、升级oplog大小、认证复制)

什么是复制集? 复制集(replica sets)是额外的数据副本,是跨多个服务器同步数据的过程,复制集提供了冗余并增加了数据可用性,通过复制集可以对硬件故障和中断服务进行恢复. 复制集的优势 让数据更安全. 高数据可用性. 灾难恢复. 无停机维护(如备份.索引重建.故障转移) 读缩放(额外的副本读取) 副本集对应用程序是透明的. 复制集概述 MongoDB复制集是额外的数据副本,复制集提供了冗余和增加数据可用性. MongoDB的复制集至少需要两个节点,其中主节点负责处理客户端请求,从节点负责