还在为mongodb事务犯愁吗?我感觉一切都回来了!

6 篇文章 1 订阅
3 篇文章 0 订阅

一、数据备份以及还原

1. 数据备份

mongodb使用mongodump命令对数据库进行备份。

mongodump -h host:port -d dbname -o dbdumptargetfilepath

说明:

  • -h:指定mongodb所在服务器地址(需要备份)。比如:127.0.0.1或者127.0.0.1:27017
  • -d:需要备份的数据库实例
  • -o:备份数据存放的文件路径

2.数据还原

mongodb使用mongorestore命令进行数据库还原。

mongorestore -h host:port -d dbname path

说明:

  • -h:指定mongodb所在服务器地址(需要还原)。比如:127.0.0.1或者127.0.0.1:27017
  • -d:需要备份的数据库实例
  • path:备份数据库文件存放的路径。比如:d://dbdump/mytest

以上部分就是mongodb数据库备份和还原具体命令。

二、mongodb集群搭建(docker)

为什么要搭建mongodb集群?首先:正式库肯定是要搭建集群的,来保证数据完整性和整个数据库的安全性以及整个数据库的性能;其次:mongodb事务控制不能在单点模式下进行,需要在副本集环境下进行事务处理。所以,搭建mongodb集群还是很有必要的。

1. 下载镜像(关于docker怎么下载,可以自行百度一下)

docker pull mongo

2. 启动三个节点

docker run --name m0 -p 27018:27017 -d mongo --replSet "rs"
docker run --name m1 -p 27019:27017 -d mongo --replSet "rs"
docker run --name m2 -p 27020:27017 -d mongo --replSet "rs"

3. 配置副本集

进入容器,连接mongo

docker exec -it m0 mongo admin

进行配置

var config = {
 	_id:"rs",
 	members: [
 		{_id: 0, host: "192.168.1.128:27018"},
 		{_id: 1, host: "192.168.1.128:27019"},
 		{_id: 2, host: "192.168.1.128:27020"}
 	]
};
rs.initiate(config);

按照以上配置就可完成mongodb的副本集配置。

三、springboot配置mongodb事务

1. 首先新增一个配置类代码如下:

@Configuration
public class MongoTransactionConfig {
    // MongoDbFactory网上好多都是用这个,但是会报错,自己尝试了下面这个(不用谢我)
    @Bean
    public MongoTransactionManager transactionManager(MongoDatabaseFactory dbFactory) {
        return new MongoTransactionManager(dbFactory);
    }
}

2. 然后就跟平常使用事务注解一样使用就行了

@Service
public class UserService {

    @Resource
    MongoTemplate mongotemplate;

    public List<User> getAllUser(){
        return mongotemplate.findAll(User.class);
    }

    @Transactional
    public boolean addUser(User user, UserInfo userInfo){
        user.setUserInfo(userInfo);
        mongotemplate.save(userInfo);
        mongotemplate.save(user);
        throw new RuntimeException("测试事务回滚");   //事务测试代码
        return true;
    }

}

自说自话。最近发现了一件事就是,那种能让你不管能给多少钱、不管能花多少时间、不管投入多少精力都愿意去做的事情好像越来越少了,好像都没有了,好害怕这种感觉。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
是的,在使用 Spring Boot 同时连接 MySQL 和 MongoDB 的情况下,你需要为 MySQL 配置默认事务。这是因为 Spring Boot 默认使用的是嵌入式的 H2 数据库,而 H2 数据库是基于内存的,不支持事务操作。因此,如果你不对 MySQL 进行默认事务配置,可能会导致 Spring Boot 在使用 MySQL 时出现事务相关的错误。 在 Spring Boot 中,你可以通过在应用程序的配置文件(application.properties 或 application.yml)中设置以下属性,为 MySQL 配置默认事务: ``` spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/mydb?useSSL=false spring.datasource.username=root spring.datasource.password=123456 spring.datasource.initialization-mode=always spring.datasource.continue-on-error=true spring.datasource.tomcat.max-active=50 spring.datasource.tomcat.max-idle=20 spring.datasource.tomcat.max-wait=10000 spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect spring.jpa.hibernate.ddl-auto=update spring.data.mongodb.host=localhost spring.data.mongodb.port=27017 spring.data.mongodb.database=mydb ``` 在上面的配置中,我们设置了 MySQL 的相关属性,包括数据源的 URL、用户名、密码、初始化模式等。同时,我们也设置了 MongoDB 的相关属性,包括主机名、端口号、数据库名称等。 注意,这里我们没有显式地配置 MySQL 的默认事务,因为 Spring Boot 默认使用的是支持事务的 InnoDB 存储引擎,因此我们不需要进行额外的配置。但如果你需要使用其他存储引擎,建议在配置文件中显式地指定默认事务

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值