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

yizhihongxing

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日

相关文章

  • SqlServer中批量update语句

    下面是SqlServer中批量update语句的完整攻略: 什么是批量update语句 批量update语句可以一次性同时更新一个或多个表中的多行数据,该语句比单条update性能更高,可以提高数据更新的效率。 基本语法 批量update语句的基本语法如下: UPDATE {table_name} SET {column_name} = {value} [,…

    database 2023年5月21日
    00
  • Ubuntu 14.04安装java的方法以Ubuntu14.04为例

    Ubuntu 14.04安装java的方法以Ubuntu14.04为例 Java是一种跨平台的编程语言,广泛地运用于Web应用程序、企业管理系统等方面。在Ubuntu 14.04上安装Java会使得我们可以在系统中运行Java程序。本文将介绍如何在Ubuntu 14.04上安装Java. 安装openjdk Ubuntu 14.04默认使用的是OpenJDK…

    database 2023年5月22日
    00
  • MySQL中使用流式查询避免数据OOM

    接下来我将为你详细讲解“MySQL中使用流式查询避免数据OOM”的完整攻略。 什么是OOM及其影响 OOM,即Out Of Memory,中文翻译为“内存耗尽”。当我们的应用程序需要的内存超出了操作系统能够提供的内存空间时,就会发生OOM错误。OOM错误可能会导致应用程序崩溃或异常退出,严重影响应用程序的稳定性和正常使用。 什么是流式查询 流式查询,也称为分…

    database 2023年5月19日
    00
  • 网络层访问权限控制技术-ACL详解

    网络层访问权限控制技术-ACL详解 访问控制列表(Access Control Lists,简称 ACL)是网络安全中常用的一项技术。它通过访问控制表实现对网络流量的访问限制,从而保障网络安全。本篇文章将详细讲解ACL技术的基本原理、应用场景和配置过程。 基本原理 ACL技术是在网络层进行的,可以基于源地址、目的地址、协议类型、端口号等信息,来对网络数据进行…

    database 2023年5月22日
    00
  • 安装oracle11g INS-30131执行安装程序验证所需的初始设置失败的解决方法

    安装Oracle11g数据库过程中,有时会出现“INS-30131执行安装程序验证所需的初始设置失败”的错误提示。该错误提示通常是由于未正确设置操作系统参数或未安装必要的软件包所致。 下面是完整的解决方法攻略: 1. 确认操作系统参数 在完成Oracle安装前,需要确认操作系统参数是否符合Oracle的要求。以下是建议的操作系统参数设置: 修改/etc/sy…

    database 2023年5月22日
    00
  • 解决Oracle 查询时报错ORA-00923: FROM keyword not found where expected的问题

    当你在使用Oracle查询数据时,遇到ORA-00923错误时,这通常是由于查询语句中的语法错误引起的。 以下是解决此问题的完整攻略: 1.检查查询语句语法错误 请仔细检查查询语句的语法,特别注意是否有不完整的语句、拼写错误、缺失符号等问题。如果任何查询语句存在语法错误,将会返回 ORA-00923 错误。 以下示例演示了由于遗漏 FROM 关键字而导致OR…

    database 2023年5月21日
    00
  • Oracle数据库网络与安全FAQ精粹汇集

    Oracle数据库网络与安全FAQ精粹汇集攻略 1. 了解相关概念和常用术语 在使用Oracle数据库过程中,必须熟悉相关概念和常用术语,例如:数据库实例、数据库用户、权限管理、角色、存储过程等等。同时要清楚各种术语之间的关系和细微的区别。 2. 学习网络与安全问题的解决方案 Oracle数据库系统的网络与安全问题是使用者经常遇到的难题,需要学习解决方案。其…

    database 2023年5月21日
    00
  • 关于 MySQL 嵌套子查询中,无法关联主表字段问题的折中解决方法

    今天在工作中写项目的时候,遇到了一个让我感到几乎无解的问题,在转换了思路后,想出了一个折中的解决方案,记录如下。 其实,问题的场景,非常简单: 就是需要查询出上图的数据,红框是从 项目产品表 中查询的2个字段,绿框是从与项目产品表关联的 文章表 中查询出的1个字段。我希望实现的效果是,获取到项目产品对应的文章提交人数,即该项目产品,有多少人提交了文章。看似很…

    MySQL 2023年4月12日
    00
合作推广
合作推广
分享本页
返回顶部