clq

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

来个原创: mongodb 集群实例

因为估计我没那么多服务器去做分片,所以下只是类似主从的服务器集群,没有对单个数据库再分片到多个机器上.
以下目标就是在多个机器上都保存一份完整数据,并能自动主从切换(未实现)

即便是这样,配置仍然一波三折,特别网上的文章多基于本机或者是版本实现差异,多个步骤是对不上那些教程的.

使用版本 mongodb-win32-i386-2.0.2

1.解压后即可开始使用.
2.讲解一下配置文件.
网上的例子基本都是命令行的,配置文件方式如下
mongod --config D:\mongodb-win32-i386-2.0.2\bin\mongo.cnf
基本上配置文件内容与参数差不多: 把命令行参数的 "--" 去掉然后加上 "=" 在参数值前并且每个参数单独一行就可以了.
示例如下:
dbpath=D:\mongodb-win32-i386-2.0.2\bin\data

不过例子仍然是命令行,如下
mongod.exe --dbpath D:\mongodb-win32-i386-2.0.2\bin\data --replSet rs1 --keyFile D:\mongodb-win32-i386-2.0.2\bin\key_r0

3.看到那个 key_r0 文件没有,这个是 mongdb 一定要有的标识,并且主从机是一样的(其实我的主从机只有 data 目录不同)
内容就是一个文本文件,可以这样 "this is rs1 super secret key"

4.第一次一定要在命令行中初始化,不过初始化后就会写入文件以后就不用了,程序启动就行.
5.初始化时主从机都要初始化.
6.初始化时至少从机的 data 中不能有数据.执行 rs.initiate(config_rs1); --初始化配置 时会报错的,看提示来.
7.命令如下:
命令1
config_rs1 = {_id: 'rs1', members: [
    {_id: 0, host: '192.168.41.177:27017', priority:1}, --成员IP 及端口,priority=1 指PRIMARY
    {_id: 1, host: '192.168.41.34:27017'}
}

命令2
rs.initiate(config_rs1); --初始化配置

可能我的版本或配置有问题,命令中的英文要去掉.
8.命令是否成功用 rs.status() 查看.
9.命令要用本机的 mongodb.exe 执行.
10.要想用 MongoVUE 这样的工具跨机器访问从机的数据还能使用用户登录模式,方法是给数据库加一个用户.加在 admin
数据库中的话可以访问全部数据库.添加用户的操作要在主机上执行,从机会自动同步的.
11.默认从机是只读的,要改 SlaveOk ,否则会报 "Server is not a primary and SlaveOk is false.."
12.认证方式的登录连接字符串如下:
MongoServer mongodb = MongoServer.Create("mongodb://192.168.41.34:27017/root:111");
失败
//MongoServer mongodb = MongoServer.Create("mongodb://192.168.41.34:27017/root:111?slaveOk=true");









posted on 2012-03-02 13:16  clq  阅读(2259)  评论(2编辑  收藏  举报