详解mongodb搭建Replica Set的方法

详解Mongodb搭建Replica Set的方法

Mongodb的Replica Set是实现高可用和数据冗余的常见方法,本篇文章将详细介绍在linux系统下搭建mongodb Replica Set的方法。

1. 安装Mongodb

在搭建Replica Set之前,需要先在服务器上安装Mongodb。在ubuntu操作系统中,可使用以下命令进行安装:

sudo apt-get update
sudo apt-get install mongodb

2. 配置Mongodb

Mongodb的配置文件可在/etc/mongodb.conf中进行编辑。以下是常见的配置项:

dbpath=/var/lib/mongodb                    # 数据库文件存储位置
logpath=/var/log/mongodb/mongodb.log       # 日志文件存储位置
logappend=true                              # 日志文件是否追加
bind_ip=127.0.0.1,123.123.123.123           # 绑定的IP地址
port=27017                                  # 监听的端口号

在无需设置认证的情况下,此时您已成功完成mongodb的安装和配置。

3.设置Replica Set

3.1 配置集群节点

在搭建Replica Set之前需要先确定节点的角色,分别是Primary、Secondary 和 Arbiter。

  1. Primary:每个Replica Set中只有一个Primary节点,提供唯一的写入操作,如索引和修改操作。

  2. Secondary:提供读取操作,从Primary节点复制数据,并参与选举成为Primary.

  3. Arbiter:只参与选举过程,不参与写入或复制数据。最小搭建方式的配置是一主一从一裁判,也可以多一个从节点,甚至裁判节点也可以多个。

在配置节点之前,首先需要设置Replica Set名称,可通过以下配置项完成:

replSetName=rs0    # 配置Replica Set名称

在各个节点的Mongodb配置文件中添加此项配置。

3.2 启动节点

在每个节点上使用以下命令启动Mongodb服务

mongod --config /etc/mongodb.conf

3.3 初始化Replica Set

操作任何一个节点,使用Mongo Shell连接并初始化Replica Set。Replica Set只需初始化一次。以下操作均在Mongo Shell中进行:

mongo

初始化Replica Set:

rs.initiate(
{
    _id : "rs0",
    members: [
        {_id:0, host:"ip:port"},
        {_id:1, host:"ip:port"},
        {_id:2, host:"ip:port", arbiterOnly:true}
    ]
})

其中,rs0为Replica Set的名称,members为节点列表,_id为节点在列表中的唯一标识,host为节点的ip地址和端口号,arbiterOnly表示该节点为裁判节点。

3.4 添加节点到Replica Set

在Mongodb的Replica Set运行过程中,还可以随时添加新的节点(Secondary或Arbiter)进入集群。

  1. 添加Secondary节点

在主节点上使用Mongo Shell连接,在MongoDB Shell中执行以下命令:

rs.add("ip:port") # 将ip:port添加为Secondary节点
  1. 添加Arbiter节点

在主节点上使用Mongo Shell连接,在MongoDB Shell中执行以下命令:

rs.addArb("ip:port") # 将ip:port添加为Arbiter节点

示例一:搭建一主一从一裁判的Replica Set

每个节点都应该安装mongodb。节点IP及端口如下:

主节点 从节点 裁判节点
123.123.123.1:27017 123.123.123.2:27017 123.123.1233:27017

1. 在每个节点上配置Mongodb

在节点上的配置项如下:

dbpath=/var/lib/mongodb
logpath=/var/log/mongodb/mongodb.log
logappend=true
bind_ip=123.123.123.1 # 主节点和从节点修改此项
port=27017
replSetName=rs0

主节点配置和从节点配置应该相同,只需修改bind_ip即可。

2. 在每个节点上启动Mongodb服务

在每个节点上使用以下命令启动Mongodb服务:

mongod --config /etc/mongodb.conf

3. 在主节点上初始化Replica Set

在主节点上执行以下命令:

mongo
rs.initiate(
{
    _id : "rs0",
    members: [
        {_id:0, host:"123.123.123.1:27017"},
        {_id:1, host:"123.123.123.2:27017"},
        {_id:2, host:"123.123.123.3:27017", arbiterOnly:true}
    ]
})

4. 添加从节点和裁判节点

在主节点上分别添加从节点和裁判节点:

rs.add("123.123.123.2:27017") 
rs.addArb("123.123.123.3:27017") 

Replica Set搭建完成,您可以通过以下命令查看集群状态:

mongo
rs.status()   # 查看集群状态

示例二:添加客户端访问的用户认证

上文中介绍了如何搭建一个基本的Replica Set,但在实际应用中,还需要配置客户端访问的用户认证,以下是配置步骤。

1. 创建用户及角色

在administration数据库中创建用户和角色,以下实例创建了两个角色:

  1. ReplicaSetAdmin:用于管理集群

  2. ReplicaSetUser:用于重写数据

use admin
db.createUser(
   {
     user: "admin",
     pwd: "passw0rd",
     roles: [ { role: "root", db: "admin" } ]
   }
)
use admin
db.createRole(
   {
     role: "ReplicaSetAdmin",
     privileges: [ { resource: { cluster: true }, actions: [ "addShard", "shardCollection", "listShards", "removeShard", "enableSharding", "disableSharding" ] } ],
     roles: []
   }
)
db.createRole(
   {
     role: "ReplicaSetUser",
     privileges: [ { resource: { db: "mydb", collection: "" }, actions: [ "find", "insert", "update", "remove" ] } ],
     roles: []
   }
)

其中,admin为Mongodb的系统管理数据库,mydb为自定义的业务数据库。

2. 配置Mongodb

