博客
关于我
Mongodb sharding转换一个副本集为分片集群
阅读量:800 次
发布时间:2023-02-09

本文共 3100 字,大约阅读时间需要 10 分钟。

MongoDB副本集和分片集群部署指南

在实际应用中,MongoDB副本集和分片集群是确保数据高可用性和水平扩展的重要手段。本文将详细介绍如何部署副本集和分片集群的完整流程。

副本集部署

部署第一个副本集

  • 创建数据目录

    创建以下目录结构:

    /data/example/firstset1/data/example/firstset2/data/example/firstset3

    使用命令:

    mkdir -p /data/example/firstset1 /data/example/firstset2 /data/example/firstset3
  • 启动三个MongoDB实例

    在不同的终端窗口启动以下命令:

    mongod --dbpath=/data/example/firstset1 --port 10001 --replSet firstset --oplogSize 700 --rest --fork --logpath=/data/example/firstset1/firstset1.log --logappend --nojournal --directoryperdb

    同样启动其他两个实例,分别使用端口10002和10003。

  • 初始化副本集

    连接任意一个MongoDB实例,执行以下命令:

    mongo mongo01:10001/admin

    输入以下配置并运行:

    var config = {    "_id": "firstset",    "members": [        { "_id": 0, "host": "mongo01:10001" },        { "_id": 1, "host": "mongo01:10002" },        { "_id": 2, "host": "mongo01:10003" }    ]};rs.initiate(config);

    初始化成功后会显示信息,确认副本集已创建。

  • 插入测试数据

    使用MongoDB Shell执行以下命令:

    use mydb;for (let i = 0; i < 100000; i++) {    const name = animal[Math.floor(Math.random() * animal.length)];    const userId = i;    const boolean = [true, false][Math.floor(Math.random() * 2)];    const createdAt = new Date();    const number = Math.floor(Math.random() * 10001);    db.test_collection.insert({        name: name,        user_id: userId,        boolean: boolean,        added_at: createdAt,        number: number    });}

    这将向test_collection中插入100万条测试数据。

  • 部署第二个副本集

  • 创建数据目录

    创建以下目录结构:

    /data/example/secondset1/data/example/secondset2/data/example/secondset3

    使用命令:

    mkdir -p /data/example/secondset1 /data/example/secondset2 /data/example/secondset3
  • 启动三个MongoDB实例

    在不同的终端窗口启动以下命令:

    mongod --dbpath=/data/example/secondset1 --port 30001 --replSet secondset --oplogSize 700 --rest --fork --logpath=/data/example/secondset1/secondset1.log --logappend --nojournal --directoryperdb

    同样启动其他两个实例,分别使用端口30002和30003。

  • 初始化副本集

    连接任意一个MongoDB实例,执行以下命令:

    mongo mongo01:30001/admin

    输入以下配置并运行:

    db.runCommand({    "replSetInitiate": {        "_id": "secondset",        "members": [            { "_id": 0, "host": "mongo01:30001" },            { "_id": 1, "host": "mongo01:30002" },            { "_id": 2, "host": "mongo01:30003" }        ]    }});
  • 将副本集加入分片集群

    运行以下命令将副本集添加到分片集群:

    db.runCommand({    addShard: "secondset/mongo01:30001,mongo01:30002,mongo01:30003"});

    成功添加后会显示确认信息。

  • 分片集群部署

    配置服务器部署

  • 创建数据文件保存目录

    创建以下目录结构:

    /data/example/config1/data/example/config2/data/example/config3

    使用命令:

    mkdir -p /data/example/config1 /data/example/config2 /data/example/config3
  • 启动配置服务器

    在不同的终端窗口启动以下命令:

    mongod --configsvr --dbpath=/data/example/config1 --port 20001 --fork --logpath=/data/example/config1/config1.log --logappend

    同样启动其他两个配置服务器,分别使用端口20002和20003。

  • 启动分片主节点

    在新的终端窗口启动以下命令:

    mongos --configdb mongo01:20001,mongo01:20002,mongo01:20003 --port 27017 --chunkSize 1 --fork --logpath=/data/example/mongos.log --logappend
  • 添加分片

  • 连接分片主节点

    运行以下命令连接分片主节点:

    mongo mongo01:27017/admin
  • 添加第一个分片

    运行以下命令将第一个副本集添加为分片:

    db.runCommand({    addShard: "firstset/mongo01:10001,mongo01:10002,mongo01:10003"});
  • 验证分片添加

    运行以下命令确认分片是否已成功添加:

    db.runCommand({ listShards: 1 });

    输出结果应显示所有分片信息。

  • 总结

    通过以上步骤,可以成功部署MongoDB的副本集和分片集群,确保数据的高可用性和系统的水平扩展。副本集用于数据的主从复制,分片集群则通过将数据分布到多个分片上,提升查询性能和系统的扩展能力。

    转载地址:http://ncffk.baihongyu.com/

    你可能感兴趣的文章
    no such file or directory AndroidManifest.xml
    查看>>
    No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android
    查看>>
    NO.23 ZenTaoPHP目录结构
    查看>>
    no1
    查看>>
    NO32 网络层次及OSI7层模型--TCP三次握手四次断开--子网划分
    查看>>
    NOAA(美国海洋和大气管理局)气象数据获取与POI点数据获取
    查看>>
    NoClassDefFoundError: org/springframework/boot/context/properties/ConfigurationBeanFactoryMetadata
    查看>>
    node
    查看>>
    node exporter完整版
    查看>>
    node HelloWorld入门篇
    查看>>
    Node JS: < 一> 初识Node JS
    查看>>
    Node JS: < 二> Node JS例子解析
    查看>>
    Node Sass does not yet support your current environment: Linux 64-bit with Unsupported runtime(93)解决
    查看>>
    Node Sass does not yet support your current environment: Windows 64-bit with Unsupported runtime(72)
    查看>>
    Node 裁切图片的方法
    查看>>
    node+express+mysql 实现登陆注册
    查看>>
    Node+Express连接mysql实现增删改查
    查看>>
    node, nvm, npm,pnpm,以前简单的前端环境为什么越来越复杂
    查看>>
    Node-RED中Button按钮组件和TextInput文字输入组件的使用
    查看>>
    vue3+Ts 项目打包时报错 ‘reactive‘is declared but its value is never read.及解决方法
    查看>>