• mongodb搭建副本集


    Mongodb副本集模式搭建
    本文采用三个mongodb节点进行测试,一个primary(主节点),一个secondary(从节点),一个arbiter(裁判)

    目录

    1 配置文件设置

    2 启动实例

    3 创建超级用户

    4 创建业务库和相关用户

    5 创建KeyFile

    6 开启副本集

    6.1 初始化副本集

    6.2 添加从节点和裁判

    6.3 查看配置结果

    7 测试从库的用户账户共享

    8 程序测试


    1 配置文件设置


    虽然有三个节点,但每个节点的配置文件内容形式基本一致,区别就是数据、日志路径和监听地址。一个最终的配置文件内容如下

    1. # mongod.conf
    2. # for documentation of all options, see:
    3. #   http://docs.mongodb.org/manual/reference/configuration-options/
    4. # Where and how to store data.
    5. storage:
    6.   dbPath: D:\Program Files\MongoDB\Server\6.0\bin\1\data
    7.   journal:
    8.     enabled: true
    9. #  engine:
    10. #  wiredTiger:
    11. # where to write logging data.
    12. systemLog:
    13.   destination: file
    14.   logAppend: true
    15.   path:  D:\Program Files\MongoDB\Server\6.0\bin\1\log\mongod.log
    16. # network interfaces
    17. net:
    18.   port: 27017
    19.   bindIp: 0.0.0.0
    20. #processManagement:
    21. security:
    22.  keyFile: D:\Program Files\MongoDB\Server\6.0\bin\mongodb.keyfile
    23.  authorization: enabled
    24. #operationProfiling:
    25. replication:
    26.  replSetName: rs1
    27. #sharding:
    28. ## Enterprise-Only Options:
    29. #auditLog:
    30. #snmp:

    2 启动实例


    配置好各个节点的配置文件后,就可以分别启动实例,我们先把下面配置注释掉,然后只启动准备做为主节点的实例,因为要先创建
    用户,创建好后再打开重启。

    1. #security:
    2. # keyFile: D:\Program Files\MongoDB\Server\6.0\bin\mongodb.keyfile
    3. # authorization: enabled


    注意:等副本集搭建好后,从节点和裁判会共用主节点创建的用户。

    启动:mongod --config path/mongod1.cfg

    3 创建超级用户


    使用mongodb的ssh客户端(比如MongoSH或MongoDB Compass)连接启动的主实例,以Mongosh为例,命令如下:
    mongosh "mongodb://ip:port"
    这里不需要使用用户名和密码.
    连接成功后,可以先查看数据库列表
    show dbs
    admin这个数据库肯定会有的,切换到admin
    use admin
    创建一个超级管理员用户

    1. db.createUser({
    2.   user: 'admin',  // 用户名
    3.   pwd: '123456',  // 密码
    4.   roles:[{
    5.     role: 'root',  // 角色
    6.     db: 'admin'  // 数据库
    7.   }]
    8. })

    4 创建业务库和相关用户


    可以使用MongoDB Compass连接到上面的主实例,连接字符串如下:
    mongodb://admin:123456@ip:port
    连接成功后,在Compass的DataBase选项卡下Create DataBase
    然后顺带在Compass的底部,使用Mongosh,键入如下代码,创建该库的用户

    1. db.createUser({
    2.   user: 'program',  // 用户名
    3.   pwd: '123456',  // 密码
    4.   roles:[{
    5.     role: 'dbOwner',  // 角色
    6.     db: 'mydb'   //数据库
    7.   }]
    8. })

    5 创建KeyFile


    keyFile用于副本集节点间的验证。
    使用openssl命令生成一个keyfile,并且分别关联到各个节点的配置文件,并打开验证,如下:
     

    1. security:
    2.  keyFile: D:\Program Files\MongoDB\Server\6.0\bin\mongodb.keyfile
    3.  authorization: enabled


    6 开启副本集


    首先要设置副本集名字,在本质文件中添加如下配置:
    replication:
     replSetName: rs1  
    Name随意,但三个节点的配置文件中的这个配置必须一致。

    我们还是先只操作主实例,关闭主实例,并重启(因为改了配置文件,开启了验证)
    mongod --config path/mongod1.cfg

    6.1 初始化副本集


    使用Mongosh连接到主实例
    mongosh "mongodb://ip:port"
    切换到admin库
    use admin
    认证
    db.auth('admin', '123456')
    初始化
    rs.initiate()


    6.2 添加从节点和裁判


    我们先启动从节点和裁判,启动命令同主节点:
    mongod --config path/mongodXXX.cfg   //使用各自的配置文件
    添加从节点:
    rs.add("ip:port")  // 填入从节点ip和端口
    添加裁判:
    rs.addArb("ip:port") // 填入裁判ip和端口,这里用的是addArb


    6.3 查看配置结果


    rs.status()
    理论上这时候应该看到三个节点的stateStr分别是:PRIMARY、SECONDARY和ARBITER。
    如果不行,就把三个节点重启,重新通过mongosh连接主节点使用rs.status()查看,连上后要
    先切换到admin库进行认证。

    我的测试结果如下图:

     


    7 测试从库的用户账户共享


    使用mongosh连接到从库,使用db.auth()测试之前在主库上创建的账户,理论上应该返回'OK'

    8 程序测试


    以golang客户端为例,连接副本集的连接字符串如下:

    const uri = "mongodb://program:123456@10.1.28.23:27017,10.1.28.23:27018,10.1.28.23:27019/?replicaSet=rs1&authMechanism=SCRAM-SHA-1&authSource=mydb"

    连接成功后,就可以使用副本集的Watch特性以及其它常规操作。

  • 相关阅读:
    Chrome 108版(64-bit 108.0.5359.125)网盘下载
    2022年十一届认证杯(小美赛)C题思路新鲜出炉
    商家冷启难题,快手每天8亿流量能解决吗?
    C++11标准模板(STL)- 算法(std::set_difference)
    python - yield详解
    ES6学习笔记
    如何用数据采集网关快速采集工业现场数据,怎么搭建MQTT服务器?
    自然语言处理:提取长文本进行文本主要内容(文本意思)概括 (两种方法,但效果都一般)
    spark-sql sql on yarn --deploy-mode cluster 改造
    有哪些好用的程序员接私活平台?
  • 原文地址:https://blog.csdn.net/wutaozhao/article/details/127729210