`
litianyi520
  • 浏览: 43152 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mongodb replaceSet

    博客分类:
  • java
 
阅读更多

 

./mongod --dbpath /data/mongodb --fork --port 27017 --logpath /data/log/mongodb.log --pidfilepath /usr/local/mongodb/mongo.pid  --rest --replSet myset
./mongod --dbpath /data/mongodb1 --fork --port 27018 --logpath /data/log/mongodb1.log --pidfilepath /usr/local/mongodb1/mongo.pid --rest --replSet myset
./mongod --dbpath /data/mongodb2 --fork --port 27019 --logpath /data/log/mongodb2.log --pidfilepath /usr/local/mongodb2/mongo.pid --rest --replSet myset
 
 

--replSet myset 指定mongodb运行为replication模式,集合名为myset

--rest 用于启动adminstration ui,可以通过http://localhost:28017/_replSet查看服务器状态

--dbpath 指定数据库文件路径 

--logpath 指定日志文件路径  /dev/null

./mongo

方式一  (有时候会报错,不建议)

---------------------------------

>rs.initiate()

{
    "info2" : "no configuration explicitly specified -- making one",
    "info" : "Config now saved locally.  Should come online in about a minute.",
    "ok" : 1
}

 

>rs.add("10.0.10.24:27018")

> rs.addArb("10.0.10.24:27019") //只做为选举

----------------------------

方式二

init.js

 config={

    _id : "myset",
    members : [
        {_id : 0, host : "10.0.10.24:27017"},
        {_id : 1, host : "10.0.10.24:27018"},
        {_id : 2, host : "10.0.10.24:27019",arbiterOnly:true}
    ]
};
 
rs.initiate(config)
 

----------------------------------------------

 

需要修改时

 

 config={
    _id : "myset",
    members : [
        {_id : 0, host : "10.0.10.24:27017"},
        {_id : 1, host : "10.0.10.24:27018"},
        {_id : 2, host : "10.0.10.24:27019",arbiterOnly:true}
    ]
};
 
db = db.getSisterDB("local")
 
old_config = db.system.replset.findOne();
#不+1  会报版本错误
config.version = old_config.version + 1;  
 
 
 
 
db = db.getSisterDB("admin")
db.runCommand({ replSetReconfig : config });
 
 

printjson(db.getLastErrorObj())

 

 

-------------------------------------------------

执行脚本 ./mongo init.js

 

 

 

 

 

>rs.conf()

{

        "_id" : "myset",
        "version" : 3,
        "members" : [
                {
                        "_id" : 0,
                        "host" : "api:27017"
                },
                {
                        "_id" : 1,
                        "host" : "10.0.10.24:27018"
                },
                {
                        "_id" : 2,
                        "host" : "10.0.10.24:27019",
                        "arbiterOnly" : true
                }
        ]

}

27017状态

replSet member api:27017 PRIMARY

27018状态

replSet member 10.0.10.24:27018 SECONDARY

27019 状态

Thu Dec 15 11:10:42 [ReplSetHealthPollTask] replSet info 10.0.10.24:27018 is up

Thu Dec 15 11:10:42 [ReplSetHealthPollTask] replSet member 10.0.10.24:27018 RECOVERING
Thu Dec 15 11:10:42 [ReplSetHealthPollTask] replSet info api:27017 is up
Thu Dec 15 11:10:42 [ReplSetHealthPollTask] replSet member api:27017 PRIMARY

Thu Dec 15 11:11:22 [ReplSetHealthPollTask] replSet member 10.0.10.24:27018 SECONDARY

 

当17 挂掉  19选举 18 启动为 PRIMARY

Thu Dec 15 11:21:18 [conn4] end connection 10.0.10.24:11516

Thu Dec 15 11:21:19 [ReplSetHealthPollTask] DBClientCursor::init call() failed
Thu Dec 15 11:21:19 [ReplSetHealthPollTask] replSet info api:27017 is down (or slow to respond): DBClientBase::findOne: transport error: api:27017 query: { replSetHeartbeat: "myset", v: 3, pv: 1, checkEmpty: false, from: "10.0.10.24:27019" }
Thu Dec 15 11:21:20 [conn3] replSet info voting yea for 1
Thu Dec 15 11:21:21 [ReplSetHealthPollTask] replSet member 10.0.10.24:27018 PRIMARY
Thu Dec 15 11:22:07 [initandlisten] connection accepted from 10.0.10.24:63165 #6
Thu Dec 15 11:22:07 [ReplSetHealthPollTask] replSet info api:27017 is up

Thu Dec 15 11:22:07 [ReplSetHealthPollTask] replSet member api:27017 SECONDARY

 

 

 

Set name: myset
Majority up: yes

 

Member id Up cctimeLast heartbeat Votes Priority State Messages optimeskew
api:27017 (me) 0 1 8.5 mins 1 1 SECONDARY 4ee96793:1
10.0.10.24:27018 1 1 8.5 mins 1 sec ago 1 1 PRIMARY 4ee96793:1
10.0.10.24:27019 2 1 8.5 mins 1 sec ago 1 1 ARBITER 0:0

 

备份脚本

 

#export mongodb 

echo "start"
pid=`cat /usr/local/mongodb/mongo.pid`
if [ "$pid" = "" ];then
   echo "server is stoped"
exit 0
fi
prefix=`date +%Y%m%d`
file="/data/mongobak/test.$prefix"
#exportcmd="/usr/local/mongodb/bin/mongodump -d test -o $file"
#$exportcmd

echo "end"

 

恢复脚本

d=`ls -l -t /data/mongobak/ |awk 'NR==2 {print $9;exit}'`

file="/data/mongobak/$d/test"
 
if [ ! -d $file ];then
 echo "file not exist!"
fi
 
for f in $file/* ;do
echo $f
done
cmd="/usr/local/mongodb/bin/mongorestore -d test $file"
$cmd
 

echo "db restored!"

 

 

 

java客户端

 

 

 

 

---------------------------官方文档

Minimum Configuration

For production use you will want a minimum of three nodes in the replica set.

Either:

  • 2 full nodes and 1 arbiter
  • 3 full nodes

To avoid a single point of failure, these nodes must be on different computers.

It is standard to have at least 2 nodes equipped to handle primary duties.

Basic Configuration

  • Replica sets typically operate with 2 to 7 full nodes and possibly an arbiter.
  • Within a given set, there should be an odd number of total nodes.
    • If full nodes are only available in even numbers, then an arbiter should be added to provide an odd number.
    • The arbiter is a lightweight mongod process whose purpose is to break ties when electing a primary.
    • The arbiter does not typically require a dedicated machine.

Example: 3 full servers

In this example, three servers are connected together in a single cluster. If the primary fails any of the secondary nodes can take over.

Getting Started – A sample session

The following is a simple configuration session for replica sets.

For this example assume a 3-node Replica set with 2 full nodes and one arbiter node. These servers will be named sf1sf2 and sf3.

Step 1: Start mongod with --replSet

On each of the servers start an instance of the mongo daemon:

sf1$ mongod --rest --replSet myset
sf2$ mongod --rest --replSet myset
sf3$ mongod --rest --replSet myset
the --replSet parameter has the same value myset on all three instances.

Step 1a: Check the Replication UI (optional)

Visit http://sf1:28017/_replSet, this will give you an idea on the current status of the replica set. As you proceed through the remaining steps, refreshing this dashboard to see changes. See the docs here for more details.

Step 2: Initiate the replica set

Connect to mongo on sf1.

$ mongo --host sf1
> rs.initiate()
{
    "info2" : "no configuration explicitly specified -- making one",
    "info" : "Config now saved locally.  Should come online in about a minute.",
    "ok" : 1
}
>
Initializing the replica set this way will cause the replica set to use the hostname of the current server in the replica set configuration. If your hostnames are not known to all mongo and application servers, you may need to initialize the hosts explicitly - see Replica Set Configuration for more details.

Step 3: Add nodes to the replica set

$ mongo --host sf1
> rs.add(“sf2”)
{ “ok” : 1 }
> rs.addArb(“sf3”)
{ “ok” : 1 }

Any operations that change data will now be replicated from sf1 to sf2.

If sf1 is shut down, you will see sf2 take over as primary

Changing Client Code

  • To leverage replica sets from your client code, you will need to modify your client connection code.
  • The details for doing this will vary with each driver (language).

分享到:
评论

相关推荐

    linux安装mongodb教程

    /usr/local/mongodb/mongodb-linux-2.0.7/bin/mongod --dbpath=/usr/local/mongodb/data/db --logpath=/usr/local/mongodb/mongodb-linux-2.0.7/logs/mongodb.log --logappend --port=27017 --fork 知识点 6:配置...

    mongodb c#驱动最新驱动mongodb.driver.dll 版本2.12.0-beta1

    MongoDB 是一个流行的开源、基于分布式文件存储的数据库系统,主要设计用于处理大量数据的分布式环境。C# 驱动是 MongoDB 提供的一种客户端库,允许 .NET 开发者与 MongoDB 数据库进行交互。标题提到的是 MongoDB 的...

    mongodb-测试数据

    MongoDB是一种流行的开源、分布式文档数据库,常被用于构建高性能、可扩展的应用程序。这个“mongodb-测试数据”压缩包显然包含了一些用于测试MongoDB功能的样例数据集,特别是针对增、删、改、查(CRUD)操作的学习...

    MongoDB实验 - .docx

    MongoDB 实验报告 本实验报告旨在详细介绍 MongoDB 的安装、配置和基本操作步骤,本报告基于 CentOS 7 系统,通过一步一步的截图和文字说明,帮助读者快速掌握 MongoDB 的使用。 一、安装 MongoDB 首先,我们需要...

    spring-data使用mongodbTemplate对MongoDB进行读写操作

    Spring Data MongoDB是一个强大的Java库,它为开发人员提供了一种简单的方式来访问和操作MongoDB数据库。这个库是Spring Data框架的一部分,旨在简化数据访问层的实现,尤其在使用NoSQL数据库如MongoDB时。MongoDB...

    mongodb Windows7 64位

    MongoDB是一款开源、高性能、无模式的文档型数据库,它在现代应用程序开发中扮演着重要的角色,特别是在处理大量非结构化数据时。针对"mongodb Windows7 64位"这个主题,我们将深入探讨MongoDB在Windows 7 64位操作...

    mongodb.dll 下载.zip

    MongoDB是一个开源、分布式、高性能的NoSQL数据库,以其灵活性、可扩展性和高可用性而闻名。`mongodb.dll`是MongoDB数据库系统在Windows平台上运行所必需的一个动态链接库(DLL)文件,它包含了MongoDB客户端和...

    mongodb安装包和compass

    MongoDB是一款开源、分布式、高性能的NoSQL数据库,它不使用传统的表格和列式结构来存储数据,而是采用键值对、文档、集合和图形数据模型。这种设计使得MongoDB在处理非结构化和半结构化数据时表现出色,特别适合大...

    mongodb数据库jar包

    MongoDB是一个流行的开源、分布式文档型数据库,设计用于处理大量数据并提供高可用性和高性能。在Java应用程序中,为了与MongoDB进行交互,我们需要使用Java MongoDB驱动程序。这个压缩包包含的就是Java连接MongoDB...

    geoserver发布mongodb矢量数据地图服务.docx

    Geoserver发布MongoDB矢量数据地图服务 Geoserver是一款功能强大且开源的地理信息系统(GIS)服务器,能够实现空间数据的存储、处理和发布。MongoDB是一款NoSQL数据库,能够存储大量的矢量数据。本文将介绍如何使用...

    Centos7下安装MongoDB

    安装MongoDB需要安装mongodb-org元数据包,该包包含四个组件包:mongodb-org-server、mongodb-org-mongos、mongodb-org-shell、mongodb-org-tools。 在Centos7下安装MongoDB可以通过epel-release的yum源来安装,...

    MongoDB入门指南.pdf

    MongoDB入门指南 MongoDB是一种开源的文档类型数据库,它具有高性能、可扩展、高可用、自动收缩等特性。MongoDB能够避免传统的ORM映射,从而有助于开发。MongoDB中的每一行记录就是一个文档,它是一个由键值对构成...

    在linux下配置 和启动mongodb

    "MongoDB 在 Linux 下的配置和启动" MongoDB 是一个流行的 NoSQL 数据库,广泛应用于大数据存储和实时数据处理。在 Linux 环境下,配置和启动 MongoDB 需要遵循一定的步骤,本文将详细介绍在 Linux 下配置和启动 ...

    Linux安装mongodb客户端

    sudo vim /etc/yum.repos.d/mongodb-org-4.2.repo 写入: [mongodb-org-4.2] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/ gpgcheck=1 enabled=1 gpg...

    mongodb linux 64位安装包

    MongoDB是一款高性能、无模式的分布式文档型数据库,被广泛应用于大数据存储、实时分析和互联网应用等领域。在Linux 64位系统上安装MongoDB,是很多开发人员和系统管理员的常见需求。以下是对"mongodb linux 64位...

    mongodb7.0.0安装包

    MongoDB是一款开源、高性能、无模式的分布式文档型数据库,被广泛应用于Web应用程序、内容管理系统、数据存储等场景。此“mongodb7.0.0安装包”是针对Windows 64位操作系统的一个版本,适用于需要在Windows环境中...

    MongoDB4.2.21 Linux版本安装包

    MongoDB是一款高性能、无模式的分布式文档型数据库,被广泛应用于大数据分析、内容管理系统、物联网(IoT)、实时应用程序和地理位置数据存储等场景。在Linux环境下安装MongoDB 4.2.21版本,是许多系统管理员和开发者...

    MongoDB之conf配置文件详解

    MongoDB之conf配置文件详解 MongoDB的配置文件是服务器的核心组件之一,它控制着MongoDB服务器的各种设置和行为。在本文中,我们将详细介绍MongoDB的配置文件的各个部分,并解释每个设置的作用和意义。 一、数据库...

    MongoDB图形化管理工具 MongoDB Compass

    MongoDB图形化管理工具 MongoDB Compass

    mongodb4.4.6安装包

    MongoDB是一款开源、分布式、高性能的NoSQL数据库,以其灵活性、可扩展性和高可用性而备受开发者喜爱。本文将详细讲解MongoDB 4.4.6版本的安装过程,适用于Windows和CentOS 7.0操作系统。 首先,我们来看MongoDB ...

Global site tag (gtag.js) - Google Analytics