副本集定义
- PRIMARY: 192.168.3.135:28158
- SECONDARY: 192.168.3.135:28159
- SECONDARY: 192.168.3.135:28160
配置数据库存储位置和日志位置
配置dbpath/logpath路径:vim mongodb_copy_1.conf 到 mongodb_copy_3.conf
注意replSet=rs是副本集的名称,三个配置都要一样
keyFile 文件
mongodb 副本集加密码认证(keyFile认证)的简单方法
配置文件
# 配置文件port=28158 #端口dbpath= /www/mongodb-linux-x86_64-rhel80-4.4.2/data/db_copy_1 #数据库存文件存放目录logpath= /www/mongodb-linux-x86_64-rhel80-4.4.2/logs/mongodb_coy_1.log #日志文件存放路径logappend=true #使用追加的方式写日志fork=true #以守护进程的方式运行,创建服务器进程maxConns=3000 #最大同时连接数#noauth=false #不启用验证journal=true #每次写入会记录一条操作日志(通过journal可以重新构造出写入的数据)。#即使宕机,启动时wiredtiger会先将数据恢复到最近一次的checkpoint点,然后重放后续的journal日志来恢复。storageEngine=wiredTiger #存储引擎有mmapv1、wiretiger、mongorocksbind_ip = 0.0.0.0 #这样就可外部访问了,例如从win10中去连MongoDB# 为高速缓存分配的最大内存量;默认为物理RAM的1/2# wiredTigerCacheSizeGB <float>wiredTigerCacheSizeGB=0.5replSet = rs #副本集的名称#keyFile=/www/mongodb-linux-x86_64-rhel80-4.4.2/keyfile #keyFile认证
操作流程
副本集初始化
登入192.168.3.135:28158实例,进行副本集初始化
use admin// 初始化副本集conf={"_id" : "rs","members" : [{"_id" : 0,"host" : "192.168.3.135.137:28158","priority":3 // 设置节点优先级别},{"_id" : 1,"host" : "192.168.3.135.137:28159","priority":0 // 不参与主节点的选举},{"_id" : 2,"host" : "192.168.3.135.137:28160","priority":0 // 不参与主节点的选举}]}rs.initiate(conf)// 如果要补充成员可以使用rs.add("host:prot")// 删除某个成员rs.remove("host:prot")// 修改某个节点优先级var config=rs.config()config.members[2].priority=3rs.reconfig(config)// 查看rs.config();// 查看自己是否主节点db.isMaster();
设置密码认证用于副本之间的安全连接
// 设置主节点admin数据库密码use admindb.runCommand({"updateUser" : "root","pwd": "password""customData" : {},"roles" : [{"role" : "dbAdmin","db" : "admin"},{"role" : "dbAdminAnyDatabase","db" : "admin"},{"role" : "readWriteAnyDatabase","db" : "admin"},{"role" : "root","db" : "admin"},{"role" : "userAdminAnyDatabase","db" : "admin"}]});// 关闭数据库实例 1-3 号实例$ mongod --shutdown --dbpath ../data/db_copy_1$ mongod --shutdown --dbpath ../data/db_copy_2$ mongod --shutdown --dbpath ../data/db_copy_3// 设置秘钥$ openssl rand -base64 666 > /www/mongodb-linux-x86_64-rhel80-4.4.2/keyfile// 设置秘钥权限$ chmod 600 /www/mongodb-linux-x86_64-rhel80-4.4.2/keyfile// 修改各个配置文件把注释去掉$ keyFile=/www/mongodb-linux-x86_64-rhel80-4.4.2/keyfile #keyFile认证// 启动实例$ mongod -f mongodb_copy_1.conf$ mongod -f mongodb_copy_2.conf$ mongod -f mongodb_copy_3.conf# 去配置文件中增加该属性显示缓存大小$ storage.wiredTiger.engineConfig.cacheSizeGB
使用 Studio 3T 连接
连接
设置密码
连接成功

设置从节点不参与主节点选举
// 设置成员优先级为0,这样可以不参与主节点的选举,只能接受读取操作和同步主节点的数据var config=rs.config()config.members[1].priority=0config.members[2].priority=0rs.reconfig(config)
SpringBoot 配置事务
@Configurationpublic class TransactionConfig {@BeanMongoTransactionManager transactionManager(MongoDatabaseFactory factory) {return new MongoTransactionManager(factory);}}
使用 Shell 连接
// 连接本地的数据库$ mongo --host 127.0.0.1 --port 28118 --authenticationDatabase admin -u user -p password
