mongodb复制-副本集
2016-01-14 11:25
281 查看
复制简介
配置一个单节点的mongo服务器适用与学习和测试环境,在线上真正的生产环境中我们需要使用复制将数据副本保存在多台服务器上,一台或者多台服务器挂掉之后可以顺利得通过选举算法选举出新的主节点。
这样的多台服务器组成了mongo的副本集,副本集中有一个主节点和多个从节点,主节点用于读和写,从节点用于读(需要设置slaveOk为true,并且是在客户端设置),当主节点挂掉之后或者出现一些问题(如网络不通等情况),会通过选举算法选择出新的主节点。从节点的数据总是和主节点的数据保持一致,但是会稍稍晚于主节点的数据(有时候延迟时间较大,看集群情况)。
配置副本集
本文将使用3台服务器作为一个副本集,下面讲述如何配置副本集
下载最新的mongodb-linux-x86_64-ubuntu1204-3.2.0.tgz,去官网下载即可
解压之后
cd bin
新建一个文件mongod.conf,写入以下内容
dbpath=/home/xxx/xxx/mongodb/db # 指定mongo的db存放位置,默认是/data/db
logpath=/home/xxx/xxx/xxx/mongodb/log.log # 指定mongo的输出日志文件
logappend=true # 日志文件采用append的方式追加到logpath中(重启mongo同样是追加)
port=27017 # mongo使用的端口
fork=true # 以后台运行的方式启动,该项为true就必须配置logpath
复制
将该mongo目录scp到其他两台机器上
启动
cd bin
./mongod --replSet mondeo -f mongod.conf # replSet指定以副本集方式启动,mondeo就是这个副本集的名字,启动项配置在mongod.conf中
以上命令需要在3台服务器上都执行
配置副本集
打开其中一个节点的mongo
./mongo
config = {
"_id": "mondeo",
"members": [
{"_id": 0, "host": "xxx01:27017"},
{"_id": 1, "host": "xxx02:27017"},
{"_id": 2, "host": "xxx03:27017"},
]
}
其中_id就是刚刚的副本集名称
db = (new Mongo("xxx01:27017")).getDB("test")
rs.initiate(config)
过一段时间打开3台节点的mongo,会发现其中一个是primary节点,其他2个都是secondary节点,至此mongo副本集配置完毕。
关闭
进行mongo,use admin 然后db.shutdownServer() # 3台节点都需要
其他相关的理论本文不涉及,包括但不仅限于:仲裁者、副本集动态添加和删除、如何备份和同步、节点选举机制、rollback等
配置一个单节点的mongo服务器适用与学习和测试环境,在线上真正的生产环境中我们需要使用复制将数据副本保存在多台服务器上,一台或者多台服务器挂掉之后可以顺利得通过选举算法选举出新的主节点。
这样的多台服务器组成了mongo的副本集,副本集中有一个主节点和多个从节点,主节点用于读和写,从节点用于读(需要设置slaveOk为true,并且是在客户端设置),当主节点挂掉之后或者出现一些问题(如网络不通等情况),会通过选举算法选择出新的主节点。从节点的数据总是和主节点的数据保持一致,但是会稍稍晚于主节点的数据(有时候延迟时间较大,看集群情况)。
配置副本集
本文将使用3台服务器作为一个副本集,下面讲述如何配置副本集
下载最新的mongodb-linux-x86_64-ubuntu1204-3.2.0.tgz,去官网下载即可
解压之后
cd bin
新建一个文件mongod.conf,写入以下内容
dbpath=/home/xxx/xxx/mongodb/db # 指定mongo的db存放位置,默认是/data/db
logpath=/home/xxx/xxx/xxx/mongodb/log.log # 指定mongo的输出日志文件
logappend=true # 日志文件采用append的方式追加到logpath中(重启mongo同样是追加)
port=27017 # mongo使用的端口
fork=true # 以后台运行的方式启动,该项为true就必须配置logpath
复制
将该mongo目录scp到其他两台机器上
启动
cd bin
./mongod --replSet mondeo -f mongod.conf # replSet指定以副本集方式启动,mondeo就是这个副本集的名字,启动项配置在mongod.conf中
以上命令需要在3台服务器上都执行
配置副本集
打开其中一个节点的mongo
./mongo
config = {
"_id": "mondeo",
"members": [
{"_id": 0, "host": "xxx01:27017"},
{"_id": 1, "host": "xxx02:27017"},
{"_id": 2, "host": "xxx03:27017"},
]
}
其中_id就是刚刚的副本集名称
db = (new Mongo("xxx01:27017")).getDB("test")
rs.initiate(config)
过一段时间打开3台节点的mongo,会发现其中一个是primary节点,其他2个都是secondary节点,至此mongo副本集配置完毕。
关闭
进行mongo,use admin 然后db.shutdownServer() # 3台节点都需要
其他相关的理论本文不涉及,包括但不仅限于:仲裁者、副本集动态添加和删除、如何备份和同步、节点选举机制、rollback等
相关文章推荐
- MongoDB 的基本操作
- MongoDB 创建新用户并授权
- MongoDB 的部署方式
- Mongodb 笔记07 分片、配置分片、选择片键、分片管理
- 信息安全聚合 Sec-News 的重构之路
- mongoDB单元测试
- symfony2中mysql和mongodb的增删改查总结
- MongoDB3.2 集群搭建
- 解决 MongoDB 的 cursor id is not valid at server 问题
- 解决 MongoDB 的 cursor id is not valid at server 问题
- C#开发接口——MongoDB(对用户操作)
- 使用YCSB测试MongoDB的微分片性能
- C#开发接口——MongoDB(对库操作)
- mongodb的简单使用三(结合springdata 使用遇到的坑)
- MongoDB入门
- MongoDB 导入数据(CSV文件)
- MongoDB的安装与设置MongoDB服务
- C#开发接口——MongoDB
- 使用YCSB测试Mongodb性能的方法简介
- 学习mongo系列(十)MongoDB 备份(mongodump)与恢复(mongorerstore) 监控(mongostat mongotop)