MongoDB 副本集搭建
搭建mongodb副本集
- [root@ mongodb]# cd /u02
- [root@ u02]# mkdir -p mongodb/data_2777
- [root@ u02]# mkdir -p mongodb/data_3777
- [root@ u02]# mkdir -p mongodb/data_4777
- [root@ mongodb]# tar mongodb-linux-x86_64-3.2..tgz
- [root@ mongodb]# mv mongodb-linux-x86_64-3.2. mongodb
- [root@ mongodb]# mkdir -p
- [root@ ]# mkdir {conf,log,keys,pid}
- [root@ ]# mkdir {conf,log,keys,pid}
- [root@ ]# mkdir {conf,log,keys,pid}
创建配置文件
[root@ conf]# vi mongodb_2777.conf
- systemLog:
- destination: file
- logAppend: true
- path: /u02/mongodb/mongodb//log/shard1.log
- storage:
- dbPath: /u02/mongodb/data_2777
- journal:
- enabled: true
- directoryPerDB: true
- engine: wiredTiger
- wiredTiger:
- engineConfig:
- cacheSizeGB: # the maximum of half of physical RAM or gigabyte
- directoryForIndexes: true # mongod stores indexes and collections in separate subdirectories under the data (i.e. storage.dbPath) directory
- collectionConfig:
- blockCompressor: snappy # The default type of compression to use to compress collection data
- processManagement:
- fork: true # fork and run in background
- pidFilePath: /u02/mongodb/mongodb//pid/mongodb_2777.pid # location of pidfile
- net:
- bindIp: 0.0.0.0
- port:
- operationProfiling:
- slowOpThresholdMs:
- mode: slowOp
- replication:
- replSetName: shard1 #副本集的名称,副本集以此名称来识别是否属于同一个集群中
- oplogSizeMB:
- #auditLog:
- # destination: file
- # format: JSON
- # path: /u02/mongodb/mongodb//log/audit_log/audit.json
- #
启动mongodb
- /u02/mongodb/mongodb/bin/mongod -f /u02/mongodb/mongodb//conf/mongodb_2777.conf
- /u02/mongodb/mongodb/bin/mongod -f /u02/mongodb/mongodb//conf/mongodb_3777.conf
- /u02/mongodb/mongodb/bin/mongod -f /u02/mongodb/mongodb//conf/mongodb_4777.conf
登录2777端口mongodb
- [root@ conf]# /u02/mongodb/mongodb/bin/mongo --port
- MongoDB shell version: 3.2.
- connecting to: 127.0.0.1:/test
- Server has startup warnings:
- --08T19::35.621+ I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
- --08T19::35.621+ I CONTROL [initandlisten]
- --08T19::35.622+ I CONTROL [initandlisten]
- --08T19::35.622+ I CONTROL [initandlisten] ** WARNING: You are running on a NUMA machine.
- --08T19::35.622+ I CONTROL [initandlisten] ** We suggest launching mongod like this to avoid performance problems:
- --08T19::35.622+ I CONTROL [initandlisten] ** numactl --interleave=all mongod [other options]
- --08T19::35.622+ I CONTROL [initandlisten]
- --08T19::35.622+ I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
- --08T19::35.622+ I CONTROL [initandlisten] ** We suggest setting it to 'never'
- --08T19::35.622+ I CONTROL [initandlisten]
- --08T19::35.622+ I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
- --08T19::35.622+ I CONTROL [initandlisten] ** We suggest setting it to 'never'
- --08T19::35.622+ I CONTROL [initandlisten]
- shard1:PRIMARY>
- shard1:PRIMARY>conf = {_id:"shard1",members:[{_id:,host:"127.0.0.1:2777"}]};
- shard1:PRIMARY>rs.initiate(conf) ;
会显示出你的当前数据库服务实例已经加到副本集中,并且是master
- shard1:PRIMARY> db.isMaster()
- {
- "hosts" : [
- "127.0.0.1:2777",
- "127.0.0.1:3777",
- "127.0.0.1:4777"
- ],
- "setName" : "shard1",
- "setVersion" : ,
- "ismaster" : true,
- "secondary" : false,
- "primary" : "127.0.0.1:2777",
- "me" : "127.0.0.1:2777",
- "electionId" : ObjectId("7fffffff0000000000000001"),
- "maxBsonObjectSize" : ,
- "maxMessageSizeBytes" : ,
- "maxWriteBatchSize" : ,
- "localTime" : ISODate("2019-10-08T12:12:35.869Z"),
- "maxWireVersion" : ,
- "minWireVersion" : ,
- "ok" :
- }
接着添加刚刚那2个服务实例到副本集中
- shard1:PRIMARY>rs.add("127.0.0.1:3777");
- shard1:PRIMARY>rs.add("127.0.0.1:4777");
查看副本集:
- shard1:PRIMARY> rs.status()
- {
- "set" : "shard1",
- "date" : ISODate("2019-10-08T12:14:04.786Z"),
- "myState" : ,
- "term" : NumberLong(),
- "heartbeatIntervalMillis" : NumberLong(),
- "members" : [
- {
- "_id" : ,
- "name" : "127.0.0.1:2777",
- "health" : ,
- "state" : ,
- "stateStr" : "PRIMARY",
- "uptime" : ,
- "optime" : {
- "ts" : Timestamp(, ),
- "t" : NumberLong()
- },
- "optimeDate" : ISODate("2019-10-08T12:02:26Z"),
- "electionTime" : Timestamp(, ),
- "electionDate" : ISODate("2019-10-08T12:01:02Z"),
- "configVersion" : ,
- "self" : true
- },
- {
- "_id" : ,
- "name" : "127.0.0.1:3777",
- "health" : ,
- "state" : ,
- "stateStr" : "SECONDARY",
- "uptime" : ,
- "optime" : {
- "ts" : Timestamp(, ),
- "t" : NumberLong()
- },
- "optimeDate" : ISODate("2019-10-08T12:02:26Z"),
- "lastHeartbeat" : ISODate("2019-10-08T12:14:04.654Z"),
- "lastHeartbeatRecv" : ISODate("2019-10-08T12:14:03.533Z"),
- "pingMs" : NumberLong(),
- "syncingTo" : "127.0.0.1:2777",
- "configVersion" :
- },
- {
- "_id" : ,
- "name" : "127.0.0.1:4777",
- "health" : ,
- "state" : ,
- "stateStr" : "SECONDARY",
- "uptime" : ,
- "optime" : {
- "ts" : Timestamp(, ),
- "t" : NumberLong()
- },
- "optimeDate" : ISODate("2019-10-08T12:02:26Z"),
- "lastHeartbeat" : ISODate("2019-10-08T12:14:04.654Z"),
- "lastHeartbeatRecv" : ISODate("2019-10-08T12:14:03.414Z"),
- "pingMs" : NumberLong(),
- "configVersion" :
- }
- ],
- "ok" :
- }
rs.status()
"health" : 1, #代表机器正常
"stateStr" : "PRIMARY", #代表是主节点,可读写,其中有以下几下状态
1. STARTUP:刚加入到复制集中,配置还未加载
2. STARTUP2:配置已加载完,初始化;
3. RECOVERING:正在恢复,不适用读
4. ARBITER: 仲裁者
5. DOWN:节点不可到达
6. UNKNOWN:未获取其他节点状态而不知是什么状态,一般发生在只有两个成员的架构
7. REMOVED:移除复制集
8. ROLLBACK:数据回滚,在回滚结束时,转移到RECOVERING或SECONDARY状态
9. FATAL:出错。查看日志grep “replSet FATAL”找出错原因,重新做同步
10. PRIMARY:主节点
11. SECONDARY:备份节点
创建数据库:
- shard1:PRIMARY> use yoon
查看当前数据库:
- shard1:PRIMARY> db
- yoon
插入数据:
- shard1:PRIMARY> db.movie.insert({"name":"hank"});
- WriteResult({ "nInserted" : })
查看当前库下的表:
- shard1:PRIMARY> show collections
- movie
查看表中数据:
- shard1:PRIMARY> db.movie.find()
- { "_id" : ObjectId("5d9c7ee9d7a8df8fd023d6ed"), "name" : "hank" }
登录3777端口查看表movie:
- [root@ conf]# /u02/mongodb/mongodb/bin/mongo --port
- 注意:新建的slave是不能读和写的,当在从服务器上读时会出现errmsg:not master and slaveOk=flase code: 错误,需要执行:rs.slaveOk()来开启读功能
- shard1:SECONDARY> rs.slaveOk()
- shard1:SECONDARY> show dbs
- local .000GB
- yoon .000GB
- shard1:SECONDARY> use yoon
- switched to db yoon
- shard1:SECONDARY> show collections
- movie
- shard1:SECONDARY> db.movie.find()
- { "_id" : ObjectId("5d9c7ee9d7a8df8fd023d6ed"), "name" : "hank" }
MongoDB 副本集搭建的更多相关文章
- MongoDB副本集搭建及备份恢复
一.MongoDB副本集(repl set)介绍 早起版本使用master-slave,一主一从和MySQL类似,但slave在此架构中为只读,当主库宕机后,从库不能自动切换为主: 目前已经淘汰了ma ...
- mongodb副本集搭建过程中的问题和解决技巧
在我以往的认知中,一个系统一旦正式上线,多半不会轻易的迁移服务器,尤其是那种涉及到多个关联应用,涉及到多台硬件服务器的系统,因为这种迁移将是牵一发而动全身的. 但是,却仍然有这种情况存在,就如我这几天 ...
- windows版本 MongoDB副本集搭建及开启身份验证
------------恢复内容开始------------ ------------恢复内容开始------------ MongoDB副本集搭建 我搭建的是一个主节点,两个副节点 构建目录结构如下 ...
- Mongodb副本集搭建经验
一.环境配置经验 1.一般安装的副本集的时候,主实例可以有数据库和用户:从实例不能.仲裁机不能有任何数据库包括用户 2.搭建副本集的时候Host使用外网IP,否则使用Mongodb VUE 1.6.9 ...
- MongoDB 副本集搭建 & 副本集扩容
副本集的搭建 创建多实例目录 [root@redis03 ~]# mkdir /server/mongodb/2801{7,8,9}/{conf,logs,pid,data} -p 编辑多实例配置文件 ...
- mongodb副本集搭建
1.创建目录 mkdir -p /data/r1 /data/r2 /data/r3 2.启动: bin/mongod --config ../mongod.conf --replSet r1 b ...
- 在centos7上搭建mongodb副本集
1.安装副本集介绍 副本集(Replica Set)是一组MongoDB实例组成的集群,由一个主(Primary)服务器和多个备份(Secondary)服务器构成.通过Replication,将数据的 ...
- mongodb 4.0副本集搭建
近期有同学问mongodb副本集难不难部署,我的回答是不难,很快,几分钟搞定,比mysql MHA简单的不止一点半点. 那么到底如何部署呢?请看下文. 1. 准备工作 1.1 下载软件 选择版本并下 ...
- mongo副本集搭建及服务器复用方案
比较常见的mongodb副本集搭建是有:常规节点.数据副本.仲裁节点组成,也就是需要三台服务器组建.常规节点即数据的主存储节点,数据副本是主存储节点的从属节点,它定期去主节点获取更新日志来更新自己.仲 ...
随机推荐
- java中如何修改事务的隔离级别
事务的特性: 原子性(Atomicity)原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生. (多条语句要么都成功,要么都失败.) 一致性(Consistency)事务前后 ...
- Python 之并发编程之进程中(守护进程(daemon)、锁(Lock)、Semaphore(信号量))
五:守护进程 正常情况下,主进程默认等待子进程调用结束之后再结束守护进程在主进程所有代码执行完毕之后,自动终止kill -9 进程号 杀死进程.守护进程的语法:进程对象.daemon = True设置 ...
- Spring @Async之一:实现异步调用示例
什么是“异步调用”? “异步调用”对应的是“同步调用”,同步调用指程序按照定义顺序依次执行,每一行程序都必须等待上一行程序执行完成之后才能执行:异步调用指程序在顺序执行时,不等待异步调用的语句返回结果 ...
- JPG加入RAR文件原理详解
在水木看到有人上传了一张图片,说如果将其后缀改为rar,解压后会有别的文件,试了一下,果然如此.用十六进制的编辑器看了看,发现的确有理. 先是,文件头部是以JPG格式起始的,如下: ......JFI ...
- 警示框UIAlertController的使用(看完马上会用!!)
本文尽量图文并茂,并且提供对应的代码,确保看到这篇文章马上能够上手使用UIAlertController控件.-我要兑现我的务实宣言- 本文构思: 1.出具效果图,通过这种最直接方式了解该控件的展示效 ...
- python面向对象之练习题2
练习题 需求: 士兵 可以 花钱买一个AK47 士兵 可以 用开开火 士兵 可以 买弹夹 士兵 可以 上子弹 士兵 可以 给 枪 添加子弹 枪 需要弹夹和有子弹的情况下,借助士兵扣动扳机 才能开火 枪 ...
- Python可视化 | Seaborn包—kdeplot和distplot
import pandas as pd import numpy as np import seaborn as sns import matplotlib import matplotlib.pyp ...
- AC自动机 (模板)
AC自动机是用来干什么的: AC自动机是用来解决多模匹配问题,例如有单词s1,s2,s3,s4,s5,s6,问:在文本串ss中有几个单词出现过,类似. AC自动机实现这个功能需要三个部分: 1.将所有 ...
- P1067 试密码
P1067 试密码 转跳点:
- CodeForces - 876E National Property(2-sat)
题意:有n个有小写字母组成的字符串,将部分小写字母改成对应的大写字母,注意某种小写字母更改,所有的这种小写字母都会更改.若能使这给定的n个字符串符合字典序由小到大排序,则输出Yes,并输出需要修改的字 ...