1. 程式人生 > >mongodb叢集搭建(雙機)

mongodb叢集搭建(雙機)

搭建資料庫叢集從未如此簡單過, 想起做rac的時候, raid, lv, vg, 雙機互信, 建庫等一大堆弄下來, 在完全不出錯的情況下, 都要接近6個小時.

環境準備.

a). 作業系統, centos6.5 x86.64.

b). mongodb: mongodb-linux-x86_64-2.6.5.gz

解壓好mongodb之後就可以直接開始建叢集了.

1. 先建立6個資料夾.

/usr/local/mongodb-linux-x86_64-2.6.5/gmlogx/dat0

/usr/local/mongodb-linux-x86_64-2.6.5/gmlogx/dat1

/usr/local/mongodb-linux-x86_64-2.6.5/gmlogx

/dat2

/usr/local/mongodb-linux-x86_64-2.6.5/gmlogx/log0

/usr/local/mongodb-linux-x86_64-2.6.5/gmlogx/log1

/usr/local/mongodb-linux-x86_64-2.6.5/gmlogx/log2

2. 因為只有一臺機器, 所以使用了三個不同的埠, 開三個console, 依次執行下面的三條命令.

mongod --replSet gmlogx --dbpath=/usr/local/mongodb-2.6.5/gmlogx/dat0 --port 10000 --oplogSize=512 \
--logpath=/usr/local/mongodb-linux-x86_64-2.6.5/gmlogx/log0/log.log --logappend
mongod --replSet gmlogx --dbpath=/usr/local/mongodb-2.6.5/gmlogx/dat1 --port 10001 --oplogSize=512 \
--logpath=/usr/local/mongodb-linux-x86_64-2.6.5/gmlogx/log1/log.log --logappend
mongod --replSet gmlogx --dbpath=/usr/local/mongodb-2.6.5/gmlogx/dat2 --port 10002 --oplogSize=512 \
--logpath=/usr/local/mongodb-linux-x86_64-2.6.5/gmlogx/log2/log.log --logappend

3. 部分引數解釋: 

--replSet gmlogx, 指定了叢集的名稱gmlogx.

--port 10000, 指的是資料庫節點的服務埠為10000. 

--oplogSize=512, 指的是給mongdb的操作日誌緩衝區大小, 單位是M, 即512M. 這裡有個小坑. 如果不指定oplogSize的話, 兩個資料庫節點

就佔用了90G磁碟, 如下圖.


4. 我們的機器ip是192.168.1.117, 連線上其中一個接點, 依次鍵入下面的命令.

[[email protected] gmlogx]# mongo 192.168.1.117:10000
MongoDB shell version: 2.6.5
connecting to: 192.168.1.117:10000/test
> var cfg = {_id: "gmlogx", members: []}
> cfg.members.push({_id: 0, host: "192.168.1.117:10000"});
1
> cfg.members.push({_id: 1, host: "192.168.1.117:10001"});
2
> cfg.members.push({_id: 2, host: "192.168.1.117:10002", arbiterOnly: true});
3
> rs.initiate(cfg);
{
	"info" : "Config now saved locally.  Should come online in about a minute.",
	"ok" : 1
}
>
上面的arbiterOnly: true, 表示這是一個仲裁節點,  它僅用於選舉和協調另外兩個資料庫節點的主備關係.  仲裁節點本身不承載業務資料. 事實上

這種仲裁者的叢集環境不被<<mongodb權威指南>>推薦,  原話是: 如果可能, 儘量在副本集中使用奇數個數據成員, 而不要使用仲裁者.

裡可能有個地方需要注意, 在敲上面的命令之前, 埠可能還沒有ready, 請先確認兩個資料庫節點的埠已經LISTEN


5.  退出mongo-shell, 重新進入一次就可以發現, 192.168.1.117:10000已經被選舉成主節點.

