mongodb学习之:主从复制
在sql server能够做到读写分离,双机热备份和集群部署,这些在mongodb也能做到。首先来看主从复制。我们就在一台电脑上进行操作
第一步:分别建立master和slave两个文件夹
第二步:开启主服务器:
mongod --dbpath /home/zhf/master --port 27017 --master
第三步:启动从服务器。这里制定一个从服务器的端口1001,在--source后面设置的是主服务器的地址和端口。注意这个端口要和开启主服务器上的一致。
mongod --dbpath /home/zhf/slave --port 1001 --slave --source 127.0.0.1:27017
在slave上开启成功后后可以看到slave服务器上不断的有同步的操作,从时间上来看, 每秒就同步一次。
登录主服务器插入一个文档。
root@zhf-maple:/home/zhf/桌面# mongo --host 127.0.0.1 --port 27017
MongoDB shell version v3.4.7
connecting to: mongodb://127.0.0.1:27017/
MongoDB server version: 3.4.7> show dbs;
admin 0.000GB
local 0.000GB
> db.test.insert({'name':'zhanghongfeng'})
WriteResult({ "nInserted" : 1 })
> show dbs
admin 0.000GB
local 0.000GB
test 0.000GB
然后登录从服务器:
root@zhf-maple:/home/zhf/桌面# mongo --host 127.0.0.1 --port 1001
MongoDB shell version v3.4.7
connecting to: mongodb://127.0.0.1:1001/
MongoDB server version: 3.4.7
> show dbs
2018-01-08T21:34:46.525+0800 E QUERY [thread1] Error: listDatabases failed:{
"ok" : 0,
"errmsg" : "not master and slaveOk=false",
"code" : 13435,
"codeName" : "NotMasterNoSlaveOk"
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
Mongo.prototype.getDBs@src/mongo/shell/mongo.js:62:1
shellHelper.show@src/mongo/shell/utils.js:769:19
shellHelper@src/mongo/shell/utils.js:659:15
@(shellhelp2):1:1
但是在执行show dbs报了上面的错误。解决办法是执行下rs.slaveOk()就可以了
> show dbs
admin 0.000GB
local 0.000GB
test 0.000GB
rs.slaveOk()是什么意思呢。下面是官网的描述。也就是允许去读slave服务器上的数据
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.
此时在从服务器上执行查找可以看到在主服务器上插入的文档。
> db.test.find()
{ "_id" : ObjectId("5a53729bd46947e70206ba40"), "name" : "zhanghongfeng" }
主从复制还有些选项:
--only: 在从节点上指定只复制特定某个数据库,默认是复制所有数据库
--slavedelay:用在从节点上,当应用主节点的操作时增加延时,单位是秒。这样的好处是通过延缓执行操作,在用户有误操作的时候,有个恢复的时间差
--fastsync:以主节点的数据快照为基础启动从节点。
--autoresync: 如果主节点与从节点不同步了,则自动重新同步
--oplogSize: 主节点oplog的大小。单位是MB。
那么如果还想增加一台从服务器但是又不想在启动的时候就指定,而是后期指定该如何操作呢。
在主从服务器中有一个local的数据库,在里面添加从服务器就可以了.操作步骤如下:
>mongo 127.0.0.1:1002
>use local
>db.sources.insert({“host”:”127.0.0.1:27017”})
操作完成后就可以发现数据也同步到了127.0.0.1:1002这个服务器上
最新文章
- ORA-10635: Invalid segment or tablespace type
- s​v​n​的​基​线​划​分​与​管​理
- 一些XMLHttpRequest的例子代码
- HTML 学习笔记 CSS(选择器3)
- 【转】浅析Sql Server参数化查询
- C++开发的数据库连接查询修改小工具
- ASP.NET MVC5--Contains
- 3D动画
- 11、NFC技术:NDEF Uri格式解析
- vmware 网络连接
- 5.04 toArray()有一个问题须要解决一下
- linux把程序做成系统服务并自启动
- jQuery截取字符串的几种方法
- git在不同平台windows、linux、mac 上换行符的问题
- [leetcode]Unique Binary Search Trees @ Python
- android中Snackbar(Design Support)的使用
- VSCode集成TypeScript编译
- IDEA 配置环境和相关工具整理(新手入门)
- Android中对文件的读写进行操作
- 获取分组后统计数量最多的纪录;limit用法;sql执行顺序
热门文章
- 牛客网 Wannafly挑战赛11 A.白兔的分身术
- Database | SQL
- Java获取指定时间(转)
- Jenkins构建完成后通过SVN Publisher Plugin上传文件到指定的SVN(教程收集)
- list all of the Oracle 12c hidden undocumented parameters
- 深刻理解JavaScript---闭包
- DELPHI 10.2(TOKYO) FOR LINUX的兼容性说明
- 使用viewPage实现图片轮播
- TCP通过滑动窗口和拥塞窗口实现限流,能抵御ddos攻击吗
- java性能监控工具jmc-windows