./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 |
备份脚本
#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 sf1, sf2 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).
分享到:
相关推荐
/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 提供的一种客户端库,允许 .NET 开发者与 MongoDB 数据库进行交互。标题提到的是 MongoDB 的...
MongoDB 实验报告 本实验报告旨在详细介绍 MongoDB 的安装、配置和基本操作步骤,本报告基于 CentOS 7 系统,通过一步一步的截图和文字说明,帮助读者快速掌握 MongoDB 的使用。 一、安装 MongoDB 首先,我们需要...
Spring Data MongoDB是一个强大的Java库,它为开发人员提供了一种简单的方式来访问和操作MongoDB数据库。这个库是Spring Data框架的一部分,旨在简化数据访问层的实现,尤其在使用NoSQL数据库如MongoDB时。MongoDB...
MongoDB是一款开源、高性能、无模式的文档型数据库,它在现代应用程序开发中扮演着重要的角色,特别是在处理大量非结构化数据时。针对"mongodb Windows7 64位"这个主题,我们将深入探讨MongoDB在Windows 7 64位操作...
MongoDB是一种流行的开源、分布式文档数据库,常被用于构建高性能、可扩展的应用程序。这个“mongodb-测试数据”压缩包显然包含了一些用于测试MongoDB功能的样例数据集,特别是针对增、删、改、查(CRUD)操作的学习...
MongoDB是一个开源、分布式、高性能的NoSQL数据库,以其灵活性、可扩展性和高可用性而闻名。`mongodb.dll`是MongoDB数据库系统在Windows平台上运行所必需的一个动态链接库(DLL)文件,它包含了MongoDB客户端和...
Geoserver发布MongoDB矢量数据地图服务 Geoserver是一款功能强大且开源的地理信息系统(GIS)服务器,能够实现空间数据的存储、处理和发布。MongoDB是一款NoSQL数据库,能够存储大量的矢量数据。本文将介绍如何使用...
安装MongoDB需要安装mongodb-org元数据包,该包包含四个组件包:mongodb-org-server、mongodb-org-mongos、mongodb-org-shell、mongodb-org-tools。 在Centos7下安装MongoDB可以通过epel-release的yum源来安装,...
MongoDB入门指南 MongoDB是一种开源的文档类型数据库,它具有高性能、可扩展、高可用、自动收缩等特性。MongoDB能够避免传统的ORM映射,从而有助于开发。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 下的配置和启动" MongoDB 是一个流行的 NoSQL 数据库,广泛应用于大数据存储和实时数据处理。在 Linux 环境下,配置和启动 MongoDB 需要遵循一定的步骤,本文将详细介绍在 Linux 下配置和启动 ...
MongoDB是一个流行的开源、分布式文档型数据库,设计用于处理大量数据并提供高可用性和高性能。在Java应用程序中,为了与MongoDB进行交互,我们需要使用Java MongoDB驱动程序。这个压缩包包含的就是Java连接MongoDB...
MongoDB是一款高性能、无模式的分布式文档型数据库,被广泛应用于大数据存储、实时分析和互联网应用等领域。在Linux 64位系统上安装MongoDB,是很多开发人员和系统管理员的常见需求。以下是对"mongodb linux 64位...
MongoDB是一款开源、分布式、高性能的NoSQL数据库,以其灵活性、可扩展性和高可用性而备受开发者喜爱。本文将详细讲解MongoDB 4.4.6版本的安装过程,适用于Windows和CentOS 7.0操作系统。 首先,我们来看MongoDB ...
MongoDB之conf配置文件详解 MongoDB的配置文件是服务器的核心组件之一,它控制着MongoDB服务器的各种设置和行为。在本文中,我们将详细介绍MongoDB的配置文件的各个部分,并解释每个设置的作用和意义。 一、数据库...
MongoDB图形化管理工具 MongoDB Compass
MongoDB是一款开源、高性能、无模式的分布式文档型数据库,被广泛应用于Web应用程序、内容管理系统、数据存储等场景。此“mongodb7.0.0安装包”是针对Windows 64位操作系统的一个版本,适用于需要在Windows环境中...
MongoDB是一款高性能、无模式的分布式文档型数据库,被广泛应用于大数据分析、内容管理系统、物联网(IoT)、实时应用程序和地理位置数据存储等场景。在Linux环境下安装MongoDB 4.2.21版本,是许多系统管理员和开发者...
MongoDB是一款开源、分布式、高性能的NoSQL数据库,以其灵活性、可扩展性和高可用性而备受开发者喜爱。本文将详细讲解MongoDB的安装过程,包括4.2.0和4.0.7两个版本,以及MongoDB Compass的安装与使用。 首先,我们...