Mongodb3.0.5 副本集搭建及spring和java连接副本集配置详细介绍

yizhihongxing

Mongodb3.0.5 副本集搭建及spring和java连接副本集配置详细介绍:

搭建副本集

准备工作

  • 在三台服务器上安装 MongoDB,建议都使用相同的版本
  • 为每台服务器创建并开放 MongoDB 的端口(默认端口为 27017)
  • 配置每台服务器的主机名并添加到 /etc/hosts 文件中,例如:
192.168.1.101 mongo1
192.168.1.102 mongo2
192.168.1.103 mongo3

创建数据目录

在每台服务器上创建数据目录,例如:

mkdir -p /data/mongodb/rs1
mkdir -p /data/mongodb/rs2
mkdir -p /data/mongodb/rs3

创建副本集

在一个节点上先创建一个配置文件:

# /data/mongodb/rs1/mongodb.conf

# 数据库路径
dbpath=/data/mongodb/rs1

# 端口号
port=27017

# 日志文件
logpath=/data/mongodb/rs1/mongodb.log
logappend=true

# 主机名
hostname=mongo1

# 副本集配置
# 注意:在搭建副本集过程中,容易犯错的地方之一就是没有正确配置副本集的三个成员及优先级
# 这里只配置了一个成员,实际应用中需要配置三个成员,分别为 PRIMARY、SECONDARY 和 ARBITER
replication:
  replSetName: rs0

然后依次启动三个节点,注意,一定要按照顺序启动节点,否则会出现副本集搭建失败的情况:

# 第一个节点
mongod --config /data/mongodb/rs1/mongodb.conf

# 第二个节点
mongod --config /data/mongodb/rs2/mongodb.conf

# 第三个节点
mongod --config /data/mongodb/rs3/mongodb.conf

初始化副本集

启动配置完成后进入任意一个节点,进入 mongo shell 执行初始化副本集命令:

rs.initiate()

上述命令会配置当前节点的角色为 PRIMARY,此时只有一个节点是 PRIMARY,其他节点都是 SECONDARY。PRIMARY 节点是负责数据写入的,而 SECONDARY 节点只是在执行数据同步的工作。如果 PRIMARY 节点出现故障,其他 SECONDARY 节点会自动切换到 PRIMARY 角色,保证数据可用性。

在 PRIMARY 节点上创建一个测试用的数据库及集合:

use test
db.createCollection('user')
db.user.insert({"name": "admin"})

接着在 SECONDARY 节点上查询该集合,会发现数据已经同步过来了:

rs.slaveOk()
use test
db.user.find()

spring和java连接副本集配置

在 Spring Boot 中使用 MongoDB,需要添加以下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

配置文件中,需要增加以下配置:

spring:
  data:
    mongodb:
      uri: mongodb://mongo1:27017,mongo2:27017,mongo3:27017/test?replicaSet=rs0

其中,uri 对应的是副本集的连接字符串,test 是数据库名称,rs0 是副本集名称。

Java 代码中,需要增加 MongoClientMongoTemplate 的 bean:

@Bean
public MongoClient mongo() {

    List<ServerAddress> serverAddresses = new ArrayList<>();
    serverAddresses.add(new ServerAddress("mongo1", 27017));
    serverAddresses.add(new ServerAddress("mongo2", 27017));
    serverAddresses.add(new ServerAddress("mongo3", 27017));

    MongoClientOptions options = MongoClientOptions.builder()
            .readPreference(ReadPreference.secondaryPreferred())
            .build();

    return new MongoClient(serverAddresses, options);
}

@Bean
public MongoTemplate mongoTemplate() throws Exception {
    return new MongoTemplate(mongo(), "test");
}

其中,MongoClient 中的 readPreference 指定了读取数据时的偏好,这里是指向 SECONDARY 的节点优先。MongoTemplate 中的第一个参数是 MongoClient 实例,第二个参数是数据库名称。

使用以上配置后,即可在 Java 代码中使用 MongoTemplate 进行数据操作。

示例1

在 Java 代码中,可以使用 MongoTemplate 进行数据插入操作:

@Autowired
private MongoTemplate mongoTemplate;

public void insertUser(String name, int age) {
    Document document = new Document("name", name).append("age", age);
    mongoTemplate.insert(document, "user");
}

