安装debian 8.2
安装 mongodb 3.2
192.168.0.100 debian1
192.168.0.101 debian2
可以参考博客安装。
配置 replica set
修改/etc/mongod.conf
两台机器均修改 /etc/mongod.conf ,添加副本集信息
# vi /etc/mongod.conf
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
systemLog:
destination: file
path: /var/log/mongodb/mongod.log
logAppend: true
logRotate: reopen
storage:
##journal配置
journal:
enabled: true
##数据文件存储位置
dbPath: /var/lib/mongodb
##是否一个库一个文件夹
directoryPerDB: true
##数据引擎
engine: wiredTiger
##WT引擎配置
wiredTiger:
engineConfig:
##WT最大使用cache(根据服务器实际情况调节,4G的独享服务器,设置为2G)
cacheSizeGB: 2
##是否将索引也按数据库名单独存储
directoryForIndexes: true
##表压缩配置(数据量不是很大,使用snappy减少资源占用)
collectionConfig:
blockCompressor: snappy
##索引配置
indexConfig:
prefixCompression: true
##端口配置
net:
port: 27017
bindIp: 0.0.0.0
##复制集配置
replication:
##oplog大小
oplogSizeMB: 10240
##复制集名称
replSetName: pybrep
##安全认证
security:
authorization: enabled
keyFile: /var/lib/mongodb/mongoDB_keyfile
拷贝文件
192.168.0.100 /var/lib/mongodb/ 下的文件(mongod 停掉)全部拷贝到0 .101
# scp ./* pyb@192.168.56.101:/var/lib/mongodb/
启动mongod
两个节点依次启动mongodb
#service mongod start
初始化一个Replica Set
# mongo
use admin
db.auth("pyb", "rootroot" )
创建一个副本集配置对象:
cfg={"_id" : "pybrep","members" : [{"_id" : 0,"host" : "192.168.56.100:27017"}]}
使用用rs.initiate()进程初始化:
rs.initiate(cfg)
添加成员
使用rs.add()添加mongod到副本集当中:
pybrep:PRIMARY> rs.add("192.168.56.101:27017")
可以通过 rs.help() 查看更多信息
pybrep:PRIMARY> rs.help();
验证replica set
登录 PRIMARY 写入数据
root@debian1:~# mongo
pybrep:PRIMARY> use admin
pybrep:PRIMARY> db.auth("pyb","rootroot");
pybrep:PRIMARY> show dbs;
pybrep:PRIMARY> use pybdb
switched to db pybdb
pybrep:PRIMARY> db
pybdb
pybrep:PRIMARY> db.test1.insert({"name":"yiibai tutorials"});
WriteResult({ "nInserted" : 1 })
pybrep:PRIMARY> show dbs
admin 0.000GB
local 0.000GB
pybdb 0.000GB
登录 SECONDARY 查询数据
root@debian2:~# mongo
pybrep:SECONDARY> use admin
pybrep:SECONDARY> db.auth("pyb","rootroot");
pybrep:SECONDARY> show dbs
2017-08-09T13:11:10.077+0800 E QUERY [thread1] Error: listDatabases failed:{ "ok" : 0, "errmsg" : "not master and slaveOk=false", "code" : 13435 } :
提示 not master and slaveOk=false
在报错节点 192.168.0.101 执行 rs.slaveOk();
或者在mongodb 连接串里指定 readPreference=secondaryPreferred
参考:
http://www.blogdaren.com/post-2158.html
http://www.cnblogs.com/heiing/archive/2012/08/04/2622953.html