首页 > 数据库 >MongoDB高阶特性:副本集、分片、事务、索引

MongoDB高阶特性:副本集、分片、事务、索引

时间:2023-10-04 18:12:03浏览次数:34  
标签:副本 -- MongoDB 27017 db mongo2 分片 高阶 节点

一、副本集(主从复制)

1、docker-compose.yml

version: '3'
services:
  mongo1:
    image: mongo
    container_name: mongo1
    command: mongod --replSet rs0 --port 27017
    volumes:
      - ./mongodb-cluster/mongod1:/data/db
    ports:
      - "27017:27017"
    networks:
      - weiji-net
  mongo2:
    image: mongo
    container_name: mongo2
    command: mongod --replSet rs0 --port 27018
    volumes:
      - ./mongodb-cluster/mongod2:/data/db
    ports:
      - "27018:27017"
    networks:
      - weiji-net
  mongo3:
    image: mongo
    container_name: mongo3
    command: mongod --replSet rs0 --port 27019
    volumes:
      - ./mongodb-cluster/mongod3:/data/db
    ports:
      - "27019:27017"
    networks:
      - weiji-net
networks:
  weiji-net:
    external: true
    name: app_net

2、初始化副本集

进入mongodb容器中

docker exec -it mongo1 mongo

初始化副本集(rs0)

var cfg = {"_id": "rs0","members": [{"_id": 0,"host": "mongo1:27017","priority": 2},{"_id": 1,"host": "mongo2:27018","priority": 1},{"_id": 2,"host": "mongo3:27019","priority": 0}]};

rs.initiate(cfg, { force: true });  # 初始化副本集。force: true 强制初始化
rs.reconfig(cfg, { force: true });  # 重新配置副本集
rs.secondaryOk();  # 允许在次要节点上执行读操作
rs.status();  # 获取副本集的当前状态,包括主节点(PRIMARY)、次要节点(SECONDARY)
db.getMongo().setReadPref('nearest');  # 设置读偏好为 "nearest",这意味着MongoDB将尝试从就近的节点读取数据,以降低延迟
db.getMongo().setSecondaryOk();  # 允许在次要节点上执行读操作

3、测试

连接

你也可以使用mongodb客户端工具连接主节点或命令行进入

docker exec -it mongo2 mongosh --host mongo2:27018

增加数据

use test
db.testCollection.insert({ message: "Hello, MongoDB" })
db.testCollection.find()

检查数据是否同步

当你从主节点进入容器后,可以直接查询到新增的数据,当从从节点进入后需要手动开启“读偏好”,否则会报错“not master and slaveOk=false”

db.getMongo().setReadPref("primaryPreferred");
use test
db.testCollection.find()

二、分片

三、事务

四、索引

标签:副本,--,MongoDB,27017,db,mongo2,分片,高阶,节点
From: https://www.cnblogs.com/yifanSJ/p/17742538.html

相关文章

  • MongoDB 和 Redis 的区别
    在现代的应用程序开发中,数据库是不可或缺的组成部分。MongoDB和Redis是两种流行的数据库,它们在一些方面有相似之处,但在其他方面则有着显著的差异。下面,我们将探讨MongoDB和Redis的区别。数据模型MongoDB是一个面向文档的数据库,它存储的数据是以BSON(BinaryJSON)格式存......
  • MongoDB使用教程
    一、基本概念一)数据库(database)数据库是一个仓库,在仓库中可以存放集合二)集合(collection)集合类似于数组,在集合中可以存放文档三)文档(document)文档是数据库中的最小单位,存储和操作的内容都是文档在MongoDB中,数据库和集合都不需要手动创建,当我们创建文档时,如果文档所在的集合或......
  • MongoDB搭建
    一、Docker-composeversion:'3'services:mongodb:image:mongocontainer_name:mongodbrestart:alwaysports:-27017:27017volumes:-/var/docker/server/mongodb/database:/data/dbenvironment:-MONGO_......
  • mongodb 导入导出数据
    导入数据C:\mongodb\bin>mongoimport--dbchapterenglish--collectionuserTable--filec:\userTable.jsonC:\mongodb\bin>mongoimport--dbjunxin--collectionproduct--jsonArray/jsit/junxin/junxinData.json 导出数据C:\mongodb\bin>mongoexport-hlo......
  • MongoDB playground All In One
    MongoDBplaygroundAllInOneMongoDBREPLhttps://mongoplayground.net/db={"teacher":[{"_id":ObjectId("64fee9b54273ac2234441225"),"teacherid":ObjectId("64f1d72a4331bc8fc4c5930f"......
  • 解密IP分片与重组:数据传输中的关键技术
    引言在上一章节中,我们详细讨论了IP的分类和无分类原则的原理以及其在网络通信中的应用。IP分片与重组是在数据包传输过程中起到关键作用的机制。当数据包的大小超过网络链路的MTU(最大传输单元)限制时,IP分片将数据包分割为多个较小的分片进行传输。这些分片在网络中独立传输,到达目......
  • Hive函数高阶——explode函数、UDAF聚合函数
    1、explode函数(输入一行,输出多行)引入lateralview侧视图的概念解决上面问题的限制:2、UDAF聚合函数增强聚合——groupingsets(相当于unionall)增强聚合——cube增强聚合——rollup(是cube的子集,以左侧维度为主)......
  • MongoDB 解析:灵活文档数据库与 Docker Compose 部署
    MongoDB是一款开源、高性能的NoSQL数据库,以其无模式的文档存储格式(BSON)而著称,广泛应用于众多开源项目,包括但不限于Yapi等。它在大规模数据存储和实时数据处理方面表现出色,因此备受青睐。在本文中,我们将深入探讨MongoDB的特性,并详细阐述如何使用DockerCompose轻松部署Mon......
  • macos M1安装MongoDB及基本crud操作
    安装:官网教程InstallMongoDBCommunityEditiononmacOS—MongoDBManual我看的是这个教程:Mac安装MongoDb保姆级教程以及踩坑笔记(图文详解(xjx100.cn) 里面有详细步骤及报错/解决.庆幸我在安装过程没遇到什么错误MongoDB教程MongoDB教程|菜鸟教程(runoob.com)Mo......
  • 数据库连接:使用Python连接到MySQL、SQLite和MongoDB
    在现代应用程序和数据科学中,数据库连接是至关重要的一部分。Python提供了丰富的库和驱动程序,可以轻松连接各种数据库,包括MySQL、SQLite和MongoDB。本文将介绍如何使用Python连接到这些不同类型的数据库,并提供相应的代码示例。连接到MySQL数据库MySQL是一个流行的关系型数据库管理系......