测试环境:
两台机器,192.168.3.24和192.168.3.25,两太电脑都是Linux系统。
 
192.168.3.24上的MongoDB作为Master,192.168.3.25作为Slave。 分别对应的用户名为 dominic4.com  和dominic5.com

一:
Master 启动配置( 这里可以使用一个配置文件)  

[root@dominic4 bin]# ./mongod --dbpath /data/db --logpath /data/log/log.log --master --oplogSize 64 --port 20000 --fork

--master:以master模式启动数据库。

--oplogSize:指定master上用于存放更改的数据量,如果不指定,在32位机上最少为50M,在64位机上最少为 1G,最大为磁盘空间的5%。


二:

Slave机器上启动数据库:

[root@dominic5 bin]# ./mongod --slave --source 192.168.3.24:20000 --dbpath /data/db --logpath /data/log/log.log --port 20000 -slavedelay 5 --autoresync --fork


--slave:以从服务器方式启动
--autoresync:自动重新sync,因为该操作会copy 主服务器上的所有document,比较耗时,在10分钟内最多只会进行一次。
--source:主服务器地址

--only:仅限于同步指定数据库(下面示例为test库)
--slavedelay:同步延时,复制检测的间隔



三:测试是否同步

[root@dominic4 bin]# ./mongo 192.168.3.24:20000       -- --master

MongoDB shell version: 2.4.10

connecting to: 192.168.3.24:20000/test

> show dbs

local 0.203125GB

> use test

switched to db test

> db.col.save({a:'another',b:'yst'})

> db.col.find()

{ "_id" : ObjectId("53bfb49780f77a93eb763cd8"), "a" : "another", "b" : "yst" }



[root@dominic5 bin]# ./mongo 192.168.3.25:20000     -----slave

MongoDB shell version: 2.4.10

connecting to: 192.168.3.25:20000/test

> show dbs

local 0.078125GB

> use test

switched to db test

> db.col.save({a:'bu',b:'yst2'})

not master

> db.col.find()

{ "_id" : ObjectId("53bfb49780f77a93eb763cd8"), "a" : "another", "b" : "yst" }


四:

再来看看用安全认证模式启动Master和Slave的情况:



附录一、Slave 顶替 Master
如果主服务器 10.0.0.11 宕机了,
此时需要用 10.0.0.12 机器来顶替 master 服务,

步骤如下:
#停止 10.0.0.12 进程(mongod)

  
  
    1.  kill -2 `ps -ef|grep mongod|grep -v grep|awk '{print $2}'` 

#删除 10.0.0.12 数据目录中的 local.*

  
  
    1.  rm -rf /elain/data/mongodb/db/local.* 

#以--master 模式启动 10.0.0.12

  
  
    1.  /elain/apps/mongodb/bin/mongod --fork --master --oplogSize=4096 --port 27001 --dbpath /elain/data/mongodb/db --logpath /elain/logs/mongodb/mongodb.log 



附录二、切换 Master/Slave 角色
切换主库192.168.3.24 和从库192.168.3.25 的角色

1: 用 fsync 命令暂停 主库 上的写操作,   

> db.fsyncLock()
{
 "info" : "now locked against writes, use db.fsyncUnlock() to unlock",
 "seeAlso" : "http://dochub.mongodb.org/core/fsynccommand",
 "ok" : 1
}
   ---最好不要操作,主备都是一样,否然屏幕卡死,只能通过结束mongod 进程,重新登陆


2: 关闭 从库 上的服务  
 ps -ef |grep mongod 

清空 从库 上的 local.*文件
cd  /data/db
rm local.*

3 :用-master 选项重启  从库 服务
  ./mongod --dbpath /data/db --logpath /data/log/log.log --master --oplogSize 64 --port 20000 --fork

在 从库 上执行一次写操作,初始化 oplog,获得一个同步起始点
use test
db.dominic.insert({"dddd":"dddd"})

关闭 从库 服务,此时 从库 已经有了新的 local.*文件

4 : 关闭 主库 服务,并且用 从库 上新的 local.*文件来代替 主库 上的 local.*文件(建议先压缩再COPY)

5 :用-master 选项重启 从库 服务

在启动slave的选项上加一个-fastsync 选项来重启 主库 服务(或者   --autoresync)也可


#查看主从同步信息:

#在丛库上查询主库地址


Logo

更多推荐