沈阳 商城 网站 开发,IP怎么屏蔽网站域名,冀州网站建设公司,将自己做的网站发布到本文倒腾目前大热的MongoDB Replica Set集群#xff0c;在倒腾的同时串讲一些 MongoDB特性。 副本集Replica Set是一个术语#xff0c;定义具有多节点的数据库集群#xff0c;这些节点具有主从复制(master-slave replication) 且节点之间实现了自动故障转移。 这样的结构通常… 本文倒腾目前大热的MongoDB Replica Set集群在倒腾的同时串讲一些 MongoDB特性。 副本集Replica Set是一个术语定义具有多节点的数据库集群这些节点具有主从复制(master-slave replication) 且节点之间实现了自动故障转移。 这样的结构通常需要具有奇数个成员的成员无论是否带有Arbiter节点以确保正确地选择PRIMARY主数据库。 选定的DB将处理所有传入的写操作并将有关它们的信息存储在其oplog每个辅助从属副本成员都可以访问和复制oplog以应用于它们的数据集。 前置 为创建一个Replica set, 至少需要三个MongoDB实例请查看官网安装指南. 本文会始终使用sudo指令一般情况请为MongoDB服务创建一个标准用户 mongod 配置网络 为达到数据一致性每个实例节点需要与集群其他节点通信以三实例数据传输为例 ① replica set每个成员都使用私有IP部署在同一数据中心这也是推荐方式。 ② replica set每个节点使用公网ip节点部署在不同数据中心(在replication时有网络延迟)这种方式一般用于强灾备部署如果采用这种方式需要在主机之间配置SSL/TLS或通过vpn通信 replica set节点认证 本节你会使用openssl创建一个用于在副本集成员之间认证的key文件MongoDB推荐使用x.509证书加密连接。 ① 产生key文件 openssl rand -base64 756 mongo-keyfile将生成的key文件拷贝到复制集的每个成员 ② 确保复制集成员都能访问同一路径的key文件 sudo mkdir /opt/mongo
sudo mv ~/mongo-keyfile /opt/mongo
sudo chmod 400 /opt/mongo/mongo-keyfile③ 默认安装的MongoDB使用标准账户 mongod 确保mongod对文件有所有权 sudo chown mongod:mongod /opt/mongo/mongo-keyfile创建Admin用户 登陆你打算设为Primary的MongoDB节点进入admin数据库创建具有root特权的管理员用户 use admin
db.createUser({user: mongo-admin, pwd: password, roles:[{role: root, db: admin}]})配置MongoDB 修改复制集每个成员的mongod.conf: net:port: 27017bindIp: 127.0.0.1,192.0.2.1
security:keyFile: /opt/mongo/mongo-keyfile
replication: replSetName: rs0指定key文件、replication set名称 重启服务 sudo systemctl restart mongod启动集群添加节点 使用之前创建的管理员账户登陆 Primary MongoDB服务节点 mongo -u mongo-admin -p --authenticationDatabase admin① 初始化集群添加节点 rs.initiate()
rs.add(mongo-repl-2)
rs.add(mongo-repl-3)以上使用hostsname 代替节点ip地址需要在节点/etc/hosts添加节点的 hosts映射条目。 ② 使用rs.conf() 或 rs.status() 验证集群配置和状态 倒腾Replica Set 完成以上步骤MongoDB 三实例Replica Set已经搭建好了。 登陆Primary节点做一些常规倒腾 顺便捡漏一些你意想不到的姿势 ① 输入测试数据 use exampleDB
for (var i 0; i 10; i) db.exampleCollection.insert( { x : i } )将会隐式创建exampleDB 和 文档集合exampleCollection。 请注意 默认创建的Collection是不封顶的。 封顶capped collection有固定大小的集合支持高通量操作这些操作根据插入顺序插入和检索文档 以循环缓冲区的形式工作一旦集合达到分配空间会通过override旧文档来腾挪出新的空间。 ② 观察Secondary节点是否已经同步到插入的数据 使用创建的管理员账户登陆 Secondary节点直接查询会报 因为默认建立的Replica set读写均发生均在Primary节点Secondary节点的作用是冗余备份、故障转移 不过MongoDB replica set支持在客户端设置read preference读操作首选项大部分Driver均支持在连接字符串中指定read preference读操作首选项这个设置可实现真正意义的master-slave读写分离。 对应到shell会话我们需要为本次Secondary会话 开启可读 db.getMongo().setSlaveOk()或 使用shell命令的读取首选项 回过头来 实操本文你已经可以完整搭建MongoDB Replica Set大致掌握了副本集的核心特性 主节点读写、辅助节点冗余备份 支持对辅助节点开启读操作。 后面我们聊一聊 副本集心跳保活、异步复制、自动故障转移相关姿势。