mongodb副本集搭建

2019-12-05  本文已影响0人  快点给我想个名

非安全认证

环境说明

Linux:CentOS7
MongoDB:mongodb-linux-x86_64-enterprise-rhel70-4.0.13
服务器IP:192.168.6.128、192.168.6.129、192.168.6.130、192.168.6.131
架构:一主两从一仲裁

解压Mongodb
  1. 解压文件并重命名为mongodb-4.0.13
创建日志及数据存放目录
  1. 目录结构如图 data和log目录.png
创建配置文件 参考官网说明
  1. 同一副本集的服务器replSetName相同。以128服务器为例:
processManagement:
   fork: true
net:
   bindIp: 192.168.6.128,127.0.0.1 #对应服务器填写自身对应IP地址
   port: 27017
storage:
   dbPath: /usr/local/mongodb-4.0.13/replica_set/data
systemLog:
   destination: file
   path: "/usr/local/mongodb-4.0.13/replica_set/log/mongodb.log"
   logAppend: true
storage:
   journal:
      enabled: true
replication:
   replSetName: set0
启动MongoDB
启动mongod客户端.png
配置副本集 参考官网说明
  1. 这里配置不加入仲裁节点,稍候以命令方式加入。
  2. 登录任意一台服务器的mongo客户端,执行如下命令:
var rsconf = {
    _id: "set0",
    members: 
    [
        {
            _id: 1,
            host: "192.168.6.128:27017"
        },
        {
            _id: 2,
            host: "192.168.6.129:27017"
        },
        {
            _id: 3,
            host: "192.168.6.130:27017"
        }
    ]
}
  1. 副本集初始化
rs.initiate(rsconf)
添加仲裁节点
  1. 通过mongo登录主节点,将仲裁节点加入副本集。执行
 rs.addArb("192.168.6.131:27017")

最后可通过rs.status()命令查看副本集状态信息

安全认证

其他步骤相同,不同点从配置文件开始

创建key 参考官方说明
  1. 每个服务器都需要执行下列命令,或通过scp拷贝文件到其他服务器对应目录
openssl rand -base64 756 > /usr/local/mongodb-4.0.13/replica_set/key/replicat_set.key
chmod 600 /usr/local/mongodb-4.0.13/replica_set/key/replicat_set.key
创建配置文件
processManagement:
   fork: true
net:
   bindIp: 192.168.6.128 #对应服务器填写自身对应IP地址
   port: 27017
storage:
   dbPath: /usr/local/mongodb-4.0.13/replica_set/data
systemLog:
   destination: file
   path: "/usr/local/mongodb-4.0.13/replica_set/log/mongodb.log"
   logAppend: true
storage:
   journal:
      enabled: true
replication:
   replSetName: set0
# 不同点在下面,指定key路径
security:
  keyFile: /usr/local/mongodb-4.0.13/replica_set/key/replicat_set.key
启动MongoDB
  1. 启动mongodb
  2. 创建管理员
use admin
db.createUser(
   {
     user: "simon",
     pwd: "123456",
     roles: [{role:"userAdminAnyDatabase",db:"admin"}]
   }
)
  1. 创建完成后,执行添加仲裁节点失败,查看官网文档,添加下列角色。之后在添加仲裁节点成功。
db.grantRolesToUser("simon", ["clusterAdmin"])

java客户端操作

  1. 创建test数据库
  2. 创建用户并授权
db.createUser(
   {
     user: "tester",
     pwd: "123456",
     roles: [{role:"readWrite",db:"test"}]
   }
)

  1. 客户端插入数据
public static void main(String[] args) {
        List<ServerAddress> list = new ArrayList<>(4);
        ServerAddress s128 = new ServerAddress("192.168.6.128");
        ServerAddress s129 = new ServerAddress("192.168.6.129");
        ServerAddress s130 = new ServerAddress("192.168.6.130");
        list.add(s128);
        list.add(s129);
        list.add(s130);

        MongoCredential credential = MongoCredential.createCredential("tester", "test", "123456".toCharArray());
        MongoClientOptions mongoClientOptions = MongoClientOptions.builder().build();
        MongoClient mongoClient = new MongoClient(list,credential,mongoClientOptions);
        MongoDatabase test = mongoClient.getDatabase("test");

        MongoCollection<Document> simon = test.getCollection("simon");

        for(int i = 21 ;i < 39;i++){
            Document document = new Document();
            document.append("name","张三" + i);
            document.append("age",i);
            document.append("sex",((i & 1) == 0 ? "男":"女"));
            simon.insertOne(document);
        }
    }
上一篇 下一篇

猜你喜欢

热点阅读