taro-mall icon indicating copy to clipboard operation
taro-mall copied to clipboard

搭建mongodb副本集数据库

Open apersonw opened this issue 3 years ago • 0 comments

一、创建docker-compose.yml文件

version: '3.7'
services:
  master-mongo:
    image: mongo
    container_name: master-mongo
    ports:
    - "27017:27017"
    volumes:
    - ./data/master:/data/db
    command: mongod --dbpath /data/db --replSet testSet --oplogSize 128
  secondary-mongo:
    image: mongo
    container_name: secondary-mongo
    ports:
    - "27018:27017"
    volumes:
    - ./data/secondary:/data/db
    command: mongod --dbpath /data/db --replSet testSet --oplogSize 128
  arbiter-mongo:
    image: mongo
    container_name: arbiter-mongo
    ports:
    - "27019:27017"
    volumes:
    - ./data/arbiter:/data/db
    command: mongod --dbpath /data/db --replSet testSet --oplogSize 128

二、进入master节点终端bash

#1、输入mongo命令,进入mongo命令行
#2、输入以下副本集加入配置(10.22.33.44是宿主机的ip地址)
config={
  _id:"testSet",
  members:[
    {_id:0,host:"10.22.33.44:27017","priority": 2},
    {_id:1,host:"10.22.33.44:27018","priority": 1},
    {_id:2,host:"10.22.33.44:27019","priority": 1}
  ]
}
#3、根据config初始化,初始化成功会返回ok
rs.initiate(config)
#4、查看状态命令
rs.status()

三、在@Configuration注解下添加响应式事务管理器

@Bean
ReactiveMongoTransactionManager reactiveTransactionManager(ReactiveMongoDatabaseFactory reactiveMongoDatabaseFactory) {
    return new ReactiveMongoTransactionManager(reactiveMongoDatabaseFactory);
}

四、在需要使用事务的地方添加注解即可

@Transactional

apersonw avatar Jun 30 '20 06:06 apersonw