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则按照有大到小选出活跃节点。
当关闭主节点,一个从节点会升级为主节点,再关闭该节点,第三个节点依然是从节点(不会变成主节点)