iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >mongdb副本集搭建
  • 878
分享到

mongdb副本集搭建

2024-04-02 19:04:59 878人浏览 独家记忆
摘要

一:安装mongodb 常用的有两种方法:我采用的是方法2: 方法1 安装包方式,直接下载.tgz文件,然后解压即可: https://www.mongoDB.com/download-center/en

一:安装mongodb 常用的有两种方法:我采用的是方法2:

方法1 安装包方式,直接下载.tgz文件,然后解压即可:

https://www.mongoDB.com/download-center/enterprise # 下载需要的版本

下载percona for monGodb

Https://www.percona.com/downloads/percona-server-mongodb-LATEST/tar -zxvf mongodb-linux-x86_64-3.0.6.tgz # 解压mv mongodb-linux-x86_64-3.0.6/ /usr/bin/mongodb/bin/mongod # 将解压包拷贝到指定目录

这种启动方式如下:

/usr/bin/mongodb/bin/mongod -f /etc/mongod.conf

方法2 yum 安装,然后默认配置文件在/etc/mongod.conf,这样安装的mongodb

的相关命令都在/usr/bin下面的!

安装yum源(percona自己的yum源)

# yum -y install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm

yum list | grep mongo #选择合适版本

[root@beijing-fuli-hadoop-02 bin]# yum install Percona-Server-MongoDB-34-mongos.x86_64

这种方法的启动方式:

service mongod start

二:生成 keyfile

[root@beijing-fuli-hadoop-02 mongodb]# openssl rand -base64 756 >/data/mongodb/config/mongodb.key

三:编写配置文件

1.注意文件的空格和大小写都会导致启动失败

2.如果配置了配置了clusterAuthMode,那么一定要提前生成keyfile

3.关于节点的优先级的设置,具有较高Priority的Secondary相对于较低Priority的Secondary

会更早的发起选举,也更容易成为新的Primary节点,但是即使优先级低的Secondary

也可以在段时间内被选举为Primary节点,重点来了,这种情况发生的时候副本集就会继续

进行选举,直到可用的最高优先级Secondary被选举为Primary,所以当你想让特定的

Secondary节点成为主的时候,你才有必要配置不同的Primary,否则你只需要配置成一样的

Priority(例如都是1即可)

4.关于vote的设置:从mongodb 3.2开始,无投票权的成员必须配置Priority为0,priority大于

0的成员其vote必须配置为1

四:如果你想用非root来启动mongodb,那么就创建 mongodb的账号和属组

[root@beijing-fuli-hadoop-02 init.d]# groupadd -g 666 mongod

[root@beijing-fuli-hadoop-02 init.d]# useradd -m -s /bin/bash -g mongod -u 666 mongod

五:启动数据库:三个节点都启动

[mongod@beijing-fuli-hadoop-02 db]$ /usr/bin/mongodb/bin/mongod -f /etc/mongod.conf

about to fork child process, waiting until server is ready for connections.

forked process: 89234

child process started successfully, parent exiting

六:转为复制集架构

> use admin # 切换到 admin 数据库switched to db admin # 初始化副本集,副本集名称为 liuhe_rs ,第一个成员为自己本身,然后他会被选举为主> rs.initiate({_id:'liuhe_rs',members: [{ _id: 0 , host: "10.9.21.178:27017"},{ _id: 1 , host: "10.9.21.179:27017"},{ _id: 2 , host: "10.9.21.114:27017"}]}) { "ok" : 1 }

或者如下:

>config={_id:'liuhe_rs',members: [{ _id: 0 , host: "10.9.21.178:27017"},{ _id: 1 , host: "10.9.21.179:27017"},{ _id: 2 , host: "10.9.21.114:27017"}]}

>rs.initiate(config)

七:启动报错:

7.1,参数indexBuildRetry不能在副本集中配置

[root@beijing-fuli-hadoop-02 mongodb]# /usr/bin/mongodb/bin/mongod -f /etc/mongod.conf

2019-11-11T22:36:15.551+0800 F CONTROL [main] Failed global initialization: BadValue: replication.replSetName is not allowed when storage.indexBuildRetry is specified

报错内容:

Failed global initialization: BadValue: replication.replSetName is not allowed when storage.indexBuildRetry is specified

storage 参数 indexBuildRetry 不能与 副本集共存,当开启 副本集的时候,就需要将indexBuildRetry 参数注释。官网链接

Changed in version 4.0: The setting storage.indexBuildRetry cannot be used in conjunction withreplication.replSetName.

7.2.启动报错 error number 100

启动的时候会在数据目录下生成相应的初始化库以及特定的问题,所以

要保证这个目录是空的

[mongod@beijing-fuli-hadoop-02 ~]$ /usr/bin/mongodb/bin/mongod -f /etc/mongod.conf

about to fork child process, waiting until server is ready for connections.

