MongoDB 主(Master)/从(slave)数据库同步

需要启动的两个MongoDB文档数据库,一个是以主模式启动,另一

个属于从模式启动。因此,主服务器进程将创建一个local.oplog,将

通过这个交易记录同步到Slave服务器中。

1. 建立主/从服务器

主服务器:132.129.31.213:10111A

从服务器:132.129.31.213:10112B

启动Master数据库服务器:

$./mongod  –master -port=10111 -dbpath=/home/tsaip/mongodb/data/10111 

-nohttpinterface &

启动Slave数据库服务器:5s同步一次

$./mongod  –slave –source=132.129.31.213:10111 -port=10112

-dbpath=/home/tsaip/mongodb/data/10112 –slavedelay 5  -nohttpinterface &

测试同步结果:

//登录master数据库服务器

$ ./mongo -host 132.129.31.213 -port 10111

MongoDB shell version: 1.8.2-rc2

connecting to: 132.129.31.213:10111/test

> use test;

switched to db test

> db.user.insert({_id:1,name:'samlee',age:80});

> db.user.find();

{ "_id" : 1, "name" : "samlee", "age" : 80 }

>

//登录slave数据库服务器

$ ./mongo -host 132.129.31.213 -port 10112

MongoDB shell version: 1.8.2-rc2

connecting to: 132.129.31.213:10112/test

> use test;

switched to db test

> db.user.find();

{ "_id" : 1, "name" : "samlee", "age" : 80 }


21

 

>

数据同步成功!!

slave数据库服务器上执行如下操作:

> db.user.insert({_id:2,name:'Jack',age:23});

not master

>

提示not master ,所以slave服务器只可以执行读操作,不可以执行

写操作,如下图所示:

 

 

MongoDB 主(Master)/从(slave)数据库同步_第1张图片

2. 相关参数说明

Master

 

    --master                            master模式

    --oplogSize arg             size limit (in MB) for op log

 

Slave

 

    --slave                             slave模式

    --source arg                    source指定master位置

    --only arg                        单独指定备份某一database

    --slavedelay arg            指定与Master延迟时间()

    --autoresync                    Slave数据过时后自动重连

 


22

 

3. Slave顶替Master

如果上面的主服务器A宕了,此时需要用B机器来顶替master服务,

步骤如下:

停止B进程(mongod)

删除B数据目录中的local.*

--master模式启动B

4. 切换Master/Slave角色

a) 假设已经具备主机A和从机B,此时想切换它们的角色,步骤如下:(假设A是健康的)

b) fsync命令暂停A上的写操作, 

c) 确定B是从机,关闭B上的服务

d) 清空B上的local.*文件

e) -master选项重启B服务

f) B上执行一次写操作,初始化oplog,获得一个同步起始点

g) 关闭B服务,此时B已经有了信的local.*文件

h) 关闭A服务,并且用B上新的local.*文件来代替A上的local.*文件(拷贝之前,记得先

压缩,因为文件可能很大)

i) -master选项重启B服务

j) 在平时的slave选项上加一个-fastsync选项来重启A服务

 

如果A不是健康的,但是硬件是健康的,那么跳过上面的前两步,并且用B上所有文件去

替换A上的文件,重启服务。

5. 更新主服务器位置

假设现有从机启动方式如下:

$ mongod --slave --source 132.129.31.21310000

此时如果想更换主机的位置,可以通过以下的步骤来完成:

重启mongod服务,不要加-slave –source选项:

$ mongod

启动shell,执行如下操作:


23

 

> use local

switched to db local

>  db.sources.update({host : "132.129.31.21310000"},

{$set : {host : "132.129.31.21310001"}})

接着重启从机上的服务:

$ ./mongod --slave --source 132.129.31.213:10001

$ # or

$ ./mongod --slave

你可能感兴趣的:(MongoDB 主(Master)/从(slave)数据库同步)