mongodb主从复制_动力节点Java学院整理

MongoDB主从复制攻略

什么是MongoDB主从复制

MongoDB的复制机制是指将一台Primary节点的数据自动同步到一个或多个Secondary节点的过程,其中Primary节点是一个可写的节点,而Secondary节点只有在Primary节点宕机或者其他情况下才会变成可写节点。

主从复制原理

MongoDB的主从复制是通过Oplog来实现的,Oplog是一种特殊的集合,用来记录所有的更新操作。其原理为:在Master节点上产生了一个新的数据集合或者更新了一个数据,它会先在Master节点的数据文件中进行处理,然后再把这个数据写入到Oplog中。而Slave节点会不断的从Master节点的Oplog中读取新写入的数据,并在自己的机器上执行同样的操作,从而达到数据的同步。

主从复制配置

步骤一:创建Keyfile

在Master和Slave节点上都需创建Keyfile,用来进行节点的身份验证。

$ umask 077
$ echo '<YourPrivateKey>' > /opt/mongo/mongodb-keyfile
# YourPrivateKey:自定义的私有key,不能包含多余字符,长度不少于6。

注意:File Permissions必须为400:

$ chmod 400 /opt/mongo/mongodb-keyfile

步骤二:指定Replication Set

在Master节点的MongoDB配置文件mongod.conf中指定replication.replSetName

replication:
   replSetName: rs0

步骤三:启动MongoDB

在Master和Slave节点上启动MongoDB。

步骤四:初始化副本集

在Master节点上:

$ mongo --eval "rs.initiate()"

初始化命令可以自动完成其他节点的加入。

步骤五:添加Secondary

在Master节点上使用以下命令添加Secondary节点:

$ mongo --eval "rs.add('192.168.0.150:27017')"

其中192.168.0.150:27017为Slave节点的信息。

备份与恢复数据

主从复制架构可以实现数据的自动备份,在Slave节点上可以随时切断与Master节点的连接,从而进行数据备份。

在Slave节点上使用mongodump进行数据备份:

$ mongodump --host 192.168.0.140 --port 27017 --out /backup/mongodb/

其中192.168.0.140:27017为Master节点信息,/backup/mongodb/为备份数据存储路径。

在恢复数据时,可以在Slave节点上先停止MongoDB的服务,然后使用mongorestore进行数据恢复:

$ mongorestore --host 192.168.0.150 --port 27017 /backup/mongodb/

其中192.168.0.150:27017为Slave节点信息,/backup/mongodb/为备份数据存储路径。

注意事项

  • 在配置每个节点的mongod.conf文件时,需要将bindIp指定为本机的ip地址,如:

net:
bindIp: 192.168.0.140
port: 27017

  • 存放Oplog数据的目录不能使用NFS挂载,需要在每个节点上均创建本地目录,并确保每个节点的配置文件中都配置正确。

示例一:新建集合

在Master节点新建集合test:

$ mongo
> use test
> db.createCollection("user")
> db.user.insert({name:'Lucy',age:'18'})

在Slave节点上验证:

$ mongo
> use test
> db.user.find()
{ "_id" : ObjectId("57cd36d40dae2a46fd1bd53e"), "name" : "Lucy", "age" : "18" }

示例二:删除数据

在Slave节点中删除数据:

> use test
> db.user.remove({name:'Lucy'})

在Master节点中验证:

> use test
> db.user.find()

参考链接

MongoDB最新文档

《MongoDB权威指南》第二版

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mongodb主从复制_动力节点Java学院整理 - Python技术站

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

相关文章

  • 一条sql详解MYSQL的架构设计详情

    一条sql详解MYSQL的架构设计详情 MySQL是目前流行的关系型数据库管理系统,它的架构设计包含了多个组件构成的整体。要深入理解MySQL的架构设计,需要从客户端发起的一条SQL语句开始,分析整个系统的处理过程。 1. SQL语句的解析 MySQL客户端发送一条SQL语句到MySQL服务器时,首先需要进行SQL语句解析。MySQL的解析器可以将SQL语句…

    database 2023年5月19日
    00
  • Ubuntu下安装redis的2种方法分享

    Ubuntu是一种基于Debian的GNU/Linux操作系统,其下载量已经超过4000万。在Ubuntu下安装Redis可以提升系统的性能,本文将分享两种方法,让您能够安装Redis。 方法1:使用Ubuntu官方软件库安装Redis Ubuntu官方软件库存储了各种免费的软件。使用以下命令来在Ubuntu上安装Redis: sudo apt update…

    database 2023年5月22日
    00
  • Linux下安装MariaDB数据库问题及解决方法(二进制版本的安装)

    以下是详细讲解“Linux下安装MariaDB数据库问题及解决方法(二进制版本的安装)”的完整攻略。 问题描述 在Linux系统下,安装MariaDB数据库时,可能会遇到如下问题: 没有找到合适版本的安装程序; 安装程序运行失败; 安装完成后无法正常启动MariaDB服务等。 这些问题都可能导致安装失败或出现其他错误。 解决方法 在Linux系统下安装Mar…

    database 2023年5月22日
    00
  • Mysql多表操作方法讲解教程

    Mysql是一款强大的关系型数据库,可用于存储和管理大量数据。在现实的项目开发中,数据库往往由多张表组成,需要使用多种SQL语句来进行操作。本教程将详细讲解Mysql多表操作的方法,包括表的连接、联合查询、子查询等技术,帮助读者更好地进行数据库的开发和管理。 一、表的连接 内连接:根据两个表中的公共列进行匹配,只选择匹配项。 SELECT * FROM 表A…

    database 2023年5月22日
    00
  • laravel中redis队列的使用

    一、配置文件 首先我们需要在配置文件中配置默认队列驱动为Redis,: 修改.env中的QUEUE_CONNECTION=redis 二、编写队列任务 首先我们通过如下Artisan命令创建任务类: php artisan make:job SendReminderEmail   运行成功后会在app/Jobs目录下生成一个SendReminderEmail…

    Redis 2023年4月13日
    00
  • SQL Server成功与服务器建立连接但是在登录过程中发生错误的快速解决方案

    当使用SQL Server登录时,可能会出现登录过程中发生错误的问题,这种情况可能是服务器上的 SQL Server 实例无法正常启动或运行,也可能是本地计算机上的网络连接问题。下面是一些可能使 SQL Server 登录过程出错的原因以及相应的解决方案。 原因分析 原因1:SQL Server 实例无法正常启动或运行 当 SQL Server 实例未能成功…

    database 2023年5月21日
    00
  • Oracle配置dblink访问PostgreSQL的操作方法

    下面是详细的“Oracle配置dblink访问PostgreSQL的操作方法”攻略: 准备工作 确认Oracle数据库已安装,并且有使用DBLINK的权限; 安装PostgreSQL数据库; 开启PostgreSQL数据库中的远程访问权限。 配置PostgreSQL 修改postgres.conf文件中的listen_addreses参数,将其改为“*”,表…

    database 2023年5月22日
    00
  • Oracle to_date()函数的用法介绍

    下面是关于Oracle to_date()函数的用法介绍的攻略: 什么是Oracle to_date()函数? to_date()函数是Oracle SQL中的日期格式化函数,可以将不同格式的输入转换成Oracle所需的日期时间格式。 Oracle to_date()函数的语法 to_date()函数的语法如下所示: to_date(string,[ for…

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