如何给macvimmac vim 设置字体树状目录

MongoDB:mongodb的主从复制(二)副本集-学网-中国IT综合门户网站-提供健康,养生,留学,移民,创业,汽车等信息
MongoDB:mongodb的主从复制(二)副本集
来源:互联网 更新时间: 12:31:32 责任编辑:鲁晓倩字体:
我这期接着上期的说副本集,副本集主要特点体现在两个方面:
1、副本集没有特定的主数据库
2、如果出现了宕机等故障,集群就会推选出来一个数据库作为主数据库,这就具备了自动故障恢复功能。
下面我们实际来操作下:
我们在文件夹中复制出mongodb mongodb2 mongodb3 来分别作为我们即将操作的 主数据库、从数据库和仲裁数据库。
一、我们为我们即将操作的集群起个名字,就叫我的博客英文名:jessonlv.--replSet表示让服务器知道jessonlv下还有其他数据库, 这里就把F盘里面的mongodb程序打开,端口为2222。指定端口为3333是jessonlv集群下的另一个数据库服务器
mongod --dbpath=F:\mongodb\db --port 2222 --replSet jessonlv/127.0.0.1:3333
二、启动端口为3333的mongodb。
mongod --dbpath=F:\mongodb2\db --port 3333 --replSet jessonlv/127.0.0.1:2222
和上面是一样的,就不贴图了。
三、第三步要做的就是初始化副本集,计入到admin集合看代码:
mongo 127.0.0.1:2222/admin
db.runCommand({&replSetInitiate&:{
&_id&:&jessonlv&,
&members&:[
&host&:&127.0.0.1:2222&
&host&:&127.0.0.1:3333&
如上图所示显示ok ,副本集已经初始化好了,那么我们来查看一下,谁说主服务器,谁说从服务器
这俩单词啥意思大家都懂吧.... 至此,主从服务已经好了,我们来搞下仲裁服务器。说明:仲裁服务器只参与投票。
指定仲裁服务器:
mongod --dbpath=F:\mongodb3\db --port 4444 --replSet jessonlv/127.0.0.1:2222
然后我进入到2222端口的admin集合,使用rs.addArb()追加。
在admin集合中使用rs.addArb()追加
mongo 127.0.0.1:2222/admin
rs.addArb(&127.0.0.1:4444&)
追加完之后,我们运行rs.status()
如上图,清楚的现实出谁是主从和仲裁数据库。
相关文章:
上一篇文章:下一篇文章:
最新添加资讯
24小时热门资讯
Copyright © 2004- All Rights Reserved. 学网 版权所有
京ICP备号-1 京公网安备02号mongodb运维之副本集实践 - CNode技术社区
积分: 18015
狼叔说:少抱怨,多思考,未来更美好
忽然发现芋头好鸡贼
正式环境,4台机器+一台定时任务的机器。
服务器是阿里云的ECS,
负载均衡用的是阿里云的SLB,
mysql用阿里云的RDS,
缓存用阿里云的OCS,
运维基本上是都不需要担心了,
现在的云服务已经非常完善了,
其实我们用阿里云的服务非常多,
大概有20多个类型的服务,
感谢阿里云。
而我的技术栈是nodejs + mongodb,而阿里云有k-v兼容redis协议的nosql,无mongodb,所以就要悲剧的自己运维mongodb了。
阿里的ots是非结构化存储,没有nodejs的sdk,就算有,不兼容mongodb,也没啥可玩的。
MongoDB存储服务的云平台(MongoHQ, MongoLabs 和 Mongo Machine)
国内的貌似只有
芋头推荐用pg,支持json格式存储
还有就是parse和leancloud这类面向api的。
京东和腾讯都有过,后来关闭了,不知何故
mongodb部署最佳实践
常识: replset + shard
replset是副本集,shard是分片
mongoDB的主从模式其实就是一个单副本的应用,没有很好的扩展性和容错性。而副本集具有多个副本保证了容错性,就算一个副本挂掉了还有很多副本存在,并且解决了上面第一个问题“主节点挂掉了,整个集群内会自动切换”。
比如游戏,开了某一个服,那么所有的数据都在一台服务器上,此时它要保证的是服务不挂就可以,不用考虑更多的并发上的压力,那么它首先是副本集。
如果有节点挂了,它会重新选举新的主节点
而更多的情况是,你要考虑并发,而且可能是千万,亿万并发,副本集是搞不定的。
于是shard就登场了。
分片并不是mongo独有的概念,很多数据库都有,mongodb里的分片是指通过mongos来当网关路由,分发请求到每个shard,然后每个shard会对应各自的副本集。
既然是分发请求,就会有一定的性能损耗,但好处是你能处理更多请求。所以按照场景选择
性能最佳,当然是一个副本集,如果能满足需求,优先
如果副本集不足及支撑并发,那么就选shard
准备3台阿里云主机
10.51.83.118
10.51.77.129
10.44.204.241
先各自ping一下,保证网络通畅。
确定我的目标是1主,2从,奇数个
这篇文字讲了Bully算法以及为啥是奇数个
服务器节点之前时间要同步
开启防火墙的一定要允许通过
开启selinux的也要进行设置
建立双击互信模式最好不过
格式化阿里云的新增硬盘
然后挂载到/data目录下
~/config/r0.config
port=27000
logpath=/data/replset/log/r0.log
dbpath=/data/replset/r0
logappend=true
replSet=rs
#keyFile=/data/replset/key/r0
~/config/r1.config
port=27001
logpath=/data/replset/log/r1.log
dbpath=/data/replset/r1
logappend=true
replSet=rs
#keyFile=/data/replset/key/r1
~/config/r2.config
port=27002
logpath=/data/replset/log/r2.log
dbpath=/data/replset/r2
logappend=true
replSet=rs
#keyFile=/data/replset/key/r2
确保目录为空,杀死所有mongod进程
rm -rf /data/replset/
ps -ef|grep mongod | awk '{print $2}' | xargs kill -9
ps -ef|grep mongod
mkdir -p /data/replset/r0
mkdir -p /data/replset/r1
mkdir -p /data/replset/r2
mkdir -p /data/replset/key
mkdir -p /data/replset/log
准备key文件
echo &replset1 key& & /data/replset/key/r0
echo &replset1 key& & /data/replset/key/r1
echo &replset1 key& & /data/replset/key/r2
chmod 600 /data/replset/key/r*
注意第一次不能用keyFile
mongod -f ~/config/r0.config &
mongod -f ~/config/r1.config &
mongod -f ~/config/r2.config &
配置文件里是fork=true,所以启动需要点时间
& rs.initiate()
&info2& : &no configuration explicitly specified -- making one&,
&me& : &iZ25xk7uei1Z:27001&,
擦,超级慢。。。。
使用下面语句初始化
mongo --port 27000
rs.initiate({ _id:'rs',members:[{ _id:0, host:'10.51.77.129:27000' }]})
这个其实也很慢。。。。
待完成后,继续增加其他2个节点(一定要注意,在rs:PRIMARY即主节点上才能增加rs:SECONDARY和ARBITER。如果之前连的是其他端口,需要切换的。)
rs.add(&10.51.77.129:27001&)
rs.addArb(&10.51.77.129:27002&)
rs.status();
如果想移除某一个节点
rs.remove(&10.51.77.129:27001&)
rs.remove(&10.51.77.129:27000&)
rs.remove(&10.51.77.129:27002&)
如果想删除,重置用rs.reconfig(),这样做不一定会成功,有的时候无法切换到主节点,所以需要,删除/data/replset目录,然后重启所有mongo的进程。
rs.reconfig({ _id:'rs',members:[{ _id:1, host:'10.51.77.129:27000' }]})
rs.add(&10.51.77.129:27000&)
rs.addArb(&10.51.77.129:27002&)
rs:PRIMARY& use local
switched to db local
rs:PRIMARY& show collections
startup_log
system.indexes
system.replset
rs:PRIMARY&
rs:PRIMARY&
rs:PRIMARY& db.oplog.rs.find()
{ &ts& : Timestamp(, 1), &h& : NumberLong(0), &v& : 2, &op& : &n&, &ns& : &&, &o& : { &msg& : &initiating set& } }
{ &ts& : Timestamp(, 1), &h& : NumberLong(0), &v& : 2, &op& : &n&, &ns& : &&, &o& : { &msg& : &Reconfig set&, &version& : 2 } }
{ &ts& : Timestamp(, 1), &h& : NumberLong(0), &v& : 2, &op& : &n&, &ns& : &&, &o& : { &msg& : &Reconfig set&, &version& : 3 } }
在SECONDARY节点无法show dbs
主从启动之后,连接slave可以成功连上,但是在slave中执行 show dbs 的时候就报错了:
Error: listDatabases failed:{ &note& : &from execCommand&, &ok& : 0, &errmsg& : &not master& }
解决方法:
在报错的slave机器上执行 rs.slaveOk()方法即可。
解释一下具体slaveOk方法是什么意思?
Provides a shorthand for the following operation:
db.getMongo().setSlaveOk()
This allows the current connection to allow read operations to run on secondary members. See the readPref() method for more fine-grained control over read preference in the mongo shell.
查看内存情况最常用的是free命令:
[deploy@iZ25xk7uei1Z config]$ free -m
-/+ buffers/cache:
所有连接消耗的内存加起来会相当惊人,推荐把Stack设置小一点,比如说1024:
ulimit -s 1024
通过调整内核参数drop_caches也可以释放缓存:
sysctl vm.drop_caches=1
有时候,出于某些原因,你可能想释放掉MongoDB占用的内存,不过前面说了,内存管理工作是由虚拟内存管理器控制的,幸好可以使用MongoDB内置的closeAllDatabases命令达到目的:
mongo& use admin
mongo& db.runCommand({closeAllDatabases:1})
平时可以通过mongo命令行来监控MongoDB的内存使用情况,如下所示:
mongo& db.serverStatus().mem:
&resident& : 22346,
&virtual& : 1938524,
&mapped& : 962283
还可以通过mongostat命令来监控MongoDB的内存使用情况,如下所示:
shell& mongostat
mapped vsize res faults
其中内存相关字段的含义是:
mapped:映射到内存的数据大小
visze:占用的虚拟内存大小
res:占用的物理内存大小
注:如果操作不能在内存中完成,结果faults列的数值不会是0,视大小可能有性能问题。
在上面的结果中,vsize是mapped的两倍,而mapped等于数据文件的大小,所以说vsize是数据文件的两倍,之所以会这样,是因为本例中,MongoDB开启了journal,需要在内存里多映射一次数据文件,如果关闭journal,则vsize和mapped大致相当。
更好的做法是使用docker,一劳永逸
手把手教你用Docker部署一个MongoDB集群
欢迎关注我的公众号【node全栈】
这个ppt也不错
文章不错,建议mongodb配置使用YAML语言,目前3.X的mongodb支持的。
O(∩_∩)O谢谢指点
mongodb management service,mms.mongo官方的一键部署平台
好东西,收藏
这是我做复制集时的错误,请问下,这是什么问题?
ps:上面那就是rsconf
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
服务器赞助商为
,存储赞助商为
,由提供应用性能服务。
新手搭建 Node.js 服务器,推荐使用无需备案的mongoDB的两个特性:主从复制、副本集
一、主从复制
1.主从复制是一个简单的同步备份的集群技术.
1.1在数据库集群中要明确的知道谁是主服务器,主服务器只有一台.
1.2从服务器要知道自己的数据源也就是对于的主服务是谁.
1.3--master用来确定主服务器,--slave 和 –source 来控制从服务器
1.主从复制集群案例
2.主从复制的其他设置项
--only 从节点-&指定复制某个数据库,默认是复制全部数据库
--slavedelay
从节点-&设置主数据库同步数据的延迟(单位是秒)
--fastsync 从节点-&以主数据库的节点快照为节点启动从数据库
--autoresync 从节点-&如果不同步则从新同步数据库
--oplogSize
主节点-&设置oplog的大小(主节点操作记录存储到local的oplog中)
3.利用shell动态添加和删除从节点
不难看出从节点中关于主节点的信息全部存到local的sources的集合中
我们只要对集合进行操作就可以动态操作主从关系
挂接主节点:操作之前只留下从数据库服务
db.sources.insert({“host”:”127.0.0.1:8888”})
删除已经挂接的主节点:操作之前只留下从数据库服务
db.sources.remove({“host”:”127.0.0.1:8888”})
二、副本集概念
1.1第一张图表明A是活跃的B和C是用于备份的
1.2第二张图当A出现了故障,这时候集群根据权重算法推选出B为活跃的数据库
1.3第三张图当A恢复后他自动又会变为备份数据库
2.初始化副本集
db.runCommand({&replSetInitiate&:
&_id&:'child',
&members&:[{
&host&:&127.0.0.1:1111&
&host&:&127.0.0.1:2222&
&host&:&127.0.0.1:3333&
2.查看副本集状态
rs.status()
3.节点和初始化高级参数
standard 常规节点:参与投票有可能成为活跃节点
passive 副本节点:参与投票,但是不能成为活跃节点
arbiter 仲裁节点:只是参与投票不复制节点也不能成为活跃节点
4.高级参数
Priority 0到1000之间 ,0代表是副本节点 ,1到1000是常规节点
arbiterOnly : true 仲裁节点
members&:[{
&host&:&127.0.0.1:1111“,
arbiterOnly : true
5.优先级相同时候仲裁组建的规则
对于优先级相同的时候会根据时间,比如:A是活跃节点,B、C为副本集的时候,
当A宕机的时候,mongo会选择B、C中更新时间最近的为活跃节点。
6.读写分离操作à扩展读
6.1一般情况下作为副本的节点是不能进行数据库读操作的
但是在读取密集型的中读写分离是十分必要的
6.2设置读写分离
slaveOkay :
很遗憾他在shell中无法掩饰,这个特性是被写到mongoDB的
驱动程序中的,在java和node等其他语言中可以完成
他是被存储在本地数据库local中的,他的每一个文档保证这一个节点操作
如果想故障恢复可以更彻底oplog可已经尽量设置大一些用来保存更多的操作
改变oplog大小
主库 --master --oplogSizemongoDB的两个特点:主从复制、副本集 - 数据库当前位置:& &&&mongoDB的两个特点:主从复制、副本集mongoDB的两个特点:主从复制、副本集&&网友分享于:&&浏览:14次mongoDB的两个特性:主从复制、副本集
一、主从复制
<span style="font-family:Courier N font-size:14 color:#.主从复制是一个简单的数据库同步备份的集群技术.
<span style="font-family:Courier N font-size:14 color:#.1在数据库集群中要明确的知道谁是主服务器,主服务器只有一台.
<span style="font-family:Courier N font-size:14 color:#.2从服务器要知道自己的数据源也就是对于的主服务是谁.
<span style="font-family:Courier N font-size:14 color:#.3--master用来确定主服务器,--slave 和 –source 来控制从服务器
<span style="font-family:Courier N font-size:14 color:#.主从复制集群案例
<span style="font-family:Courier N font-size:14 color:#.主从复制的其他设置项
--only&从节点-&指定复制某个数据库,默认是复制全部数据库
--slavedelay& 从节点-&设置主数据库同步数据的延迟(单位是秒)
--fastsync 从节点-&以主数据库的节点快照为节点启动从数据库
--autoresync 从节点-&如果不同步则从新同步数据库
--oplogSize& 主节点-&设置oplog的大小(主节点操作记录存储到local的oplog中)
<span style="color:#.利用shell动态添加和删除从节点
不难看出从节点中关于主节点的信息全部存到local的sources的集合中
&&&我们只要对集合进行操作就可以动态操作主从关系
&&&挂接主节点:操作之前只留下从数据库服务
&&&db.sources.insert({“host”:”127.0.0.1:8888”})
&&&删除已经挂接的主节点:操作之前只留下从数据库服务
&&&db.sources.remove({“host”:”127.0.0.1:8888”})
二、副本集概念
<span style="color:#.1第一张图表明A是活跃的B和C是用于备份的
<span style="color:#.2第二张图当A出现了故障,这时候集群根据权重算法推选出B为活跃的数据库
<span style="color:#.3第三张图当A恢复后他自动又会变为备份数据库
<span style="font-family:Courier N font-size:14 color:#.初始化副本集
db.runCommand({&replSetInitiate&:
&&&&&&_id&:'child',
&&&&&&&members&:[{
& &&&&&&& &_id&:1,
& &host&:&127.0.0.1:1111&
& &_id&:2,
& &host&:&127.0.0.1:2222&
& &_id&:3,
& &host&:&127.0.0.1:3333&
<span style="font-family:Courier N font-size:14 color:#.查看副本集状态
rs.status()
<span style="font-family:Courier N font-size:14 color:#.节点和初始化高级参数
&&&& standard 常规节点:参与投票有可能成为活跃节点
&&&&passive 副本节点:参与投票,但是不能成为活跃节点
&&&&arbiter 仲裁节点:只是参与投票不复制节点也不能成为活跃节点
<span style="font-family:Courier N font-size:14 color:#.高级参数
Priority&0到1000之间 ,0代表是副本节点 ,1到1000是常规节点
arbiterOnly : true 仲裁节点
members&:[{
&host&:&127.0.0.1:1111“,
arbiterOnly : true
<span style="font-family:Courier N font-size:14 color:#.优先级相同时候仲裁组建的规则
对于优先级相同的时候会根据时间,比如:A是活跃节点,B、C为副本集的时候,
当A宕机的时候,mongo会选择B、C中更新时间最近的为活跃节点。
<span style="font-family:Courier N font-size:14 color:#.读写分离操作à扩展读
&&& 6.1一般情况下作为副本的节点是不能进行数据库读操作的
&&&&&&&&&但是在读取密集型的系统中读写分离是十分必要的
&&&6.2设置读写分离
&&&&&&&&&slaveOkay :& true
&&&&&&&&&很遗憾他在shell中无法掩饰,这个特性是被写到mongoDB的
&&&&&&&&& 驱动程序中的,在java和node等其他语言中可以完成
<span style="font-family:Courier N font-size:14 color:#.Oplog
&&&& 他是被存储在本地数据库local中的,他的每一个文档保证这一个节点操作
&&&&如果想故障恢复可以更彻底oplog可已经尽量设置大一些用来保存更多的操作
&&&&改变oplog大小
&&&& 主库 --master --oplogSize& size
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有}

我要回帖

更多关于 mac vim 设置字体 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信