MongoDB Replica Set使用经验分享理论篇
MongoDB Replica Set是MongoDB官方推荐的主从复制和高可用方案,用于替代原有的Master-Slave主从复制方案。Replicat Set具有自动
MongoDB Replica Set是MongoDB官方推荐的主从复制和高可用方案,用于替代原有的Master-Slave主从复制方案。Replicat Set具有自动切换功能,当Primary挂掉之后,可以自动由Replica Set中的某一个Secondary来切换到Primary,以实现高可用的目的,不像MySQL那样需要使用第三方软件。
目前很多游戏公司都开始使用MongoDB作为数据库,我们公司线上使用的版本是2.4.6.
一 MongoDB Replica Set的原理
复制主要用于备份、灾难恢复和读写分离。一个Replica Set就是一组mongod实例。Replica Set中的Primary接收所有的写操作,Secondaries从Primary复制操作然后应用到自己的data set。
一个Replica Set中的成员角色有三种:Primary,Secondary和Arbiter。
Primary 接收来自客户端的所有的写操作,一个Replica Set中有且只有一个Primary。Primary如果宕掉,Replica Set会自动选举一个Secondary成为Primary。Primary将它data sets的所有操作都记录到oplog中。
Secondary Secondary从Primary复制oplog,然后将oplog中的操作应用到自己的data sets。Secondary和Primary之间是异步复制,也就是Secondary中的数据可能不是最新的。默认情况下,Secondary不可读不可写,但是可以通过设置运行客户端从Secondary读。
Arbiter Arbiter不需要维护自己的data sets,,只是当Primary挂掉之后参与投票选择哪个Secondary可以升级为Primary。当Replica Set中的成员个数为偶数个时,就需要添加一个Arbiter用于投票选举哪个可以升级为Primary。Arbiter对硬件的要求很低。不能在Primary或者Secondary主机上运行Arbiter。
一个Replica Set可以最多拥有12个成员,但是只有7个成员可以同时参与投票选举成为Primary,如果成员数量超过12,就需要使用Master-Slave主从复制方式。
部署一个Replica Set至少需要三个成员,一个Arbiter,一个Secondary和一个Primary或者一个Primary,两个Secondary。
可以将Secondary配置为以下几种特殊用途:
A.在选举中阻止其成为Primary,只用作备份数据。通过设置优先级priority为0来实现。
B.阻止应用程序从它读,通过设置优先级priority为0和设置hidden为true来实现。
一个隐藏的成员同样复制Primary的数据,但是对于客户端应用程序来讲,它不可见。
C.保留历史镜像数据用于数据回档,比如如果误删除数据,可以使用Delayed Replica Set成员中的数据恢复。
Delayed members即延时成员会延时从Primary复制oplog
二 MongoDB Replica Set部署架构
Replica Set Elections 复制集选举
Replica Set通过投票选举的方式来决定哪个成员可以升级为Primary。初始化一个Replica Set后就会产生选举出现,或者任何时候当Primary不可用时也会有选举出现。需要注意的是,投票选举Primary会花费一定的时间来完成,在这段时间内,整个Replica Set无法进行写操作,所以尽量避免重新投票选举的情况出现。
影响选举的因素和条件有:
Heartbeats 心跳检测
Replica Set中成员每2秒向其他成员发送心跳,如果在10秒内无回应,这个成员就被其他成员标记为不可用。
Priortiy Comparisons 对比优先级
设定成员的优先级priority会影响投票选举,优先级越高,越容易被选举成为Primary。如果优先级设置为0,那么这个成员不会永远不会被选举成为Primary,它也不需要其他成员为它投票。
Optime
Optime是Replica Set的成员上一次从oplog中将操作应用到data sets的时间戳。一个成员不会成为Primary,除非它比其他可见的成员拥有最新的时间戳。
Connections
一个Replica Set中的成员如果想要成为Primary,它必须能够连接这个Replica Set中具有投票权利的大部分成员。
Network Partitions
为了避免当Primary宕掉后,整个Replica Set无法选举出新的Primary,Replica Set变成只读,需要在一个数据中心放置大部分Replica Set中的成员实例。
参考文档
CentOS 编译安装 MongoDB与mongoDB的php扩展
CentOS 6 使用 yum 安装MongoDB及服务器端配置
Ubuntu 13.04下安装MongoDB2.4.3
MongoDB入门必读(概念与实战并重)
Ubunu 14.04下MongoDB的安装指南
《MongoDB 权威指南》(MongoDB: The Definitive Guide)英文文字版[PDF]
Nagios监控MongoDB分片集群服务实战
基于CentOS 6.5操作系统搭建MongoDB服务
MongoDB 的详细介绍:请点这里
MongoDB 的下载地址:请点这里
本文永久更新链接地址:

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

InnoDB的全文搜索功能非常强大,能够显着提高数据库查询效率和处理大量文本数据的能力。 1)InnoDB通过倒排索引实现全文搜索,支持基本和高级搜索查询。 2)使用MATCH和AGAINST关键字进行搜索,支持布尔模式和短语搜索。 3)优化方法包括使用分词技术、定期重建索引和调整缓存大小,以提升性能和准确性。

本文讨论了使用MySQL的Alter Table语句修改表,包括添加/删除列,重命名表/列以及更改列数据类型。

全表扫描在MySQL中可能比使用索引更快,具体情况包括:1)数据量较小时;2)查询返回大量数据时;3)索引列不具备高选择性时;4)复杂查询时。通过分析查询计划、优化索引、避免过度索引和定期维护表,可以在实际应用中做出最优选择。

是的,可以在 Windows 7 上安装 MySQL,虽然微软已停止支持 Windows 7,但 MySQL 仍兼容它。不过,安装过程中需要注意以下几点:下载适用于 Windows 的 MySQL 安装程序。选择合适的 MySQL 版本(社区版或企业版)。安装过程中选择适当的安装目录和字符集。设置 root 用户密码,并妥善保管。连接数据库进行测试。注意 Windows 7 上的兼容性问题和安全性问题,建议升级到受支持的操作系统。

文章讨论了为MySQL配置SSL/TLS加密,包括证书生成和验证。主要问题是使用自签名证书的安全含义。[角色计数:159]

文章讨论了流行的MySQL GUI工具,例如MySQL Workbench和PhpMyAdmin,比较了它们对初学者和高级用户的功能和适合性。[159个字符]

聚集索引和非聚集索引的区别在于:1.聚集索引将数据行存储在索引结构中,适合按主键查询和范围查询。2.非聚集索引存储索引键值和数据行的指针,适用于非主键列查询。