forked process: 89082

ERROR: child process failed, exited with error number 100

To see additional infORMation in this output, start without the "--fork" option.

可能是因为 你的 数据库目录下有别的文件,清空即可!

7.3 启动报错:error number 14

[mongod@beijing-fuli-hadoop-04 log]$ /usr/bin/mongodb/bin/mongod -f /etc/mongod.conf

about to fork child process, waiting until server is ready for connections.

forked process: 100524

ERROR: child process failed, exited with error number 14

To see additional information in this output, start without the "--fork" option.

查看日志发现如下:

2019-11-16T16:51:37.938+0800 E NETWORK [initandlisten] Failed to unlink Socket file /tmp/mongodb-27017.sock Operation not permitted

原来是之前用root账号启动的,生成了一个root用户的mongodb-27017.sock文件,然后又用mongod

用户启动,结果没有权限操作,删除这个文件即可,然后用mongod用户启动会自动生成一个

属于mongod的文件,如下:

[root@beijing-fuli-hadoop-02 tmp]# ll mongodb-27017.sock

srwx------ 1 mongod mongod 0 Nov 16 17:12 mongodb-27017.sock

那么mongodb-27017.sock这个文件是做什么的?

服务器与本地客户端进行通信的Unix套接字文件。

启动时会打开。

默认的存储路径是/tmp/mongodb-<port>.sock

八:mongodb的基本维护操作命令:

8.1:查看mongodb 副本集的状态

MongoDB Enterprise liuhe_rs:PRIMARY> rs.status()

8.2:允许secondary节点可以写

对于replica set 中的secondary 节点默认是不可读的,在写多读少的应用中,使用Replica Sets来实现读写分离。通过在连接时指定或者在主库指定slaveOk,由Secondary来分担读的压力,Primary只承担写操作

第一种方法:db.getMongo().setSlaveOk();#从库执行,并且是临时启作用,

第二种方法:rs.slaveOk(); #从库执行,并且是临时启作用,

上面的两种方法都是临时起作用的,下次再通过mongo进入实例的时候,查询仍然会报错,为此可以通过下列方式

[mongod@beijing-fuli-hadoop-04 ~]$ vi .mongorc.js

rs.slaveOk();

这样的话以后每次通过mongo命令进入都可以查询了

8.3.查看当前mongodb连接的那个库

> use liuwenhe

switched to db liuwenhe

> db.stats()

{

"db" : "liuwenhe",

"collections" : 1,

"views" : 0,

"objects" : 1,

"avgObjSize" : 48,

"dataSize" : 48,

"storageSize" : 16384,

"numExtents" : 0,

"indexes" : 1,

"indexSize" : 16384,

"fsUsedSize" : 18297913344,

"fsTotalSize" : 75949613056,

"ok" : 1

}

8.4查看副本集从库状态信息(延迟、成员等)

MongoDB Enterprise liuhe_rs:PRIMARY> rs.printSlaveReplicationInfo()

source: 10.9.21.179:27017

syncedTo: Sat Nov 16 2019 21:56:29 GMT+0800 (CST)

0 secs (0 hrs) behind the primary

source: 10.9.21.114:27017

syncedTo: Sat Nov 16 2019 21:56:29 GMT+0800 (CST)

0 secs (0 hrs) behind the primary

如上所示,有两个从库,分别是10.9.21.179、10.9.21.114,然后同步到了主库的oplogs

Sat Nov 16 2019 21:56:29 的时间点了,没有延迟;

8.5:查看副本集的oplog信息:

MongoDB Enterprise liuhe_rs:PRIMARY> rs.printReplicationInfo()

configured oplog size: 51200MB

log length start to end: 424168secs (117.82hrs)

oplog first event time: Tue Nov 12 2019 00:10:41 GMT+0800 (CST)

oplog last event time: Sat Nov 16 2019 22:00:09 GMT+0800 (CST)

now: Sat Nov 16 2019 22:00:16 GMT+0800 (CST)

8.6查看某个库下的用户:

MongoDB Enterprise liuhe_rs:PRIMARY> use admin

switched to db admin

MongoDB Enterprise liuhe_rs:PRIMARY> show users

九:创建管理员用户

use admin

db.createUser(

{

user: "liuwenhe",

pwd: "liuwenhe",

roles: [ { role: "root", db: "admin" } ]

}

)

MongoDB Enterprise liuhe_rs:PRIMARY> db.auth('liuwenhe','liuwenhe')

登录数据库:

mongo -u liuwenhe -p liuwenhe --authenticationDatabase admin

创建普通账号:

db.createUser({user:'user', pwd:'123456', roles:[ {role:'readWrite', db:'liuwenhe'}]})

您可能感兴趣的文档:

--结束END--

本文标题: mongdb副本集搭建

