博客
关于我
Mongodb sharding转换一个副本集为分片集群
阅读量:794 次
发布时间: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/

    你可能感兴趣的文章
    Mybatis配置
    查看>>
    Mybatis连接池与事务深入
    查看>>
    MyBatis实现 if-else功能
    查看>>
    MyBatis实操第一课5月17号.在学完了MaBatis框架后。
    查看>>
    MyBatis学习总结(9)——使用MyBatis Generator自动创建代码
    查看>>
    MyBatis学习总结(7)——Mybatis缓存
    查看>>
    MyBatis学习总结(6)——调用存储过程
    查看>>
    MyBatis学习总结(4)——解决字段名与实体类属性名不相同的冲突
    查看>>
    MyBatis学习总结(2)——使用MyBatis对表执行CRUD操作
    查看>>
    MyBatis学习总结(27)——Mybatis-Plus使用小技巧
    查看>>
    MyBatis学习总结(26)——Mybatis源码中使用了哪些设计模式?
    查看>>
    mybatis
    查看>>
    MybaisPlus的Mapper.xml中,数据库中的字段是Mybatis中的关键字如何处理---SpringCloud工作笔记185
    查看>>
    Mobx 结合 TypeScript 实现 setState 类型推导
    查看>>
    MyAdapter代码复用工具类
    查看>>
    Mock 工具使用:弱网测试
    查看>>
    Mock+Proxy在SDK项目的自己主动化測试实战
    查看>>
    Mock.js 的语法规范
    查看>>
    Mock.js 的语法规范学习
    查看>>
    my97日期控件插件的开发与编写
    查看>>