[[email protected] gmlogx]# mongo 192.168.1.117:10000
MongoDB shell version: 2.6.5
connecting to: 192.168.1.117:10000/test
gmlogx:PRIMARY> rs.status()
{
	"set" : "gmlogx",
	"date" : ISODate("2014-11-14T04:24:45Z"),
	"myState" : 1,
	"members" : [
		{
			"_id" : 0,
			"name" : "192.168.1.117:10000",
			"health" : 1,
			"state" : 1,
			"stateStr" : "PRIMARY",
			"uptime" : 1101,
			"optime" : Timestamp(1415938107, 1),
			"optimeDate" : ISODate("2014-11-14T04:08:27Z"),
			"electionTime" : Timestamp(1415938116, 1),
			"electionDate" : ISODate("2014-11-14T04:08:36Z"),
			"self" : true
		},
		{
			"_id" : 1,
			"name" : "192.168.1.117:10001",
			"health" : 1,
			"state" : 2,
			"stateStr" : "SECONDARY",
			"uptime" : 977,
			"optime" : Timestamp(1415938107, 1),
			"optimeDate" : ISODate("2014-11-14T04:08:27Z"),
			"lastHeartbeat" : ISODate("2014-11-14T04:24:44Z"),
			"lastHeartbeatRecv" : ISODate("2014-11-14T04:24:45Z"),
			"pingMs" : 0,
			"syncingTo" : "192.168.1.117:10000"
		},
		{
			"_id" : 2,
			"name" : "192.168.1.117:10002",
			"health" : 1,
			"state" : 7,
			"stateStr" : "ARBITER",
			"uptime" : 977,
			"lastHeartbeat" : ISODate("2014-11-14T04:24:44Z"),
			"lastHeartbeatRecv" : ISODate("2014-11-14T04:24:45Z"),
			"pingMs" : 0
		}
	],
	"ok" : 1
}
gmlogx:PRIMARY>

6.  建立一個database, 並嘗試插入一條記錄. 

gmlogx:PRIMARY> use gmlogx
switched to db gmlogx
gmlogx:PRIMARY> db.logx.insert({usr: 'usr', age: 32})
WriteResult({ "nInserted" : 1 })
gmlogx:PRIMARY> 

7. 通過java-driver進行查詢操作, 如果你想做到讀寫分離的效果, 可以直接訪問備節點(192.168.1.117:10001).

public static void main(String[] args) throws UnknownHostException
	{
		MongoOptions mo = new MongoOptions();
		List<ServerAddress> addr = Arrays.asList(new ServerAddress("192.168.1.117", 10000), new ServerAddress("192.168.1.117", 10001));
		mo.readPreference = ReadPreference.secondary(); /* 可從副本中讀取. */
		Mongo mg = new Mongo(addr, mo);
		DBCollection coll = mg.getDB("gmlogx").getCollection("logx");
		DBCursor cur = coll.find();
		while (cur.hasNext())
			System.out.println(cur.next());
	}

相關推薦

mongodb叢集搭建()

搭建資料庫叢集從未如此簡單過, 想起做rac的時候, raid, lv, vg, 雙機互信, 建庫等一大堆弄下來, 在完全不出錯的情況下, 都要接近6個小時. 環境準備. a). 作業系統, centos6.5 x86.64. b). mongodb: mongodb-

搭建OPENVPN遇到的坑

需求描述:openvpn 掛了另一個服務能頂上,並且要快。 1.第一個坑:服務搭建好了,宕機切換,等待兩分鐘,才連上,這完全不符合我的需求 2.第二個坑:猜想是不是用的VPN自帶服務的問題,試試通過lvs 搭建看看,然鵝 沒有用,時間又過去了幾個小時 3.第三個坑:既然加了lvs也沒用,

MongoDB叢集搭建與java程式碼操作MongoDB示例

MongoDB叢集搭建與java程式碼操作MongoDB示例 MongoDB叢集搭建過程 java使用MongoDB叢集Demo MongoDB叢集搭建過程 1. MongoDB Replica set叢集搭建準備(主從仲裁) 介

mongodb叢集搭建(分片+副本)

原文地址:https://www.cnblogs.com/ityouknow/p/7344005.html   相關概念 先來看一張圖: 從圖中可以看到有四個元件:mongos、config server、shard、replica set。 mongos,資料庫叢集請求的入口,所有的

linux下Mongodb叢集搭建:分片+副本集

三臺伺服器 192.168.1.40/41/42 安裝包 mongodb-linux-x86_64-amazon2-4.0.1.tgz 服務規劃  伺服器40  伺服器41  伺服器42  mongos  mongos  mongos  config server  config server  

使用win8 r2的故障轉移叢集實現熱備(自己實現)

(網上的教程太不全,浪費了我大量時間,自己總結!圖就不用了) 準備工作: 軟體準備:本地裝虛擬機器,虛擬機器裝三臺win8 server r2系統,都使用橋接上網(公司通過代理上網)配置兩塊網絡卡,記憶體分配2G,硬碟分配40G。 理論準備:(1)故障轉移群集要求 使用者為

Mongodb叢集搭建的三種方式

       Mongodb是時下流行的NoSql資料庫,它的儲存方式是文件式儲存,並不是Key-Value形式。關於Mongodb的特點,這裡就不多介紹了,大家可以去看看官方說明:http://docs.mongodb.org/manual/        今天主要來說

