MongoDB基础入门之一:基础入门和复制集
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MongoDB基础入门之一:基础入门和复制集,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2724字,纯文字阅读大概需要4分钟。
内容图文
![MongoDB基础入门之一:基础入门和复制集](/upload/InfoBanner/zyjiaocheng/521/6ca41f2d942a495ab753c8ed29c88541.jpg)
介绍
mongoDB是一个存储文档
的非关系型数据库
- mongoDB的结构:
- 数据库: 包含集合
- 集合: 存储文档
- 文档: json格式
一条命令在docker容器中运行mongoDB
docker run --name mymongo -v /mongo/data:/data/db -d mongo:4
docker ps #查看容器状态
docker logs mymongo #查看日志
mongoExpress 的使用
基于网络的mongoDB数据库管理页面
docker pull mongo-express
docker run --link mymongo:mongo -p 8081:8081 mongo-express
浏览器访问http://ip:8081 即可
mongo Shell客户端
是一个用来操作mongoDB的javascript客户端界面
运行mongo shell
docker exec -it mymongo mongo
> exit #退出mongoshell进程
mongoDB复制集
数据复制
带来的好处
- 高可用性
- 安全性
- 分流与分工
复制集
mongodb集群
-
不同节点有不同的分工
- 主节点: 处理写请求
- 副节点: 从主节点复制和更新数据,和主节点数据保持一致;处理读请求
-
复制集节点
- 每个节点都会想其他节点按照一定频率发送心跳请求
- 每隔2s发送一次,超过10s则请求超时
- 每个复制集节点最多有50个节点(因为心跳请求的数量是有限的,会影响机器的性能)
- 复制集选举
- 复制集节点上有term的计数器,每次选举会将term+1
- 如果主节点下线或者故障,剩余的副节点会因为心跳不通而开始选举
- 各节点优先级的不同会使其成为新主节点的可能性
- 候选节点会发起选举,先给自己投一票,然后更新计数器
- 对比数据和先主节点的数据同步程度,高的会优先选择
- 候选节点得票数超过一半,会优先被选举成新的主节点
复制集的候选节点发起选举,每个节点投票给比自己更同步的节点
得到超过半数选票的候选节点会当选为主节点
复制集中最多可以有7个投票节点
- 触发选举的事件
- 主节点和副节点之间的心跳超时
- 复制集初始化
- 新节点加入复制集
投票机
- 也是一个副节点
- 不会从主节点同步数据
- 不可能被选举为主节点
- 可以参与投票,但不能给自己投票
初始同步
- 主节点上的所有信息拷贝到副节点
同步写库记录
- 性能比较差,会出现block的情况
- local.oplog.rs(主副节点是同步的)
- 写库记录中的每条记录都可以被重复使用
- 多个线程分批次使用日志记录
- 写库日志的大小和文档的大小不一定成正比
复制集的搭建
- 使用docker的方式
### 前期准备
~]# docker network create mynetwork
~]# docker network ls
~]# docker run --net mynetwork --name mongo1 -v /mymongo/data1:/data/db -p 27017:27017 -d mongo:4 --replSet myset --port 27017
~]# docker run --net mynetwork --name mongo2 -v /mymongo/data2:/data/db -p 27018:27018 -d mongo:4 --replSet myset --port 27018
~]# docker run --net mynetwork --name mongo3 -v /mymongo/data3:/data/db -p 27019:27019 -d mongo:4 --replSet myset --port 27019
### 创建复制集
~]# docker exec -it mongo1 mongo
> rs.initiate(
{
_id: "myset",
members: [
{ _id: 0, host: "mongo1:27017" },
{ _id: 1, host: "mongo2:27018" },
{ _id: 2, host: "mongo3:27019" }
]
}
)
> rs.status()
MongoDB基础入门之一:基础入门和复制集
标签:自己 准备 节点 shel java mongodb集群 mongod 操作 非关系型数据库
本文系统来源:https://blog.51cto.com/13812615/2482347
内容总结
以上是互联网集市为您收集整理的MongoDB基础入门之一:基础入门和复制集全部内容,希望文章能够帮你解决MongoDB基础入门之一:基础入门和复制集所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。