mongo4.0复制集
MongoDB中的副本集是一组维护相同数据集的mongod进程。副本集提供冗余和高可用性,是所有生产部署的基础。本节介绍MongoDB中的复制以及副本集的组件和体系结构。本节还提供与副本集相关的常见任务的教程。
冗余和数据可用性
复制提供冗余并提高数据可用性。对于不同数据库服务器上的多个数据副本,复制提供了防止单个数据库服务器丢失的一定程度的容错能力。在某些情况下,复制可以提供更大的读取容量,因为客户端可以将读取操作发送到不同的服务器。在不同的数据中心中维护数据副本可以提高分布式应用程序的数据局部性和可用性。您还可以为专用目的(如灾难恢复、报告或备份)维护其他副本。
mongodb复制
副本集是一组维护相同数据集的mongod实例。副本集包含多个数据承载节点和可选的一个仲裁节点。在数据承载节点中,一个和唯一一个成员被认为是主节点,而其他节点被认为是次要节点。主节点接收所有写操作。一个副本集只能有一个主目录,可以用{w:“ majority”}写关注点来确认写入;尽管在某些情况下,另一个mongod实例可能会瞬时地认为自己也是主的。[1]主要记录其操作日志(即Oplog)中对其数据集的所有更改。有关主节点操作的详细信息,请参阅Replica Set Primary.。
准备3台虚拟机做服务器
172.22.160.5
172.22.160.6
172.22.10.67
关闭mongo
pkill mongod
修改mongo配置文件
vim /etc/mongodb.conf
新增replSet=repl_test
bind_ip增加虚机的ip,否则a虚机配置b虚机的mongo复制集时会提示连不上
image.png
副本集配置
config = {_id:'repl_test',members:[{_id:1,host:'172.22.160.5:27017','priority':1},{_id:2,host:'172.22.160.6:27017','priority':3},{_id:3,host:'172.22.10.67:27017','priority':8}]}(priority是权重,值越大权重越高)
初始化副本集
rs.initiate(config);
mongo查看replica sets状态
use admin
image.png
rs.status()
image.png
重新加载配置文件
cfg = rs.conf();
cfg.members[1].priority = 2;
rs.reconfig(cfg):重新加载配置文件
增加文本集
只有host可省略
rs.add( "172.22.10.67:27017" )
rs.add( { host: "172.22.10.67:27017" } )