标签:日志 存储 故障 images 第一个 clu EDA bpa conf
MongoDB复制集及管理复制集的优点如下:
1)、让数据更安全;
2)、高数据可用性;
3)、灾难恢复;
4)、无停机恢复(如备份、索引重建、故障转移);
5)、读缩放(额外的副本读取);
6)、副本集对应用程序是透明的;
复制集特点如下:
1)、N个节点的群集;
2)、任何节点可以做主节点;
3)、所有写入操作都在主节点上;
4)、自动故障转移;
5)、自动恢复;
mkdir -p /data/mongodb/mongodb{2,3,4} #创建数据目录
mkdir /data/logs
touch /data/logs/mongodb{2,3,4}.log #创建日志文件
cd /data/logs
chmod 777 *.log #赋予权限
vi /etc/mongod.conf
bindIp: 0.0.0.0 #监听地址
path: /data/mongodb/mongod.log #日志文件存储目录
dbPath: /data/mongodb/mongo #数据存储目录
port: 27017 #监听端口;每一个实例端口不一样
---省略内容---
replication:
replSetName: kgcrs #复制集的名称
cp mongod.conf mongod2.conf
cp mongod.conf mongod3.conf
cp mongod.conf mongod4.conf
mongod -f /etc/mongod.conf #启动所有实例
mongo --port 27017
mongod -f /etc/mongod2.conf
mongo --port 27018
mongod -f /etc/mongod3.conf
mongo --port 27019
mongod -f /etc/mongod4.conf
mongo --port 27020
mongo
cfg={"_id":"kgcrs","members":[{"_id":0,"host":"192.168.27.28:27017"},{"_id":1,"host":"192.168.27.128:27018"},{"_id":2,"host":"192.168.27.128:27019"}]} #定义cfg初始化参数
rs.initiate(cfg) #初始化启动复制集
mongo
rs.add("192.168.27.128:27020") #添加节点
rs.status() #查看状态
rs.remove("192.168.27.128:27020") #删除节点
re.status #查看状态,新添加的节点已被删除
4)、模拟故障自动切换与手动切换
mongo -f /etc/mongod.conf --shutdown #关闭复制集当前主节点
mongo --port 27018 #进入到第二个节点中
rs.ststus() #查看状态
mongod -f /etc/mongod.conf #开启第一个节点
kgcrs:PRIMARY> rs.freeze(30) #暂停30s不参与选举
mongo --port 27018
kgcrs:PRIMARY> rs.stepDown(60,30) #交出主节点位置,维持从节点状态不少于60秒,等待30秒使主节点和从节点日志同步
rs.ststus() #查看状态
节点类型分为标准(host)节点、被动(passive)节点和仲裁(arbiter)节点。
1)、只有标准节点可能被选举为活跃(primary)节点,有选举权。被动节点有完整副本,不可能成为活跃节点,有选举权。仲裁节点不复制数据,不可能成为活跃节点,只有选举权。
-3)、选举规则是票数高者获胜,priority是优先权为0~1000的值,相当于额外增加0~1000的票数。选举结果:票数高者获胜;若票数相同,数据新者获胜。
mongon
cfg={"_id":"kgcrs","members":[{"_id":0,"host":"192.168.27.128:27017","priority":100},{"_id":1,"host":"192.168.27.128:27018","priority":100},{"_id":2,"host":"192.168.27.128:27019","priority":0},{"_id":3,"host":"192.168.27.128:27020","arbiterOnly":true}]} #配置4个节点的复制集
rs.reconfig(cfg)
kgcrs:PRIMARY> rs.isMaster() #查看状态信息
kgcrs:PRIMARY> use kgc
kgcrs:PRIMARY> db.t1.insert({"id":1,"name":"tom"}) #插入数据
kgcrs:PRIMARY> db.t1.insert({"id":2,"name":"jerry"}) #插入数据
kgcrs:PRIMARY> db.t1.find() #查看集合中的数据
kgcrs:PRIMARY> db.t1.update({"id":2},{$set:{"name":"jack"}}) #更改
kgcrs:PRIMARY> db.t1.remove({"id":1}) #删除
kgcrs:PRIMARY> use local
kgcrs:PRIMARY> show collections #查看集合
显示
oplog.rs
kgcrs:PRIMARY> db.oplog.rs.find() #查看日志记录所有操作
#oplog会包含所有对数据有修改的操作;但查询操作不会记录。
-1)、如果主节点出现故障,另一个标准节点将会选举成新的主节点;
mongod -f /etc/mongod.conf --shutdown #关闭第一个节点服务器
mongo --port 27018 #此时会选举第二个标准节点为主节点
rs.status() #查看状态信息
mongod -f /etc/mongod2.conf --shutdown #关闭第二个节点服务器
mongo --port 27019 #此时被动节点不能成为主节点
rs.status() #查看状态信息
mongo --port 27018
rs.printReplicationInfo() #查看日志大小、时间范围
use admin
db.shutdownServer()
exit
vim /etc/mongod2.conf #注销replication:相关启动参数,并修改port端口号27028
net:
port: 27028
#replication:
#replSetName: kgcrs
mongod -f /etc/mongod2.conf #单实例模式启动
mongodump --port 27028 --db local --collection ‘oplog.rs‘ #全备当前节点的所有oplog记录
mongo --port 27028
use local
db.oplog.rs.drop() #删除原日志文件
db.runCommand( { create: "oplog.rs", capped: true, size: (2 1024 1024 * 1024) } ) #重建新的日志文件,并指定大小
use admin
db.shutdownServer() #关闭服务
exit
vim /etc/mongod2.conf
net:
port: 27018
replication:
replSetName: kgcrs
oplogSizeMB: 2048 #指定大小
mongod -f /etc/mongod2.conf #启动
mongo --port 27018 #进入第二个节点
rs.printReplicationInfo() #查看日志大小、时间范围
exit
mongo #进入主节点
rs.stepDown() #有效产生选举;让出主节点,第二个会变成主节点
use admin #在主节点中创建一个用户
db.createUser({"user":"root","pwd":"123","roles":["root"]})
exit
vim /etc/mongod.conf #编辑配置文件;4个都需添加如下内容
security:
keyFile: /usr/bin/kgcrskey1 #秘钥文件位置
clusterAuthMode: keyFile #验证模式为秘钥验证模式
cd /usr/bin/ #写入四个实例的秘钥文件(内容需一样)
echo "kgcrs key"> kgcrskey1
echo "kgcrs key"> kgcrskey2
echo "kgcrs key"> kgcrskey3
echo "kgcrs key"> kgcrskey4
chmod 600 kgcrskey{1..4}
#四个实例依次进行重启,并进入主节点进行验证;
show dbs #无法查看数据库
rs.status() #无法查看复制集
use admin #身份登录验证
db.auth("root","123")
rs.status() #可以查看数据库
show dbs #可以查看复制集
标签:日志 存储 故障 images 第一个 clu EDA bpa conf
原文地址:http://blog.51cto.com/13659182/2147542