Skip to content

Latest commit

 

History

History
104 lines (73 loc) · 2.72 KB

副本集的部署和维护.md

File metadata and controls

104 lines (73 loc) · 2.72 KB

部署副本集

副本集的安全认证

认证方式

  1. 密钥认证
  2. x.509证书进行身份验证

密钥认证

副本集总体思路是用户名、密码和keyfile文件,keyfile需要各个副本集服务启动时加载而且要是同一文件,然后在操作库是需要用户名、密码

  1. 创建密钥文件

    openssl rand -base64 756 > <path-to-keyfile>
    chmod 400 <path-to-keyfile>
  2. 将密钥文件复制到每个副本集成员

    将密钥文件复制到托管副本集成员的每个服务器。确保运行mongod 实例的用户是文件的所有者 ,并且可以访问密钥文件。

  3. 启用访问控制启动副本集的每个成员

    security 
      keyFile  <path-to-keyfile> 
    replication 
      replSetName  <replicaSetName> 
  4. keyFile文件必须满足条件:

    • 至少6个字符,小于1024字节
    • 认证时候不考虑文件中空白字符
    • 连接到副本集的成员和mongos进成的keyfile文件内容必须一样
    • 必须是base64编码,但是不能有等号
    • 文件权限必须是x00,也就是说,不能分配任何权限给group成员和other成员。

配置副本集

  1. 配置文件

    systemLog:
        destination: file
        logAppend: true
        path: /Users/machunyu/Work/mongodb/logs/run.log
    processManagement:
        fork: true
        pidFilePath: /Users/machunyu/Work/mongodb/logs/mongod.pid
    net:
        port: 27017
        bindIp: 127.0.0.1
        wireObjectCheck: true
    storage:
        dbPath: /Users/machunyu/Work/mongodb/data
        engine: wiredTiger
    security:
        authorization: enabled
        keyFile: /Users/machunyu/Work/mongodb/mongod.key #密钥文件
    replication:
        replSetName: "test_1"
    
  2. 启动

    #声明配置文件变量
    rsconf = { _id: "test_1", members: [
        { _id: 0, host: "127.0.0.1:27017" },
        { _id: 1, host: "127.0.0.1:27018" },
        { _id: 2, host: "127.0.0.1:27019" }]}
    #初始化副本集
    rs.initiate(rsconf)

将仲裁者添加到副本集中

rs.addArb("ip:port")

primary 节点重启

使用 rs.stepDown(300) 来降低主服务器,并允许其中一个辅助服务器被选为新的主服务器。

其它操作

  1. 复制集状态查询:rs.status()

  2. 查看当前副本集oplog状态:rs.printReplicationInfo()

  3. 查看复制延迟:rs.printSlaveReplicationInfo()

  4. 查看服务状态详情:db.serverStatus()

  5. 查询副本集配置:rs.conf()

  6. 主副本查询:db.isMaster()