博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot MongoDB 实现事物处理 (windows环境下的副本集创建)
阅读量:5959 次
发布时间:2019-06-19

本文共 2907 字,大约阅读时间需要 9 分钟。

hot3.png

        最近的一个项目弃用了mysql作为主要数据库,而改用了非关系型数据库MongoDB。之前初步了解过mongodb,在使用上面还算容易上手能相到的需求也基本可以满足, 但是唯独事物处理方面 麻烦的很,不过在18年的11月左右 mongo推出了4.0版本,添加了对事物的支持。 这两天反复查阅了很多资料 ,终于是实现了效果 在这里整理记录下。 

首先是项目环境: windows7操作系统,java1.8,  (在官网下载的msi版本,注意安装时 不要勾选 窗体工具选项,否则会安装的非常慢), Robo3T mongo很好用的窗体工具。

主要maven配置:

  • org.springframework.boot
    spring-boot-starter-parent
    1.5.13.RELEASE
  • org.springframework.boot
    spring-boot-starter-data-mongodb
    org.mongodb
    mongodb-driver
    org.mongodb
    mongo-java-driver
    3.8.0

 第一步,要搭建mongoDB副本集, 这是最重要的一步, 事物的实现 要基于mongo副本集群才能实现。否则在单机环境下直接去使用事物会报错

 

 1. 在安装好的下创建config配置文件 我的安装路径是( C:\Program Files\MongoDB\Server\4.0\bin ),在该目录下创建副本的配置文件 分别是【 master.cfg 主节点, slave.cfg 从节点, arbiter.cfg 仲裁节点 】 这里贴下文件内容:

        '这里要注意下,文件中列出的路径和文件必须存在 且可以自行定义'

  • # master.cfgstorage:  dbPath: D:\MongoDb\matserdb  journal:    enabled: true  engine: wiredTigersystemLog:  destination: file  logAppend: true  path:  D:\MongoDb\matserlog\MongoDb.lognet:  port: 27111  bindIp: 127.0.0.1,192.168.1.123  replication:  replSetName: mongo

 

  • # slave.cfgstorage:  dbPath: D:\MongoDb\slavedb  journal:    enabled: true  engine: wiredTigersystemLog:  destination: file  logAppend: true  path:  D:\MongoDb\slavelog\MongoDb.lognet:  port: 27112  bindIp: 127.0.0.1,192.168.1.123  replication:  replSetName: mongo

 

  • # arbiter.cfgstorage:  dbPath: D:\MongoDb\arbiterdb  journal:    enabled: true  engine: wiredTigersystemLog:  destination: file  logAppend: true  path:  D:\MongoDb\arbiterlog\MongoDb.lognet:  port: 27113  bindIp: 127.0.0.1,192.168.1.123  replication:  replSetName: mongo

2. 在上述文件配置完成后, 在bin目录下打开cmd窗口, 分别启动mongo节点。启动步骤一样,下面只拿masterdb举例 注意在启动成功后要另起窗口再启动另一端口服务。

  • mongod --config "masterdb.cfg"

        '执行过上述语句后的窗体的状态如下'

  • 67b15566b14682363f4809c48762adcb97d.jpg

        为确保执行成功, 确认下日志文件是否打印正常, 正常内容的最后一段应该是 [ Connecting to 127.0.0.1:27113 ], 这时我们就可以通过Robo3T测试下是否启动成功,如链接失败,检查下是否有操作不一致的地方,排查问题

  • cfc7072d65992bbc5ca6c5fd35a9e848192.jpg

3. 在启动成功三个节点服务后, 要将节点关联。 同样 在bin目录下 另启动一cmd窗口,顺序执行 

    mongo -port 27111

    rs.initiate({ _id: "mongo",version: 1,members: [{_id:0,host:"127.0.0.1:27111"},{_id:1,host:"127.0.0.1:27112"},{_id:2,host:"127.0.0.1:27113"}]})

    如执行成功则会打印8c3b529491cc67974b1a2e47111ba250b75.jpg

    '执行上述方法没有发现问题后,检查下执行是否成功':

    rs.status()  ,执行后打印类似以下json返回值

            health:1   //1表明状态是正常,0表明异常

            state:1     // 1表明是primary,2表明是slave,即做备份的机器

    59d1352a082ab765e0c0e304f32e3b68d67.jpg

在上述操作执行完成后, 表示基本节点创建成功, 可以进行测试:

因为我是用项目代码测试的, 所以只在这里贴下关键代码, 其他关于springmongodb资料请自行查找。

这里的主要代码是有 try 里面的内容, 其他并不重要

241de9227596677695578c7845aaa9a2c45.jpg 

测试执行 触发异常:

565d3c3993801d98eee462aa31b62b8b728.jpg

检查结果 插入数据为0 测试成功:

1354c4476674c2a7081dcae0802c93e28a6.jpg

再次测试 注释掉3489d0970578d2cf60333a30d91b316c16c.jpg

成功插入两条数据 测试成功:

40b3755622e4e81d9b45471296ce020a950.jpg

 

参考文章:

https://blog.csdn.net/wanght89/article/details/77677271

https://segmentfault.com/a/1190000016955301?utm_source=tag-newest

转载于:https://my.oschina.net/danjuan/blog/2999679

你可能感兴趣的文章
vi 命令
查看>>
1.1
查看>>
Elasticsearch 安装与启动
查看>>
[logstash-input-redis]插件使用详解
查看>>
同步代码块应用之取钱问题、线程安全问题之线程同步机制(同步函数)
查看>>
在Windows Server 2008 R2上部署ASP.NET MVC应用
查看>>
优化应用的电池寿命(笔记)-1
查看>>
SSH Secure Shell Client
查看>>
error: stray '\343' in program
查看>>
技术分享
查看>>
JFinal源码分析------初始化那些事儿
查看>>
Qt creator :qmake xxx时发生错误
查看>>
chrome安装后无法使用问题
查看>>
ckeditor4 自定义插件 多图上传 图片上传
查看>>
处理 允许远程协助连接这台计算机 灰色
查看>>
使用Jquery 加载页面时调用JS
查看>>
css+div+jquery弹出层
查看>>
求职相关(链接,不定期更新)
查看>>
pdo 连接数据库 报错 could not find driver 解决方法
查看>>
设计模式之策略模式
查看>>