mongodb主从复制
2015-07-02 18:08
573 查看
一:主从复制
1: 首先看看模型图
![](http://pic002.cnblogs.com/images/2012/214741/2012030419362291.png)
2: 从上面的图形中我们可以分析出这种架构有如下的好处:
<1> 数据备份。
<2> 数据恢复。
<3> 读写分离。
3:下面我们就一一实践
实际应用中我们肯定是多服务器部署,限于自己懒的装虚拟机,就在一台机器上实践了。
第一步:我们把mongodb文件夹放在D盘和E盘,模拟放在多服务器上。
第二步:启动D盘上的mongodb,把该数据库指定为主数据库,其实命令很简单:>mongod --dbpath='D:\mongodb\db' --master,
端口还是默认的27017.
![](http://pic002.cnblogs.com/images/2012/214741/2012030419484115.png)
第三步:同样的方式启动E盘上的mongodb,指定该数据库为从属数据库,命令也很简单,当然我们要换一个端口,比如:8888。
source 表示主数据库的地址。
>mongod --dbpath=E:\mongodb\db --port=8888 --slave --source=127.0.0.1:27017
![](http://pic002.cnblogs.com/images/2012/214741/2012030419575325.png)
第四步:从图中的红色区域我们发现了一条:“applied 1 operations"这样的语句,并且发生的时间相隔10s,也就说明从属数据库每10s
就向主数据库同步数据,同步依据也就是寻找主数据库的”OpLog“日志,可以在图中红色区域内发现”sync_pullOpLog“字样。
接下来我们要做的就是测试,惊讶的发现数据已经同步更新,爽啊。
![](http://pic002.cnblogs.com/images/2012/214741/2012030420421064.png)
4: 如果我还想增加一台从属数据库,但是我不想在启动时就指定,而是后期指定,那么mongodb可否做的到呢?答案肯定是可以的。
我们的主或者从属数据库中都有一个叫做local的集合,主要是用于存放内部复制信息。
好,那么我们就试一下,我在F盘再拷贝一份mongodb的运行程序,cmd窗口好多啊,大家不要搞乱了。
![](http://pic002.cnblogs.com/images/2012/214741/2012030421001516.png)
看上面的log,提示没有主数据库,没关系,某一天我们良心发现,给他后期补贴一下,哈哈,再开一个cmd窗口,语句也就是
在sources中add一个host地址,最后发现数据也同步到127.0.0.1:5555这台从属数据库中....
1: 首先看看模型图
![](http://pic002.cnblogs.com/images/2012/214741/2012030419362291.png)
2: 从上面的图形中我们可以分析出这种架构有如下的好处:
<1> 数据备份。
<2> 数据恢复。
<3> 读写分离。
3:下面我们就一一实践
实际应用中我们肯定是多服务器部署,限于自己懒的装虚拟机,就在一台机器上实践了。
第一步:我们把mongodb文件夹放在D盘和E盘,模拟放在多服务器上。
第二步:启动D盘上的mongodb,把该数据库指定为主数据库,其实命令很简单:>mongod --dbpath='D:\mongodb\db' --master,
端口还是默认的27017.
![](http://pic002.cnblogs.com/images/2012/214741/2012030419484115.png)
第三步:同样的方式启动E盘上的mongodb,指定该数据库为从属数据库,命令也很简单,当然我们要换一个端口,比如:8888。
source 表示主数据库的地址。
>mongod --dbpath=E:\mongodb\db --port=8888 --slave --source=127.0.0.1:27017
![](http://pic002.cnblogs.com/images/2012/214741/2012030419575325.png)
第四步:从图中的红色区域我们发现了一条:“applied 1 operations"这样的语句,并且发生的时间相隔10s,也就说明从属数据库每10s
就向主数据库同步数据,同步依据也就是寻找主数据库的”OpLog“日志,可以在图中红色区域内发现”sync_pullOpLog“字样。
接下来我们要做的就是测试,惊讶的发现数据已经同步更新,爽啊。
![](http://pic002.cnblogs.com/images/2012/214741/2012030420421064.png)
4: 如果我还想增加一台从属数据库,但是我不想在启动时就指定,而是后期指定,那么mongodb可否做的到呢?答案肯定是可以的。
我们的主或者从属数据库中都有一个叫做local的集合,主要是用于存放内部复制信息。
好,那么我们就试一下,我在F盘再拷贝一份mongodb的运行程序,cmd窗口好多啊,大家不要搞乱了。
![](http://pic002.cnblogs.com/images/2012/214741/2012030421001516.png)
看上面的log,提示没有主数据库,没关系,某一天我们良心发现,给他后期补贴一下,哈哈,再开一个cmd窗口,语句也就是
在sources中add一个host地址,最后发现数据也同步到127.0.0.1:5555这台从属数据库中....
![](http://pic002.cnblogs.com/images/2012/214741/2012030421113076.png)
相关文章推荐
- MongoDB基本概念
- MongoDB集群
- MongoDB安装篇-Win7 X64
- MongoDB应用——GridFS存储文件
- mongodb常用命令
- Mac下安装 mongodb
- MongoDB应用——Capped集合
- MongoDB应用——查询
- mongodb 的备份恢复导入与导出
- MongoDB Windows环境安装及配置
- MongoDB副本集配置系列十一:MongoDB 数据同步原理和自动故障转移的原理
- MongoDB副本集配置系列十:MongoDB local库详解和数据同步原理
- C# MongoDB 操作
- MongoDB数据库的海量数据存储应用
- mongodb 分组查询
- mongodb 学习笔记 08 -- replication复制集
- MongoDB的文档增删改
- MongoDB副本集配置系列九:MongoDB 常见问题
- MongoDB windows下安装教程
- MongoDB 索引技巧 #1: 查找好友最新的动态