在每个节点的配置文件中添加以下配置项:

auth=true
security.authorization = enabled

然后在主节点的Mongo Shell中执行以下操作:

use admin
db.createUser(
   {
     user: "ReplicaSetAdmin",
     pwd: "adminPassword",
     roles: [ { role: "ReplicaSetAdmin", db: "admin" } ]
   }
)
db.auth('ReplicaSetAdmin', 'adminPassword')

3. 在Replica Set中启用用户认证

使用主节点的Mongo Shell连接到Replica Set,并随机选择集群中一个从节点:

mongo --host "123.123.123.1:27017,123.123.123.2:27017,123.123.123.3:27017" --authenticationDatabase "admin" -u "ReplicaSetAdmin" -p "adminPassword"
rs.slaveOk()  # 切换到一个从节点上

在从节点上执行以下操作:

use admin
db.createUser(
   {
     user: "ReplicaSetUser",
     pwd: "password",
     roles: [ { role: "ReplicaSetUser", db: "mydb" } ]
   }
)
use admin
db.auth('ReplicaSetUser', 'password')
use mydb
db.createUser(
   {
     user: "mydb",
     pwd: "password",
     roles: [ { role: "readWrite", db: "mydb" } ]
   }
)

其中,mydb为自定义的业务数据库。

4. 客户端访问

在客户端连接Mongodb时,需要提供认证信息:

mongo --host "123.123.123.1:27017,123.123.123.2:27017,123.123.123.3:27017" --authenticationDatabase "mydb" -u "mydb" -p "password"

完成了以上操作,您可以通过以下命令查看集群状态:

mongo --host "123.123.123.1:27017,123.123.123.2:27017,123.123.123.3:27017" --authenticationDatabase "admin" -u "ReplicaSetAdmin" -p "adminPassword"
rs.status()   # 查看集群状态

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解mongodb搭建Replica Set的方法 - Python技术站

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

相关文章

  • 学习python之编写简单简单连接数据库并执行查询操作

    学习Python连接数据库并执行查询操作,需要通过以下几个步骤: 安装相关软件包首先需要安装Python的数据库驱动程序,并安装数据库相关的软件,例如MySQL或PostgreSQL等。常用的Python数据库驱动程序有: mysql-connector-python psycopg2 PyMySQL cx_Oracle 以MySQL为例,要安装mysql-…

    MongoDB 2023年5月16日
    00
  • Go语言转换所有字符串为大写或者小写的方法

    Go语言中转换字符串为大写或小写有多种方式。下面提供三种不同的方法来实现这个目标。 方法一:strings.ToUpper() 和 strings.ToLower() strings.ToUpper() 函数把一个字符串转换为大写,返回一个新的字符串。 strings.ToLower() 函数把一个字符串转换为小写,返回一个新的字符串。 示例代码如下: im…

    MongoDB 2023年5月16日
    00
  • MongoDB系列教程(五):mongo语法和mysql语法对比学习

    下面是 “MongoDB系列教程(五):mongo语法和mysql语法对比学习” 的完整攻略。 简介 本教程将介绍 MongoDB 的常用语法,并与 MySQL 的语法进行对比。MongoDB 是一个基于分布式文件存储的开源数据库,采用了类 JSON 的文档形式存储数据。相比 MySQL,MongoDB 有着不同的语法和数据存储结构,所以需要我们对其进行学习…

    MongoDB 2023年5月16日
    00
  • MongoDB连接数据库方法详解

    安装MongoDB 在开始连接MongoDB之前,需要先安装MongoDB。可以到官网下载对应的安装程序安装,或者通过命令行安装。以下是在Ubuntu系统中通过命令行安装的步骤: 添加apt-key wget -qO – https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add …

    MongoDB 2023年3月13日
    00
  • Mongodb 用户权限管理及配置详解

    MongoDB 用户权限管理及配置详解 MongoDB是一款非关系型数据库,在使用过程中,需要对数据进行管理和权限配置,以保证数据的安全性。本文将介绍MongoDB用户权限管理及配置的详细步骤。 1. 连接MongoDB数据库 使用命令行连接MongoDB数据库,进入mongo shell: mongo 2. 创建管理员用户 为了保证数据的安全性,首先需要创…

    MongoDB 2023年5月16日
    00
  • Laravel 框架中使用 MongoDB 数据库的操作

    下面是详细的“Laravel 框架中使用 MongoDB 数据库的操作”的完整攻略。 准备工作 在 Laravel 中使用 MongoDB,首先需要安装 MongoDB 扩展。可以通过 Composer 安装 jenssegers/mongodb 扩展: composer require jenssegers/mongodb 在 config/databas…

    MongoDB 2023年5月16日
    00
  • MongoDB Shell常用基本操作命令详解

    下面是MongoDB Shell常用基本操作命令详解的完整攻略。 MongoDB Shell常用基本操作命令详解 MongoDB Shell是MongoDB自带的命令行工具,提供了一系列操作MongoDB的基本命令。本文将详细介绍MongoDB Shell的常用基本操作命令。 一、连接MongoDB服务器 使用MongoDB Shell操作MongoDB,首…

    MongoDB 2023年5月16日
    00
  • 通过DBeaver连接Phoenix操作hbase的方法

    通过DBeaver连接Phoenix操作hbase的方法 安装DBeaver 首先,我们需要安装一个数据库管理工具DBeaver,可以从官网 https://dbeaver.io/download/ 下载对应的安装包进行安装。 配置Phoenix JDBC连接 下载Phoenix客户端JDBC驱动 要连接Phoenix,我们需要先下载并安装Phoenix客户…

    MongoDB 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部