mongodb 4.0副本集搭建的全过程_MongoDB

来源:脚本之家  责任编辑:小易  

百度MongoDB副本集群配置,有完整教程。1:首先创建3台虚拟机作为配置环境 IP1:192.168.91.128 IP2:192.168.91.129 IP3:192.168.91www.zgxue.com防采集请勿采集本网。

前言

近期有同学问mongodb副本集难不难部署,我的回答是不难,很快,几分钟搞定,比mysql MHA简单的不止一点半点。 那么到底如何部署呢?请看下文。

Mongodb,分布式文档存储数据库,由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数

1.  准备工作

set的专门的方式,和连接一个服务器不一样的。这样驱动会知道新选举出的master。 比如用node.js,连接replica set是: MongoClient.connect("mongodb://host1:port1,host2:

1.1 下载软件

用过echo加管道符将命令传入mongo的命令行 echo "db.serverStatus().mem" | mongo admin -u$user -p$pw 如果是多条命令 mongo admin -u$user -p$pw <<EO

选择版本并下载mongodb的软件,注意操作系统版本等。本次我选用的是percona分支的mongodb 4.2.8版本搭建,操作系统为centos6

也会有同步时间的,并不是完全的实时一致性,是有时间差的,只不过这个时间非常短而已。

cd /usr/local/wget https://www.percona.com/downloads/percona-server-mongodb-LATEST/percona-server-mongodb-4.2.8-8/binary/tarball/percona-server-mongodb-4.2.8-8-centos6-x86_64.tar.gztar -zxvf percona-server-mongodb-4.2.8-8-centos6-x86_64.tar.gzln -s percona-server-mongodb-4.2.8-8 mongodb

function getRandomString($len, $chars=null) { if (is_null($chars)) { $chars = "abcdefghijklmnopqrstuvwxyz"; } mt_srand(10000000*(double)microtime()); //mt_srand

1.2  规划各节点角色

function getRandomString($len, $chars=null) { if (is_null($chars)) { $chars = "abcdefghijklmnopqrstuvwxyz"; } mt_srand(10000000*(double)microtime()); //mt_srand fo

各节点角色如下

目前副本集不支持指定数据库,你只能同步整个数据库。 你可以把不希望同步的数据库单独放一个mongodb

IP  port  role
192.168.128.208 27017 PRIMARY
192.168.128.209 27017 SECONDARY
192.168.128.209 28017 ARBITER

3. 简单的复制 就像分片技术一样,MongoDB范围内复制过程同样简单好用,在副本机器上还有大量的复制选项。灵活的功能可满足用户应用的需求。 4. 易于查询 MongoDB以

2  部署

它应该有可能,MongoDB的不建议现在的主从官方推荐副本副本集副本集是提高系统的可靠性,扩展碎片是用了两个级别,如果你不能用太鸡肋。 但原来的水平横向扩展MongoD

2.1  创建各节点相关目录

data\db\)启MongoDB用--dbpath指定我自设置数据存储目录 备份MongoDB数据:要简单创建数据存储目录副本直接copy份 恢复MongoDB数据:MongoDB启用--dbpa

创建数据目录、日志目录等相关目录

[root@m1 ~]# mkdir -p /data/mongodb/27017/{data,logs,tmp,etc,keyfile}[root@m1 ~]# cd /data/mongodb/27017/[root@m1 27017]# ll总用量 20drwxr-xr-x 2 root root 4096 8月 7 16:59 datadrwxr-xr-x 2 root root 4096 8月 7 16:59 etcdrwxr-xr-x 2 root root 4096 8月 7 16:59 keyfiledrwxr-xr-x 2 root root 4096 8月 7 16:59 logsdrwxr-xr-x 2 root root 4096 8月 7 16:59 tmp

2.2  配置文件

创建配置文件,并添加对应的配置信息,注意仲裁节点的端口

[root@m1 27017]# cd /data/mongodb/27017/etc/[root@m1 etc]# vim mongod.conf添加如下内容storage: dbPath: /data/mongodb/27017/data journal: enabled: truesystemLog: destination: file logAppend: true path: /data/mongodb/27017/logs/mongod.logprocessManagement: fork: true pidFilePath: /data/mongodb/27017/tmp/mongod.pidnet: port: 27017 bindIp: 0.0.0.0replication:  replSetName: "test1" # 副本集名称

2.3   启动各节点

以其中一个节点为例,其他节点修改对应配置文件即可

[root@m1 local]# /usr/local/mongodb/bin/mongod -f /data/mongodb/27017/etc/mongod.conf about to fork child process, waiting until server is ready for connections.forked process: 30019child process started successfully, parent exiting

2.4  初始化副本集

初始化副本集,指定各节点id及角色,注意副本集的名称和配置文件里一致。

在任意节点执行如下语句

> use adminswitched to db admin> rs.initiate( {... _id: "test1",... members: [... { _id: 0, host: "192.168.128.208:27017" },... { _id: 1, host: "192.168.128.209:27017" },... { _id: 2, host: "192.168.128.209:28017",arbiterOnly:true }... ] }){ "ok" : 1, "$clusterTime" : { "clusterTime" : Timestamp(1596792682, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } }, "operationTime" : Timestamp(1596792682, 1)}

完成后可以查看各集群状态,如下,可见当前192.168.128.208:27017 为PRIMARY节点

test1:PRIMARY> rs.status(){ "set" : "test1", "date" : ISODate("2020-08-07T11:09:24.454Z"), "myState" : 1, "term" : NumberLong(1), "syncingTo" : "", "syncSourceHost" : "", "syncSourceId" : -1, "heartbeatIntervalMillis" : NumberLong(2000), "majorityVoteCount" : 2, "writeMajorityCount" : 2, "optimes" : { "lastCommittedOpTime" : { "ts" : Timestamp(1596798563, 1), "t" : NumberLong(1) }, "lastCommittedWallTime" : ISODate("2020-08-07T11:09:23.663Z"), "readConcernMajorityOpTime" : { "ts" : Timestamp(1596798563, 1), "t" : NumberLong(1) }, "readConcernMajorityWallTime" : ISODate("2020-08-07T11:09:23.663Z"), "appliedOpTime" : { "ts" : Timestamp(1596798563, 1), "t" : NumberLong(1) }, "durableOpTime" : { "ts" : Timestamp(1596798563, 1), "t" : NumberLong(1) }, "lastAppliedWallTime" : ISODate("2020-08-07T11:09:23.663Z"), "lastDurableWallTime" : ISODate("2020-08-07T11:09:23.663Z") }, "lastStableRecoveryTimestamp" : Timestamp(1596798513, 1), "lastStableCheckpointTimestamp" : Timestamp(1596798513, 1), "electionCandidateMetrics" : { "lastElectionReason" : "electionTimeout", "lastElectionDate" : ISODate("2020-08-07T09:31:33.409Z"), "electionTerm" : NumberLong(1), "lastCommittedOpTimeAtElection" : { "ts" : Timestamp(0, 0), "t" : NumberLong(-1) }, "lastSeenOpTimeAtElection" : { "ts" : Timestamp(1596792682, 1), "t" : NumberLong(-1) }, "numVotesNeeded" : 2, "priorityAtElection" : 1, "electionTimeoutMillis" : NumberLong(10000), "numCatchUpOps" : NumberLong(0), "newTermStartDate" : ISODate("2020-08-07T09:31:33.444Z"), "wMajorityWriteAvailabilityDate" : ISODate("2020-08-07T09:31:34.050Z") }, "members" : [ { "_id" : 0, "name" : "192.168.128.208:27017", "health" : 1, "state" : 1, "stateStr" : "PRIMARY", "uptime" : 5950, "optime" : { "ts" : Timestamp(1596798563, 1), "t" : NumberLong(1) }, "optimeDate" : ISODate("2020-08-07T11:09:23Z"), "syncingTo" : "", "syncSourceHost" : "", "syncSourceId" : -1, "infoMessage" : "", "electionTime" : Timestamp(1596792693, 1), "electionDate" : ISODate("2020-08-07T09:31:33Z"), "configVersion" : 1, "self" : true, "lastHeartbeatMessage" : "" }, { "_id" : 1, "name" : "192.168.128.209:27017", "health" : 1, "state" : 2, "stateStr" : "SECONDARY", "uptime" : 5882, "optime" : { "ts" : Timestamp(1596798563, 1), "t" : NumberLong(1) }, "optimeDurable" : { "ts" : Timestamp(1596798563, 1), "t" : NumberLong(1) }, "optimeDate" : ISODate("2020-08-07T11:09:23Z"), "optimeDurableDate" : ISODate("2020-08-07T11:09:23Z"), "lastHeartbeat" : ISODate("2020-08-07T11:09:23.672Z"), "lastHeartbeatRecv" : ISODate("2020-08-07T11:09:22.804Z"), "pingMs" : NumberLong(0), "lastHeartbeatMessage" : "", "syncingTo" : "192.168.128.208:27017", "syncSourceHost" : "192.168.128.208:27017", "syncSourceId" : 0, "infoMessage" : "", "configVersion" : 1 }, { "_id" : 2, "name" : "192.168.128.209:28017", "health" : 1, "state" : 7, "stateStr" : "ARBITER", "uptime" : 5882, "lastHeartbeat" : ISODate("2020-08-07T11:09:23.672Z"), "lastHeartbeatRecv" : ISODate("2020-08-07T11:09:22.952Z"), "pingMs" : NumberLong(0), "lastHeartbeatMessage" : "", "syncingTo" : "", "syncSourceHost" : "", "syncSourceId" : -1, "infoMessage" : "", "configVersion" : 1 } ], "ok" : 1, "$clusterTime" : { "clusterTime" : Timestamp(1596798563, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } }, "operationTime" : Timestamp(1596798563, 1)}test1:PRIMARY>

3  修改为认证模式

为考虑安全性等,需要开启认证模式(需要通过用户名/密码方式登录)

3.1 创建用户

创建超级管理员账号

test1:PRIMARY> db.createUser({user: "root", pwd: "Root#123", roles: [{role: "root", db: "admin"}]})Successfully added user: { "user" : "root", "roles" : [ { "role" : "root", "db" : "admin" } ]}

3.2  创建key文件

在主库上执行脚本生成key文件,然后将结拷贝到另外2个节点

[root@m1 mongodb]# cd /data/mongodb/27017/keyfile/[root@m1 keyfile]# openssl rand -base64 756 > mongo.key[root@m1 keyfile]# chmod 600 mongo.key # 必须修改为600权限,否则无法启动

以上完成后,将文件复制到另外2个节点

3.3  修改配置文件

配置文件中 添加如下内容,注意不同节点的文件路径

security: authorization: enabled clusterAuthMode: keyFile keyFile: /data/mongodb/27017/keyfile/mongo.key

3.4  重启后并用认证模式登陆

# 关闭mongodb[root@m1 keyfile]# /usr/local/mongodb/bin/mongod -f /data/mongodb/27017/etc/mongod.conf -shutdownkilling process with pid: 30675# 启动mongodb[root@m1 keyfile]# /usr/local/mongodb/bin/mongod -f /data/mongodb/27017/etc/mongod.conf about to fork child process, waiting until server is ready for connections.forked process: 2430child process started successfully, parent exiting# 认证模式登陆[root@m1 keyfile]# [root@m1 keyfile]# /usr/local/mongodb/bin/mongo -u root -p 'Root#123' --authenticationDatabase admin

至此,mongodb 副本集搭建完毕,你会了吗?

总结

到此这篇关于mongodb 4.0副本集搭建的文章就介绍到这了,更多相关mongodb4.0副本集搭建内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网!

在MongoDB中,文档是对数据的抽象,它被使用在Client端和Server端的交互中。所有的Client端(各种语言的Driver)都会使用这种抽象,它的表现形式就是我们常说的BSON(Binary JSON )。BSON是一个轻量级的二进制数据格式。MongoDB能够使用BSON,并将BSON作为数据的存储存放在磁盘中。当Client端要将写入文档,使用查询等等操作时,需要将文档编码为BSON格式,然后再发送给Server端。同样,Server端的返回结果也是编码为BSON格式再放回给Client端的内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • mongodb的主从复制及副本集的replset配置教程
  • mongodb 副本集搭建问题总结及解决办法
  • mongodb3.0.5 副本集搭建及spring和java连接副本集配置详细介绍
  • mongodb3.4集群搭建实战之高可用的分片+副本集
  • 详解mongodb中用sharding将副本集分配至服务器集群的方法
  • mongodb副本集和分片示例详解
  • centos 6.4创建mongodb副本集
  • mongodb副本集丢失数据的测试实例教程
  • mongodb 复制(副本集)学习笔记
  • 老生常谈mongodb数据库基础操作
  • mongodb 中聚合统计计算--$sum表达式
  • mongodb常用操作汇总
  • mongodb中强大的统计框架aggregation使用实例解析
  • mongodb中mapreduce编程模型使用实例
  • mongodb常用操作命令大全
  • mongodb常见错误与解决方法小结(mongodb中经常出现的错误)
  • mongodb分片集群部署详解
  • mongodb系列教程(五):mongo语法和mysql语法对比学习
  • mongodb单表数据的导出和恢复实例讲解
  • MongoDb 为什么用副本集
  • mongodb带密码的副本集加入分片后怎么访问
  • mongodb的副本集和分片集群有什么区别
  • PHP支持Mongodb副本集联接吗
  • mongodb 副本集 读哪个节点
  • mongodb 副本集 仲裁节点相关必要吗
  • 如何用shell脚本监控mongodb副本集状态
  • mongodb副本集怎么保证数据的一致性
  • mongodb副本集有关host的问题
  • 请教Mongodb 3.2.1 副本集问题
  • mongoDB如何实现基于DB级别的主从复制或者副本集机制
  • mongodb数据库有哪些优势
  • mongodb 按什么规则分片
  • 如何在Ubuntu 14.04上备份,恢复及迁移MongoDB数据库
  • mongodb视频教程那里有啊,请介绍
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess数据库文摘数据库其它首页mongodb的主从复制及副本集的replset配置教程mongodb 副本集搭建问题总结及解决办法mongodb3.0.5 副本集搭建及spring和java连接副本集配置详细介绍mongodb3.4集群搭建实战之高可用的分片+副本集详解mongodb中用sharding将副本集分配至服务器集群的方法mongodb副本集和分片示例详解centos 6.4创建mongodb副本集mongodb副本集丢失数据的测试实例教程mongodb 复制(副本集)学习笔记老生常谈mongodb数据库基础操作mongodb 中聚合统计计算--$sum表达式mongodb常用操作汇总mongodb中强大的统计框架aggregation使用实例解析mongodb中mapreduce编程模型使用实例mongodb常用操作命令大全mongodb常见错误与解决方法小结(mongodb中经常出现的错误)mongodb分片集群部署详解mongodb系列教程(五):mongo语法和mysql语法对比学习mongodb单表数据的导出和恢复实例讲解mongodb常用操作命令大全mongodb各种查询操作详解mongodb数据库插入、更新和删除操mongodb 数据库操作--备份 还原 mongodb插入数据的3种方法mongodb中使用distinct去重的简单mongodb整库备份与还原以及单个cmongodb查询操作限制返回字段的方浅谈mysql和mariadb区别(mariadbmongodb 实现远程连接mongodb exception: $concat only suppormongodb 数据类型(null/字符串/数字/日期mongodb操作的模块手动封装express+mongoose实现对mongodb增删改查操mongodb 中聚合统计计算--$sum表达式windows或linux系统中备份和恢复mongodb数mongodb使用c#驱动数据插入demomongodb 主从复制实例讲解centos 7下用yum快速安装mongodb的方法教mongodb中的mapreduce简介
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved