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日

相关文章

  • Springboot启动报错时实现异常定位

    当Springboot项目启动时,我们经常会遇到各种报错。如果不好好处理这些错误,会导致项目无法正常启动,严重影响开发效率。本文将介绍如何对于Springboot启动报错时,实现异常定位的方法。 1. 查看控制台日志 当Springboot项目启动发生错误时,应该首先查看控制台日志。控制台日志中记录了Springboot项目所有的启动过程信息,包括启动的顺序…

    database 2023年5月18日
    00
  • MySQL 独立索引和联合索引的选择

    MySQL 中索引是优化查询速度的关键。在创建索引时,我们需要注意使用独立索引还是联合索引。 独立索引 独立索引是单列索引,一个索引只包含单一的列,每个列都有一个索引文件。当查询中只涉及到单个列的时候,独立索引非常有效。使用独立索引的优点如下: 唯一性检查更快,因为只需要比较一列; 索引维护更快,因为只有单一列需要操作; 节省磁盘空间,因为只存储单一列的数据…

    database 2023年5月19日
    00
  • 详解MySQL IS NULL:空值查询

    在MySQL中,IS NULL被用于检测一个列是否为空值。如果列的值是空值,则IS NULL返回TRUE,否则返回FALSE。 下面是MySQL IS NULL语法的一般形式: SELECT column_name(s) FROM table_name WHERE column_name IS NULL; 以下是关于MySQL IS NULL的一些实例: 实…

    MySQL 2023年3月10日
    00
  • sqlserver 2000数据库同步 同步两个SQLServer数据库的内容

    为了同步两个SQLServer数据库的内容,需要执行以下步骤: 步骤1:设置发布服务器 打开发布服务器的SQL Server管理工具。 点击“复制”节点,选择“发布服务器属性”。 在“发布服务器属性”对话框中,选择“发布服务器设置”选项卡。 在“发布服务器设置”选项卡中,勾选“允许发布此服务器上的数据库为其他服务器使用”的复选框。 步骤2:设置分发服务器 打…

    database 2023年5月21日
    00
  • DBMS选择和投影的区别

    DBMS(Database Management System)选择和投影是关系型数据库中的两个基本操作。这两个操作的作用不同,本文将详细讲解它们之间的区别,并结合实例进行说明。 DBMS选择(SELECT) DBMS选择操作是从关系型数据库表中选取满足一定条件的行的操作。选择操作是SQL语言中最常用的操作之一。 选择语法 SELECT * FROM tab…

    database 2023年3月27日
    00
  • 数据库SQL SELECT查询的工作原理

    数据库 SQL SELECT 查询是数据库操作的一个重要部分,它用于从一个或多个表中检索所需数据。下面是 SELECT 查询的工作原理: 1. SELECT 查询语法 SELECT 查询要求使用正确的 SQL 语法,其中包括以下基本组件: SELECT:要查询的列名或通配符 FROM:要从哪些表中检索数据 WHERE(可选):条件约束查询结果 ORDER B…

    database 2023年5月21日
    00
  • MySQL使用聚合函数进行单表查询

    MySQL是一个关系型数据库管理系统,使用聚合函数进行单表查询可方便地对表中数据进行统计和计算,本文将详细讲解使用聚合函数进行单表查询的完整攻略。 一、概述 聚合函数是MySQL中的一种特殊函数,可以对表中的数据进行统计和计算,如求最大值、最小值、平均值、求和等操作。在聚合函数的使用过程中,需要注意以下几点: 聚合函数可以用于单列或多列的数据。 使用聚合函数…

    database 2023年5月22日
    00
  • springBoot整合Redis

    准备工作    安装redis最新4.0.6或者以前版本,尽量安装在linux上,并开启服务。教程很多,不再赘述。    在JAVASE 可以使用最新Jedis 2.9.0或之前版本。与数据库连接池相同,单例实例化JedisPool,从中getSource()获取Jedis实例。    本文主旨记录,springMVC或者SpringBoot整合Redis …

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