iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >大数据 MongoDB 复制集管理
  • 271
分享到

大数据 MongoDB 复制集管理

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

mongoDB 复制集 MonGoDB复制是将数据同步在多个服务器的过程。 复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性。 复制还允许您从硬

mongoDB 复制集

  • MonGoDB复制是将数据同步在多个服务器的过程。

  • 复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性。

  • 复制还允许您从硬件故障和服务中断中恢复数据。

复制集的优势

  • 保障数据的安全性
  • 数据高可用性 (24*7)
  • 灾难恢复
  • 无需停机维护(如备份,重建索引,压缩)
  • 分布式读取数据

    MongoDB复制原理

    mongodb的复制至少需要两个节点。其中一个是主节点,负责处理客户端请求,其余的都是从节点,负责复制主节点上的数据。

mongodb各个节点常见的搭配方式为:一主一从、一主多从。

主节点记录在其上的所有操作oplog,从节点定期轮询主节点获取这些操作,然后对自己的数据副本执行这些操作,从而保证从节点的数据与主节点一致。

MongoDB复制结构图如下所示:

大数据 MongoDB 复制集管理

以上结构图中,客户端从主节点读取数据,在客户端写入数据到主节点时, 主节点与从节点进行数据交互保障数据的一致性。

复制集集特征:

  • N 个节点的集群
  • 任何节点可作为主节点
  • 所有写入操作都在主节点上
  • 自动故障转移
  • 自动恢复

安装 MongoDB (tar安装) :

  • 1.安装创建多实例 :

tar -zxvf mongodb-linux-x86_64-3.2.1.tgz -C /usr/local/
cd /usr/local/
mv mongodb-linux-x86_64-3.2.1/ mongodb      #重命名

mkdir -p /data/mongodb/mongodb{1,2,3,4}     #创建数据目录
mkdir -p /data/logs
touch /data/logs/mongodb{1,2,3,4}.log       #创建日志文件
cd /data/logs/
chmod 777 *.log      #赋予权限

cd /usr/local/mongodb/bin
vim mongodb1.conf

port=27017
dbpath=/data/mongodb/mongodb1
logpath=/data/logs/mongodb1.log
logappend=true
fork=true
maxConns=5000
storageEngine=mmapv1

replSet=test     #复制集名称
------------------------------------------------------------------------------------
#下面是yum安装时修改、添加的
replication:           #去注释
  replSetName: test   #添加复制集名称
ln -s /usr/local/mongodb/bin/mongod /usr/bin/  #把mongodb常用的命令添加到系统命令中
ln -s /usr/local/mongodb/bin/mongo /usr/bin/
  • 2.开启多实例、初始化配置复制集 :

[root@localhost bin]# mongo
> cfg={"_id":"test","members":[{"_id":0,"host":"192.168.217.129:27017"},{"_id":1,"host":"192.168.217.129:27018"},{"_id":2,"host":"192.168.217.129:27019"}]}
#配置复制集 ,注意复制集的名称要一致
{
    "_id" : "test",
    "members" : [
        {
            "_id" : 0,
            "host" : "192.168.217.129:27017"
        },
        {
            "_id" : 1,
            "host" : "192.168.217.129:27018"
        },
        {
            "_id" : 2,
            "host" : "192.168.217.129:27019"
        }
    ]
}
> rs.initiate(cfg)   #初始化配置时保证从节点没有数据
{ "ok" : 1 }
test:PRIMARY> rs.status()    #查看复制集的完整状态
{ 
    "set" : "test",
        .......
        {
            "_id" : 0,
            "name" : "192.168.217.129:27017",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",       #27017 端口作为主节点
            "uptime" : 1234,
            "optime" : {
                "ts" : Timestamp(1531961046, 1),
                "t" : NumberLong(1)
            },
            ......
        },
        {
            "_id" : 1,
            "name" : "192.168.217.129:27018",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",    #从节点
            "uptime" : 49,
            "optime" : {
                "ts" : Timestamp(1531961046, 1),
                "t" : NumberLong(1)
            },
            ......
        },
        {
            "_id" : 2,
            "name" : "192.168.217.129:27019",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",   #从节点
            "uptime" : 49,
            "optime" : {
                "ts" : Timestamp(1531961046, 1),
                "t" : NumberLong(1)
            },
            .......
        }
    ],
    "ok" : 1
}
  • 3.添加和删除节点 :

test:PRIMARY> rs.add("192.168.217.129:27020")     #添加节点
{ "ok" : 1 }
test:PRIMARY> rs.status()
    ........
            "_id" : 3,
            "name" : "192.168.217.129:27020",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
    ........