懵懵懂懂搭建RAC環境(本能搭建)

起源:無知者無畏的IT小新兵接手了一個整合資料庫的活,作為甲方人員,具體的技術工作自然有相應的人員去完成,IT小新兵需要做的只是梳理各方需求,同時將整合工作和部門內部的流程結合起來。 手頭資源:兩臺刀片BL685C,兩個未滿的刀框C7000,以及一批可以調動和詢問的工程師。

33.Windbg-VMware+windbg搭建除錯(增加virtualKD)

虛擬機器環境 1.xp 虛擬機器用的是XP系統,找到XP系統開啟系統盤(比如C盤),找到Boot.ini,去掉這個檔案的只讀屬性,用記事本開啟Boot.ini [boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)p

mongodb叢集搭建

建立yum源 vim /etc/yum.repos.d/mongodb-org-3.2.repo [mongodb-org-3.2] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$

LVS+KeepAlived搭建熱備負載均衡

從下載內容包中找到ipvsadm-1.24.tar.gz,執行如下命令(執行命令出錯的說明編譯環境存在問題,請更新下載GCC) #tar -zxvf keepalived-1.1.15.tar.gz #cd keepalived-1.1.15 #./configure --prefix=/usr/local

.NET Core+MongoDB叢集搭建與實戰

[TOC] ## 安裝 MongoDB 安裝 MongoDB 網上有很多教程,MongoDB 官方文件:[https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/](https://docs.mongodb.com/manual

HDFS叢集搭建,高可用熱備模式(HA)自動切換,hdfs+zookeeper+journalnode,步驟分步原理詳解(適合初學者)

有寫的不對的地方,歡迎各位同學評論指正,博主會進行修改。 前言 作者也是初學hadoop,瞭解各元件的用途,並且專案中有些東西用不到,所以作者用最簡化的元件搭建,避免多餘資源的浪費,作者最初構想是zookeeper+hdfs搭建一個分散式檔案系統,不用yarn和ma

winDbg + VMware + window 聯調環境搭建

真機調試 net 服務 x64 。。 .exe 鏈接 成了 內核開發 這裏簡單的介紹一下內核開發雙機聯調的搭建環境,盡管網上有很多類似的文章,但看了很多總是不太舒服,覺得不太明白,所以自己實踐一下總結一篇。下面就拿我的環境簡單介紹,希望別人可以看懂。準備工具:裝虛擬機VMw

Haproxy+Keepalived(熱備)搭建高可用web架構

ise mark 高可用web keepalive email protocol rip 火墻 詳情 1、目的搭建web高可用架構,用haproxy作為前段負載均衡分攤後端web服務器壓力,Keepalived保證haproxy的存活(雙機熱備:一臺haproxy掛了,自動

RocketMQ學習筆記(4)----RocketMQ搭建Master叢集

前面已經學習了RockeMQ的四種叢集方式,接下來就來搭建一個雙Master(2m)的叢集環境。 1. 雙Master伺服器環境 序號    ip      使用者名稱    密碼        角色            模式 (1)   47.105.145.123  root          n

CentOS 6.10安裝配置WebLogic 11g叢集

一、演示環境: IP OS JDK WebLogic 記憶體 伺服器角色 埠 192.168.1.220 CentOS   6.10 x86_64 jdk-7u80-linux-x6

RocketMQ學習筆記(16)----RocketMQ搭建從(非同步複製)叢集

1. 修改RocketMQ預設啟動埠   由於只有兩臺機器,部署雙主雙從需要四個節點,所以只能修改rocketmq的預設啟動埠,從官網下載rocketmq的source檔案,解壓後使用idea開啟,全域性搜尋9876,將所有使用9876埠的地方改為9877。   在終端開啟,使用:mvn -Preleas

搬運 搭建高可用mongodb叢集(二)—— 副本集

在上一篇文章《搭建高可用MongoDB叢集(一)——配置MongoDB》 提到了幾個問題還沒有解決。 主節點掛了能否自動切換連線?目前需要手工切換。 主節點的讀寫壓力過大如何解決? 從節點每個上面的資料都是對資料庫全量拷貝,從節點壓力會不會過大? 資料壓力大到機

CentOS 7.5安裝配置WebLogic 12c叢集

一、演示環境: IP OS JDK WebLogic 記憶體 伺服器角色 埠 192.168.1.144 CentOS   7.5 x86_64 jdk-8u192-linux-x6