Mongodb 3.0.4复制集配置

https://repo.mongodb.org/yum/redhat/6/mongodb-org/3.0/x86_64/RPMS/
mongo3.0.4 配置复制集

1.软件安装
wget https://repo.mongodb.org/yum/redhat/6/mongodb-org/3.0/x86_64/RPMS/mongodb-org-server-3.0.4-1.el6.x86_64.rpm
wget https://repo.mongodb.org/yum/redhat/6/mongodb-org/3.0/x86_64/RPMS/mongodb-org-3.0.4-1.el6.x86_64.rpm
wget https://repo.mongodb.org/yum/redhat/6/mongodb-org/3.0/x86_64/RPMS/mongodb-org-mongos-3.0.4-1.el6.x86_64.rpm
wget https://repo.mongodb.org/yum/redhat/6/mongodb-org/3.0/x86_64/RPMS/mongodb-org-shell-3.0.4-1.el6.x86_64.rpm
wget https://repo.mongodb.org/yum/redhat/6/mongodb-org/3.0/x86_64/RPMS/mongodb-org-tools-3.0.4-1.el6.x86_64.rpm


2.环境配置
mkdir -p /opt/mongodb/data
mkdir -p /opt/mongodb/log
chown -R mongod:mongod /opt/mongodb
chmod 600 mykey 


所有节点的配置文件
vi  /etc/mongod.conf
storage:
    dbPath: "/opt/mongodb/data"
    journal:
        enabled: true
    directoryPerDB: true
    engine: "wiredTiger"
    wiredTiger:
        engineConfig:
            cacheSizeGB: 3


systemLog:
    logAppend: true
    destination: file
    path: "/opt/mongodb/log/mongodb.log"
processManagement:
    pidFilePath: "/opt/mongodb/log/mongo.pid"
    fork: true
net:
    port: 40001
    maxIncomingConnections: 5000


security:
    keyFile: "/opt/mongodb/mykey"
    authorization: "enabled"


replication:
    replSetName: "gewadb"
    oplogSizeMB: 8192
operationProfiling:
    slowOpThresholdMs: 200
    mode: "slowOp"


service mongod restart

2.创建账号
在主节点上创建,去掉security相关选项配置,去掉复制集选项配置,后面从节点可以自动同步账号
mongo --port 40001
use admin
db.createUser({user:"admin",pwd:"admin",roles: [{ role:"userAdminAnyDatabase", db:"admin" }]})
db.grantRolesToUser("admin",[{ role: "dbAdmin", db: "admin" },{role:"clusterAdmin",db:"admin"}])


3.初始化复制集
rsconf = {
           _id: "gewadb",
           members: [
                      { _id: 0,
                       host: "192.168.134.130:40001"
                      }
                    ]
         }


rs.initiate( rsconf )


增加节点
rs.add("192.168.134.131:40001")
rs.add("192.168.134.132:40001")
3.加入arbiter节点
rs.addArb("192.168.134.133:40001");

4.主从切换
rs.status()
rs.stepDown()

5.设置从库可查询
方法1:
db.getMongo().setSlaveOk()
方法2:
rs.setSlaveOk()

6.数据测试
use abc
db.createUser({
    user: "abc",
    pwd: "abc",
    roles: [{role: "dbOwner", db: "abc" }]
  }
);
db.auth('abc','abc')


use abc
db.auth('abc','abc')
db.elain.insert({name:'elain'});
db.elain.insert({name:'elain2'});
db.elain.find();


use ywhj
db.createUser({
    user: "sa",
    pwd: "sa",
    roles: [{role: "dbOwner", db: "ywhj" }]
  }
);
db.auth('sa','sa')


循环插入数据        
for (var i = 1; i <= 30; i++) db.things.save({id : i, name : 'aaa'});
db.things.count()
db.things.find()


数据删除
use abc
db.auth('abc','abc')
db.elain.find()
根据条件删除
db.elain.remove({name:'elain'});
删除表所有数据
db.elain.remove({});
db.elain.count();


数据整个表:drop
show tables;
db.elain.drop()


查看帮助
db.collection.help()


#删除数据库
show dbs;
use mm;
db.dropDatabase();


数据库创建后,先建账号,认证后,再建表

总结:
1:先关闭从节点、仲裁节点。或者先关闭仲裁节点,最后关闭从节点。则:主节点自动变为从节点
2:先关闭主节点,则从节点自动变为主节点,在仲裁节点关闭之前,新主节点不能关闭
初始化的时候主从节点受priority的影响
priority: 是优先级,默认为1,优先级0为被动节点,不能成为活跃节点。优先级不位0则按照有大到小选出活跃节点。

当关闭主节点,一个从节点会升级为主节点,再关闭该节点,第三个节点依然是从节点(不会变成主节点)

请使用浏览器的分享功能分享到微信等