超详细:安装mongodb副本集+spring配置+事务回滚+Java代码测试
- 一:mongodb**前言**
- 二:什么是副本集
- 三:先在目录看下面步骤,有个总体观念,安装主的mongodb和副本集的步骤
-
- 1.安装的主机和端口和准备
- 2. 先安装一个主的mongodb,参考我以前的博客:
- 3.修改主节点的配置文件: 如下图,先不开启验证
- 4.再安装一个从的mongodb,配置文件跟主的一样,只是端口不一样
- 5.启动主节点,并且进入主的节点创建root管理员用户账号,如下
- 6.关闭主节点,在主节点上生成证书
- 7.在主节点修改配置文件,添加配置认证,然后复制配置文件到从节点,两边保持一样的配置
- 8.启动主和从节点
- 9. 进入主节点客户端,定义配置信息,把两台节点加进来
- 10.重新连接下主节点,主节点的状态就变成PRIMARY
- 11.测试同步,分别在两个窗口查询数据是否同步
- 12.在主节点中创建一个数据库和该数据库管理员
- 四:java代码配置
一:mongodb前言
最近需要验证一下mongodb的事务回滚,上网查了些资料,站在了巨人的肩膀上,自己总结整个安装和配置代码的过程,亲测有效,也为其他人少走一些坑,也方便自己日后查看。话不多说,开撸。
版本了解
0 当前稳定版本只是到了4.0.10,而开发版到了4.2.0-rc1
1 4.0.10 只支持副本集的回滚
2 MongoDB 4.0.x中,能够支持多文档事务。
3 spring和mongodb的jar包需要升级
Spring:5.1.1.RELEASE 以上 这里我采用 5.1.2.RELEASE
SpringDataMongoDB:2.1.1.RELEASE 以上 这里我采用2.1.2.RELEASE
java 操作方式:
使用spring的 MongoTemplate 来操作
二:什么是副本集
副本集(Replica Set)是一组MongoDB实例组成的集群,也就是一主多从;
由一个主(Primary)服务器和多个备份(Secondary)服务器构成(可以在一台机器上面)
通过Replication(复制),将数据的更新由Primary推送到其他实例上,在一定的延迟之后,每个MongoDB实例维护相同的数据集副本。
三:先在目录看下面步骤,有个总体观念,安装主的mongodb和副本集的步骤
1.安装的主机和端口和准备
该文采取在同一台机器上面安装两个mongodb,一主一从;
主节点: 192.168.10.128:20788
从节点: 192.168.10.128:20789
系统: Centos 7
软件: mongodb 4.0.10
2. 先安装一个主的mongodb,参考我以前的博客:
https://blog.youkuaiyun.com/xyb0926/article/details/92080383
如果在同一台主机配置多台mongodb,建议不要配置环境变量,容易操作而且不会出现问题
3.修改主节点的配置文件: 如下图,先不开启验证
port=27088 #端口
dbpath= /usr/mongodb/mongodb-4.0.10/db #数据库存文件存放目录
logpath= /usr/mongodb/mongodb-4.0.10/log/mongodb.log #日志文件存放路径
logappend=true #使用追加的方式写日志
fork=true #以守护进程的方式运行,创建服务器进程
maxConns=100 #最大同时连接数
journal=true #每次写入会记录一条操作日志(通过journal可以重新构造出写入的数据)。
#即使宕机,启动时wiredtiger会先将数据恢复到最近一次的checkpoint点,然后重放后续的journal日志来恢复。
storageEngine=wiredTiger #存储引擎,有mmapv1、wiretiger、mongorocks
bind_ip = 0.0.0.0 #设置成全部ip可以访问,这样就可以在windows中去连虚拟机的MongoDB,也可以设置成某个网段或者某个ip
noauth=true #不启用验证
4.再安装一个从的mongodb,配置文件跟主的一样,只是端口不一样
加了一个服务,端口改成 27089
5.启动主节点,并且进入主的节点创建root管理员用户账号,如下
进入安装目录
cd /usr/mongodb_primary/mongodb-4.0.10/bin
在bin的目录下执行,启动服务
./mongod -f /usr/mongodb_primary/mongodb-4.0.10/mongodb.conf
在主节点创建root管理员账号
use admin
db.createUser( {user: