MongoDB 复制(副本集)学习笔记

 更新时间:2019年10月24日 11:45:13   作者:学知无涯  
这篇文章主要介绍了MongoDB 复制(副本集),结合实例形式分析了MongoDB数据库复制的相关原理、配置、使用方法及操作注意事项,需要的朋友可以参考下

本文实例讲述了MongoDB 复制(副本集)。分享给大家供大家参考,具体如下:

replication set复制集,
复制集,多台服务器维护相同的数据副本,提高服务器的可用性。
MongoDB复制是将数据同步在多个服务器的过程。
复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性。
复制还允许您从硬件故障和服务中断中恢复数据。

设置过程:

(1)创建示例

假设创建三台,创建三个实例目录和日志目录:
mkdir /home/m17 /home/m18 /home/m19 /home/mlog
启动三个示例,端口分别为27017、27018、27019。

./mongod --dbpath=/home/m17 --logpath=/home/mlog/m17.log --fork --port=27017 --replSet=rs2 --smallfiles
./mongod --dbpath=/home/m18 --logpath=/home/mlog/m18.log --fork --port=27018 --replSet=rs2 --smallfiles
./mongod --dbpath=/home/m19 --logpath=/home/mlog/m19.log --fork --port=27019 --replSet=rs2 --smallfiles

说明:

参数--replSet设置一样,才能属于同一个复制集
参数--smallfiles可以节省空间,提高速度。

然后使用ps aux | grep mongo可以查看到启动起来的三个端口。

(2)配置

使用客户端连接mongo进行配置:

[test@localhost bin]$ ./mongo

要管理配置,所以切换到admin上:

>use admin

(配置是json格式)

var rsconf = {
_id:'rs2',
members:[
{"_id":0,host:'192.168.8.172:27017'},
{_id:1,host:'192.168.8.172:27018'},
{_id:2,host:'192.168.8.172:27019'}
]
}

如果没有配置ip,使用127.0.0.1

var rsconf = {
_id:'rs2',
members:[
{_id:0,host:'127.0.0.1:27017'},
{_id:1,host:'127.0.0.1:27018'},
{_id:2,host:'127.0.0.1:27019'}
]
}

执行后,使用 printjson(rsconf)查看刚才的配置。

然后执行初始化:

>rs.initiate(rsconf);
> rs.initiate(rsconf);
{
"ok" : 1,
"operationTime" : Timestamp(1539933041, 1),
"$clusterTime" : {
"clusterTime" : Timestamp(1539933041, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
}
rs2:SECONDARY>

查看节点:

rs.status()

删除节点:

rs.remove('127.0.0.1:27019')

添加节点:

rs.add('127.0.0.1:27019')

切换节点:

默认是在27017端口,即rs2:PRIMARY>状态,
退出mongo客户端命令模式,
切换到另一个端口:

[test@localhost bin]$ ./mongo --port=27018,

即切换到rs2:SECONDARY>状态。

测试:

在主服务上,创建库和集合,

rs2:PRIMARY> use student
switched to db student
rs2:PRIMARY> db.user.insert({uid:1,name:'zhang san'})
WriteResult({ "nInserted" : 1 })
rs2:PRIMARY> db.user.find();
{ "_id" : ObjectId("5bc9889f85a0986431fd2499"), "uid" : 1, "name" : "zhang san" }

去从服务上查看

show dbs

然后看到有错误,具体错误信息是:

...
"errmsg" : "not master and slaveOk=false",
...

是因为slave默认不允许读写:

>rs.slaveOk();

然后就可以看到主服务器创建的库和集合了。

同理27019也需要执行这个命令才能自动同步和读写。

当主服务器27017停掉的时候,
第二个27018就自动变成主服务器master状态。
但是27019需要再次执行rs.slaveOk()才能自动同步读写。

shell脚本:

#!/bin/bash
IP=127.0.0.1
NA=rs2
sudo mkdir -p /home/m17 /home/m18 /home/m19 /home/mlog
sudo chmod -R 777 /home/m17 /home/m18 /home/m19 /home/mlog
./mongod --dbpath=/home/m17 --logpath=/home/mlog/m17.log --fork --port=27017 --replSet=${NA} --smallfiles
./mongod --dbpath=/home/m18 --logpath=/home/mlog/m18.log --fork --port=27018 --replSet=${NA} --smallfiles
./mongod --dbpath=/home/m19 --logpath=/home/mlog/m19.log --fork --port=27019 --replSet=${NA} --smallfiles
./mongo <<EOF
use admin
var rsconf = {
_id:'rs2',
members:[
{_id:0,host:'${IP}:27017'},
{_id:1,host:'${IP}:27018'},
{_id:2,host:'${IP}:27019'}
]
}
rs.initiate(rsconf)

希望本文所述对大家MongoDB数据库程序设计有所帮助。

相关文章

  • MongoDB入门教程之常用的运维技术介绍

    MongoDB入门教程之常用的运维技术介绍

    这篇文章主要介绍了MongoDB入门教程之常用的运维技术介绍,讲解了安装部署、状态监控、安全认证、备份和恢复等内容,需要的朋友可以参考下
    2014-08-08
  • MongoDB远程访问配置步骤详解

    MongoDB远程访问配置步骤详解

    MongoDB远程访问相信很多人都要到这个需求,所以这篇文章给大家主要介绍了MongoDB远程访问配置的步骤,文中给出了详细的步骤及示例代码,相信对大家的理解和学习很有帮助,有需要的朋友们下面来一起学习学习吧。
    2016-11-11
  • Mongodb 如何将时间戳转换为年月日日期

    Mongodb 如何将时间戳转换为年月日日期

    这篇文章主要介绍了Mongodb 如何将时间戳转换为年月日日期,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • Laravel 框架中使用 MongoDB 数据库的操作

    Laravel 框架中使用 MongoDB 数据库的操作

    这篇文章主要介绍了Laravel 框架中使用 MongoDB 数据库的问题及操作方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • SpringBoot 集成MongoDB实现文件上传功能

    SpringBoot 集成MongoDB实现文件上传功能

    这篇文章主要介绍了SpringBoot 集成MongoDB实现文件上传,主要通过示例代码记录文件上传的步骤,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • 分享MongoDB修改oplog大小的4种方法

    分享MongoDB修改oplog大小的4种方法

    这篇文章主要介绍了分享MongoDB修改oplog大小的4种方法,文章基于MongoDB修改oplog大小展开其方法的介绍,需要的小伙伴可以参考一下
    2022-04-04
  • centos7防火墙导致java程序访问mongodb3.0.1时报错的问题分析

    centos7防火墙导致java程序访问mongodb3.0.1时报错的问题分析

    这篇文章主要介绍了centos7防火墙导致java程序访问mongodb3.0.1时报错的问题分析,需要的朋友参考下
    2017-01-01
  • CentOS 6.5系统中使用yum安装MongoDB 2.6 教程

    CentOS 6.5系统中使用yum安装MongoDB 2.6 教程

    这篇文章主要介绍了CentOS 6.5系统中使用yum安装MongoDB 2.6 教程,本文共分5个步骤完成MongoDB的安装,需要的朋友可以参考下
    2015-01-01
  • MongoDB中唯一索引(Unique)的那些事

    MongoDB中唯一索引(Unique)的那些事

    这篇文章主要给大家介绍了关于MongoDB中唯一索引(Unique)的那些事,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • Windows系统下安装MongoDB并内网穿透远程连接

    Windows系统下安装MongoDB并内网穿透远程连接

    这篇文章主要给大家介绍了关于Windows系统下安装MongoDB并内网穿透远程连接的相关资料,文中通过图文将步骤介绍的非常详细,对大家学习或者使用MongoDB具有一定的参考学习价值,需要的朋友可以参考下
    2023-03-03

最新评论