在 MongoDB 中,会自动根据文档结构创建对应的集合和索引。

示例2

使用 Spring Boot 开发 RESTful API,在控制器中可以注入 MongoTemplate 进行数据查询操作:

@Autowired
private MongoTemplate mongoTemplate;

@GetMapping("/users")
public List<Document> getAllUsers() {
    return mongoTemplate.findAll(Document.class, "user");
}

以上代码中,使用 findAll 方法获取 user 集合中的所有文档,并以 Document 对象的形式返回。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mongodb3.0.5 副本集搭建及spring和java连接副本集配置详细介绍 - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • Django Admin 上传文件到七牛云的示例代码

    下面是关于“Django Admin 上传文件到七牛云的示例代码”的完整攻略: 1. 准备工作 首先,你需要完成以下准备工作: 在七牛云上创建一个 Bucket,并获取相应的 Access Key 和 Secret Key; 安装 qiniu 包:pip install qiniu; 在 Django 的 settings.py 文件中,设置相应的参数,如下…

    人工智能概论 2023年5月25日
    00
  • Angular.JS中的指令引用template与指令当做属性详解

    AngularJS中的指令可以让我们扩展HTML语法并创建复杂的可重用组件。指令可以有多种类型,比如元素指令、属性指令、类指令和注释指令。在本文中,我们将介绍AngularJS指令中的两种常见用法:指令引用template和指令当做属性详解。 指令引用template 指令引用template使用template属性定义一个字符串模板来显示指令,这个模板可以…

    人工智能概论 2023年5月25日
    00
  • Redis数据库的使用场景介绍(避免误用Redis)

    Redis是一款快速、高效且可靠的键值对数据库,很多人只看到了Redis高性能的特点,却忽略了它并不是万能的数据库,因此使用Redis的时候需要根据具体的业务场景进行选择。 下面介绍Redis的使用场景: 缓存 Redis最常见的使用场景就是缓存。由于Redis支持key-value的存储方式,且存储与内存中,所以读写速度快,适合用于缓存大量的数据。在大型w…

    人工智能概览 2023年5月25日
    00
  • vscode+platformIO开发stm32f4的实现

    那么让我详细介绍一下如何使用vscode和PlatformIO进行stm32f4的开发。 1. 安装vscode和PlatformIO 要使用vscode和PlatformIO进行stm32f4的开发,你需要先安装这两个工具。 1.1 安装vscode 可以前往官网 https://code.visualstudio.com/ 下载对应的安装包进行安装。 1…

    人工智能概论 2023年5月25日
    00
  • Eclipse配置python开发环境过程图解

    下面是“Eclipse配置python开发环境过程图解”的完整攻略。 1. 下载并安装Eclipse和PyDev插件 前往Eclipse官网(https://www.eclipse.org/downloads/)下载适合你操作系统的版本,然后安装。安装完成后,启动Eclipse,进入菜单“Help” – “Eclipse MarketPlace”,搜索关键字…

    人工智能概览 2023年5月27日
    00
  • django配置DJANGO_SETTINGS_MODULE的实现

    配置 DJANGO_SETTINGS_MODULE 是 Django 运行的关键配置之一。在 Django 中,我们使用同名的 env 变量来配置 DJANGO_SETTINGS_MODULE。本篇攻略主要介绍如何实现 Django 的 DJANGO_SETTINGS_MODULE 配置,包括环境变量和代码中配置两种方法。 配置环境变量 我们可以使用 exp…

    人工智能概论 2023年5月25日
    00
  • nginx配置支持https的示例代码

    下面是nginx配置支持https的完整攻略: 1. 生成SSL证书 首先需要从CA机构或者自签颁发机构申请SSL证书,若是自签颁发机构需要通过 OpenSSL 工具生成相应证书,具体操作如下: 安装 OpenSSL 工具 sudo apt-get install openssl 创建自签名请求文件,生成公、私钥对和最终SSL证书 mkdir /etc/ng…

    人工智能概览 2023年5月25日
    00
  • django项目中使用手机号登录的实例代码

    下面是详细的攻略。 1. 安装依赖库 首先需要安装 django、django-rest-framework 和 django-rest-framework-simplejwt 这三个库。可以通过以下命令进行安装: pip install django django-rest-framework django-rest-framework-simplejwt…

    人工智能概论 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部