本文链接: https://www.lsjlt.com/news/46559.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MongoDB 副本集的搭建过程
    目录1、创建节点目录2、创建配置文件,配置文件内容如下:3、启动三个实例4、初始化集群5、登录到实例上,使用rs.conf查看实例状态。7、登录到其中一台节点上,添加默认账号即可8、...
    99+
    2024-04-02
  • 如何进行MongoDB副本集搭建
    如何进行MongoDB副本集搭建,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。我们之前的案例都是在单个节点上实现的,在生产环境中这种做法是有风险的,如果服务宕机...
    99+
    2023-06-19
  • 怎么搭建一个MongoDB 副本集
    怎么搭建一个MongoDB 副本集?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1、创建节点目录mkdir -p /data/mongo_28018/{...
    99+
    2023-06-14
  • MongoDB日常运维-04副本集搭建
    MongoDB日常运维-04副本集搭建  一:MongoDB常用命令汇总 二:MongoDB安装 三:MongoDB主从复制搭建 四:MongoDB副本集搭建 ...
    99+
    2024-04-02
  • mongodb副本集搭建的步骤是什么
    搭建MongoDB副本集的步骤如下: 安装MongoDB:在每台服务器上安装MongoDB,并确保MongoDB服务正常运行。 ...
    99+
    2024-04-17
    mongodb
  • docker搭建mongodb单节点副本集的实现
    目录背景启动步骤可能遇到的问题解决办法背景 在开发中,我们很容易通过docker启动一个普通的mongodb数据库服务。但是有时候为了保持与线上环境一致,或者为了利用mongodb副...
    99+
    2024-04-02
  • mongodb3.4集群搭建实战之高可用的分片+副本集
    前言 最近因为工作的原因,在学习使用mongodb数据库,mongodb是最常用的nodql数据库,在数据库排名中已经上升到了前六。这篇文章介绍如何搭建高可用的mongodb(分片+副本)集群,分享出来供大...
    99+
    2024-04-02
  • mongo副本集集群安装配置
    新建用户和目录 useradd mongodb mkdir  -p /comm/mg10000/data mkdir  -p /comm/mg10001/data mkdir...
    99+
    2024-04-02
  • MongoDB如何删除添加副本集并修改副本集IP等信息
    本篇文章为大家展示了MongoDB如何删除添加副本集并修改副本集IP等信息,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。MongoDB 删除,添加副本集,并修改副本...
    99+
    2024-04-02
  • mongodb如何更换副本集
    要更换MongoDB副本集,需要遵循以下步骤:1. 添加新副本集成员:首先,在新服务器上安装MongoDB,并确保它可以连接到现有的...
    99+
    2023-08-23
    mongodb
  • MongoDB副本集的示例分析
    小编给大家分享一下MongoDB副本集的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!实验环境使用的Mongodb版本为...
    99+
    2024-04-02
  • MongoDB中怎么配置副本集
    MongoDB中怎么配置副本集,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。环境准备三台服务器,地址分别是:192.168.248.128192.168.248.13519...
    99+
    2023-06-19
  • Linux如何创建副本
    这篇文章主要介绍了Linux如何创建副本,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Linux系统可以用cp命令来实现对文件和目录的备份,操作步骤如下:首先复制一个文件,需...
    99+
    2023-06-10
  • MongoDB中怎么切换副本集
    MongoDB中怎么切换副本集,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。MongoDB 副本集切换方法1、rs.stepD...
    99+
    2024-04-02
  • MongoDB中怎么管理副本集
    这期内容当中小编将会给大家带来有关MongoDB中怎么管理副本集,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 1)诊断副本集中的机器,可以...
    99+
    2024-04-02
  • MongoDB中怎么实现副本集
    MongoDB中怎么实现副本集,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 1、环境节点IP操作系统Mong...
    99+
    2024-04-02
  • springboot怎么连接mongodb副本集
    要连接MongoDB副本集,需要在Spring Boot应用程序中配置MongoDB的副本集连接。以下是连接MongoDB副本集的步...
    99+
    2024-04-17
    springboot mongodb
  • Linux下如何配置MongoDB副本集
    这篇文章给大家分享的是有关Linux下如何配置MongoDB副本集的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。MongoDB复制是将数据同步在多个服务器的过程。复制提供了数据的冗余备份,并在多个服务器上存储数据...
    99+
    2023-06-27
  • MongoDB 使用副本集备份添加新的辅助副本成员
    问题描述: 在生产环境中,当辅助副本成员的读压力很大时,可通过添加新的辅助副本成员来缓解压力。为了能实现主副本成员不停机,并减轻主副本成员的压力,可在辅助副本成员上mongodump备份数据;为了...
    99+
    2024-04-02
  • MongoDB中副本集的示例分析
    这篇文章主要介绍了MongoDB中副本集的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体如下:replication set复制...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作