test:PRIMARY> rs.remove("192.168.217.129:27020")  #删除节点
{ "ok" : 1 }
test:PRIMARY> rs.status()
.........
  • 4. 模拟故障,查看主节点是否自动切换 :

[root@localhost bin]# mongod -f mongodb1.conf --shutdown   #关闭主节点端口
killing process with pid: 3552
[root@localhost bin]# mongo --port 27018  
test:SECONDARY> rs.status()
{
    "set" : "test",
    .......
        {
            "_id" : 0,
            "name" : "192.168.217.129:27017",   
            "health" : 0,
            "state" : 8,
            "stateStr" : "(not reachable/healthy)",  
            "uptime" : 0,
            "optime" : {
            .......
        {
            "_id" : 1,
            "name" : "192.168.217.129:27018",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
            "uptime" : 1811,
            .......
        {
            "_id" : 2,
            "name" : "192.168.217.129:27019",   #自动切换主节点
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "uptime" : 712,
            ......
        }
    ],
    "ok" : 1
}
  • 5. 手动切换主节点 :

[root@localhost bin]# mongo --port 27019  
test:PRIMARY> rs.freeze(30)        #暂停30s不参与选举
{ "ok" : 1 }
test:PRIMARY> rs.stepDown(60,30)  
#交出主节点位置,维持从节点状态不少于60秒,等待30秒使主节点和从节点日志同步

test:SECONDARY> rs.status()
......
  • 6. 允许从节点读取数据 :

test:SECONDARY> show dbs   #
2018-07-19T09:04:34.898+0800 E QUERY    [thread1] Error: listDatabases failed:{ "ok" : 0, "errmsg" : "not master and slaveOk=false", "code" : 13435 } :
_getErrorWithCode@src/mongo/shell/utils.js:23:13
Mongo.prototype.getDBs@src/mongo/shell/mongo.js:53:1
shellHelper.show@src/mongo/shell/utils.js:700:19
shellHelper@src/mongo/shell/utils.js:594:15
@(shellhelp2):1:1

test:SECONDARY> rs.slaveOk()    #允许默认从节点读取数据
test:SECONDARY> show dbs
local  1.078GB
  • 7. 更改 oplog 大小 :

test:PRIMARY> use local
switched to db local
test:PRIMARY> rs.printReplicationInfo()  #查看日志文件能够使用的大小 默认oplog大小会占用64位实例5%的可用磁盘空间
configured oplog size:   95.37109375MB
log length start to end: 1103secs (0.31hrs)
oplog first event time:  Thu Jul 19 2018 08:43:55 GMT+0800 (CST)
oplog last event time:   Thu Jul 19 2018 09:02:18 GMT+0800 (CST)
now:                     Thu Jul 19 2018 09:20:08 GMT+0800 (CST)
test:PRIMARY> db.runCommand({"convertToCapped":"oplog.rs","size":10000000000}) #修改  单位:B
{ "ok" : 1 }
test:PRIMARY> rs.printReplicationInfo()
configured oplog size:   9536.746032714844MB
log length start to end: 1103secs (0.31hrs)
oplog first event time:  Thu Jul 19 2018 08:43:55 GMT+0800 (CST)
oplog last event time:   Thu Jul 19 2018 09:02:18 GMT+0800 (CST)
now:                     Thu Jul 19 2018 09:20:24 GMT+0800 (CST)
test:PRIMARY> 
您可能感兴趣的文档:

--结束END--

本文标题: 大数据 MongoDB 复制集管理

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

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

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

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

下载Word文档
猜你喜欢
  • MongoDB复制集数据同步流程
    本文转自张友东的文章,文章链接: http://www.mongoing.com/archives/2369 正好解释了我的问题,所以转发记录下 2015/...
    99+
    2024-04-02
  • PostgreSQL中如何管理大数据集
    在 PostgreSQL 中管理大数据集通常需要采取一些优化策略和技术。以下是一些常见的方法: 索引优化:为大数据集中频繁查询的...
    99+
    2024-04-09
    PostgreSQL
  • mongodb如何复制数据
    MongoDB提供了多种方式来复制数据:1. **复制集(Replica Set)**:复制集是MongoDB中最常用的复制方式。它...
    99+
    2023-09-06
    mongodb
  • MongoDB中复制集集群的原理是什么
    这篇文章给大家介绍MongoDB中复制集集群的原理是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。复制集介绍MongoDB中的复制集(也被称为副本)是一组维护相同数据集的mongo...
    99+
    2024-04-02
  • JavaScript 内存管理与大型数据集
    1. 对象池化 对象池化通过预分配和重用对象,避免频繁创建和销毁对象。这可以减少内存碎片并提高性能。 2. 弱引用 弱引用是一种特殊类型的引用,当不再需要对象时,不会阻止垃圾回收器释放内存。这对于缓存和大型数据集的临时处理很有用。 3. ...
    99+
    2024-04-02
  • mongodb之replSet复制集 + auth
    ### 开启auth认证的mongodb的复制集### 注意点- 服务器节点之前时间要同步- 开启防火墙的一定要允许通过- 开启selinux的也要进行设置- 建立双击互信模式最好不过### 提前...
    99+
    2024-04-02
  • MongoDB中复制集的原理是什么
    这篇文章给大家介绍MongoDB中复制集的原理是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。复制集简介Mongodb复制集由一组Mongod实例(进程)组成,包含一个Primar...
    99+
    2024-04-02
  • mongodb集群数据机制是什么
    MongoDB集群数据机制是指在分布式环境下,MongoDB如何管理和复制数据以确保高可用性和容错性。MongoDB通过复制集(re...
    99+
    2023-09-06
    mongodb
  • mongodb复制集如何维护
    这篇文章将为大家详细讲解有关mongodb复制集如何维护,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、新增副本集成员 1、登录primary 2、use a...
    99+
    2024-04-02
  • 数据库复制革命:主从复制如何颠覆数据管理
    主从复制:数据库世界的革命 数据库复制是一种关键的数据管理技术,它允许在一个或多个数据库(副本)中维护与原始数据库(主)相同的数据副本。在主从复制中,主数据库中的所有更新都会自动传播到副本。这带来了许多好处,极大地改变了数据管理的方式。...
    99+
    2024-03-03
    数据库复制、主从复制、数据可用性、数据可伸缩性、数据性能
  • 【Mongodb】往分片复制集添加复制成员
    1.新的成员机器上安装mongo,启动shard1 [root@ip-10-1-2-183 etc]# more shard1.conf logpath=/usr/l...
    99+
    2024-04-02
  • mongodb单条数据如何限制大小
    在 MongoDB 中,可以通过在创建集合时设置 `maxSize` 参数来限制单条数据的大小。`maxSize` 参数表示集合的最...
    99+
    2023-09-04
    mongodb
  • MongoDB复制集与故障恢复机制是什么
    MongoDB复制集是一组维护相同数据集的MongoDB实例。其中有一个主节点(primary)负责处理所有的写操作,其他节点是从节...
    99+
    2024-05-07
    MongoDB
  • MongoDB中怎么管理副本集
    这期内容当中小编将会给大家带来有关MongoDB中怎么管理副本集,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 1)诊断副本集中的机器,可以...
    99+
    2024-04-02
  • 如何理解eBay的Hadoop集群应用及大数据管理
    这篇文章主要讲解了“如何理解eBay的Hadoop集群应用及大数据管理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解eBay的Hadoop集群应用及大数据管理”吧!eBay, 全球最...
    99+
    2023-06-10
  • MongoDB技术开发中遇到的复制集管理问题解决方案分析
    MongoDB是一种流行的开源文档数据库,在大型应用程序和Web服务中得到了广泛应用。它支持复制集来增加系统的可用性和容错性。然而,在开发过程中,我们可能会遇到一些复制集管理问题。本文将分析并提供解决这些问题的具体代码示例。添加新的副本集成...
    99+
    2023-10-22
    MongoDB 解决方案分析 复制集管理
  • 集中数据库管理系统
    集中数据库管理系统是一种将分布在不同地理位置的数据库集中管理的系统。该系统将分布式数据库中的数据和管理功能集中在一个中央数据库服务器...
    99+
    2023-10-12
    数据库
  • 深入剖析MongoDB的数据复制与故障恢复机制
    深入剖析MongoDB的数据复制与故障恢复机制引言:随着大数据时代的到来,数据的存储和管理变得愈发重要。在数据库领域,MongoDB作为一种广泛应用的NoSQL数据库,其数据复制和故障恢复机制对于保障数据的可靠性和高可用性至关重要。本文将深...
    99+
    2023-11-04
    MongoDB 故障恢复 数据复制
  • mongodb如何清理collection中大量数据
    小编给大家分享一下mongodb如何清理collection中大量数据,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 1 sh...
    99+
    2024-04-02
  • mongodb复制数据库的方法是什么
    MongoDB复制数据库的方法有两种:主从复制和副本集。1. 主从复制(Master-Slave Replication):主从复制...
    99+
    2023-09-12
    mongodb 数据库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作