当前位置: 首页 > news >正文

做网站那个平台好推软件

做网站那个平台好,推软件,怎样建设百度网站,手机平面设计软件文章目录 MongoDB 集群架构副本集主节点选举原则搭建副本集主节点从节点仲裁节点 连接节点添加副本从节点添加仲裁者节点删除节点 副本集读写操作副本集中的方法 分片集群分片集群架构目标第一个副本集第二个副本集配置集初始化副本集路由集添加分片开启分片集合分片删除分片 安… 文章目录 MongoDB 集群架构副本集主节点选举原则搭建副本集主节点从节点仲裁节点 连接节点添加副本从节点添加仲裁者节点删除节点 副本集读写操作副本集中的方法 分片集群分片集群架构目标第一个副本集第二个副本集配置集初始化副本集路由集添加分片开启分片集合分片删除分片 安全认证MongoDB用户和角色权限副本集安全认证创建副本集认证的key文件修改配置文件指定keyfile 分片集群安全认证 MongoDB 集群架构 副本集 MongoDB副本集Replica Set是一组维护相同数据集的 MongoDB 实例它可以提供数据的冗余和高可用性。 副本集由一个主节点Primary和多个从节点Secondary组成。 客户端所有写操作都会发送到主节点主节点会记录oplog然后将写操作同步到从节点。从节点可以进行读操作和选举新的主节点从而在主节点故障时实现高可用性。 副本集可以有一个或多个仲裁节点Arbiter。 仲裁节点不持有数据只参与投票来进行选举。 类似于有自动故障恢复功能的主从集群。用多台机器进行同一数据的异步和同步从而使得多台机器拥有同一数据的多个副本。并且当主库宕机时不需要用户干预的情况下自动切换其他备份服务器做主库。还可以利用副本服务器做只读服务器实现读写分离提高负载。通常在生产环境中使用3或5节点副本集且部署主从节点到不同机器上可以提供更高的数据冗余和可用性。 副本集使用主-从-仲裁节点的架构 数据冗余 数据同步到从节点上提高数据可用性高可用性 主节点故障时可以快速选举新的主节点读写分离 不同类型的压力分别在不同的节点上执行从节点可以承担读操作的负载数据分发 将数据从一个区域复制到另一个区域减少另一个区域的读延迟异地容灾 在数据中心故障时快速切换到异地 主从复制和副本集区别 主从集群和副本集最大区别就是副本集没有固定的“主节点”整个集群会选出一个“主节点”当其挂掉后又在剩下的从节点中选中其他节点为“主节点”副本集总有一个活跃点 {主、primary} 和一个或多个备份节点 {从、secondary}。 主节点选举原则 MongoDB在副本集中会自动进行主节点的选举主节点选举的触发条件 主节点故障主节点网络不可达默认心跳信息为10秒人工干预rs.stepDown(600)) 一旦触发选举就要根据一定的规则来选主节点。 选举规则是根据票数来决定谁获胜 票数最高且获得了大多数成员的投票支持的节点获胜 “大多数”的定义为假设副本集内投票成员数量为N则大多数为 N/21。例如3个投票成员则大多数的值是2。当副本集内存活的数量不足大多数时整个副本集将无法选举出Primary副本集将无法提供写服务处于只读状态。 若票数相同且都获得了大多数成员的投票支持的数据新的节点获胜。 数据的新旧是通过操作日志oplog来对比的。 搭建副本集 目标搭建一主一副本一仲裁 主节点 建立存放数据和日志的目录 mkdir -p ~/mongodb/replicaset/rs_27017/log ~/mongodb/replicaset/rs_27017/data/db新建或修改配置文件 vim ~/mongodb/replicaset/rs_27017/mongod.confmongod.conf: 注意 /home/cauchy 这里是用户的家目录不能用 ~ 代替cd pwd 查看家目录路径。 # Where and how to store data. storage:dbPath: /home/cauchy/mongodb/replicaset/rs_27017/data/db# where to write logging data. systemLog:destination: filelogAppend: truepath: /home/cauchy/mongodb/replicaset/rs_27017/log/mongod.log# network interfaces net:port: 27017bindIp: 0.0.0.0# how the process runs processManagement:fork: truetimeZoneInfo: /usr/share/zoneinfopidFilePath: /home/cauchy/mongodb/replicaset/rs_27017/log/mongod.pidreplication:replSetName: rs#sharding:# security: # authorization: enabled启动节点服务 sudo mongod -f ~/mongodb/replicaset/rs_27017/mongod.conf从节点 mkdir -p ~/mongodb/replicaset/rs_27018/log ~/mongodb/replicaset/rs_27018/data/db vim ~/mongodb/replicaset/rs_27018/mongod.confmongod.conf: # Where and how to store data. storage:dbPath: /home/cauchy/mongodb/replicaset/rs_27018/data/db# where to write logging data. systemLog:destination: filelogAppend: truepath: /home/cauchy/mongodb/replicaset/rs_27018/log/mongod.log# network interfaces net:port: 27018bindIp: 0.0.0.0# how the process runs processManagement:fork: truetimeZoneInfo: /usr/share/zoneinfopidFilePath: /home/cauchy/mongodb/replicaset/rs_27018/log/mongod.pidreplication:replSetName: rs#sharding:# security: # authorization: enabledsudo mongod -f ~/mongodb/replicaset/rs_27018/mongod.conf仲裁节点 mkdir -p ~/mongodb/replicaset/rs_27019/log ~/mongodb/replicaset/rs_27019/data/db vim ~/mongodb/replicaset/rs_27019/mongod.confmongod.conf: # Where and how to store data. storage:dbPath: /home/cauchy/mongodb/replicaset/rs_27019/data/db# where to write logging data. systemLog:destination: filelogAppend: truepath: /home/cauchy/mongodb/replicaset/rs_27019/log/mongod.log# network interfaces net:port: 27019bindIp: 0.0.0.0# how the process runs processManagement:fork: truetimeZoneInfo: /usr/share/zoneinfopidFilePath: /home/cauchy/mongodb/replicaset/rs_27019/log/mongod.pidreplication:replSetName: rs#sharding:# security: # authorization: enabledsudo mongod -f ~/mongodb/replicaset/rs_27019/mongod.conf连接节点 连接端口27017节点使之成为主节点 mongosh --port27017初始化副本集 rs.initiate() # 使用默认配置初始化查看副本集信息 使用 rs.conf()、rs.status() 查看相应的信息 可以看到目前副本集中只有一个成员members主机ac34057c51af:27017仲裁节点arbiterOnly:false优先级权值priority:1并且当前27017节点初始化后变为主节点primary。 添加副本从节点 在主节点中添加从节点将其他成员加入到副本集中 语法 rs.add(host, arbiterOnly)ParameterTypeDescriptionhoststring or document要添加到副本集的新成员。指定为字符串或配置文档1如果是一个字符串则需要指定新成员的主机名和可选的端口号2如果是一个文档请指定在members数组中找到的副本集成员配置文档。您必须在成员配置文档中指定主机字段。有关文档配置字段的说明详见下方文档“主机成员的配置文档”arbiterOnlyboolean可选的。仅在值为字符串时适用。如果为true则添加的主机是仲裁者。 主机成员的配置文档可通过 rs.conf() 查看 {_id:int,host:string,arbiterOnly:boolean,buildIndexes:boolean,hidden:boolean,priority:number,tags:document,slaveDelay:int,votes:number }将27018的副本节点加添加到副本集中 主机名直接用主机成员的配置文档中的即可 rs.add(ac34057c51af:27018, false)添加仲裁者节点 rs.add(host,arbiterOnly) 或者 rs.addArb(host)如下添加仲裁节点 rs.addArb(ac34057c51af:27019) 【错误信息】【Reconfig attempted to install a config that would change the implicit default write concern. Use the setDefaultRWConcern command to set a cluster-wide write concern and try the reconfig again.】 【解决】设置全局默认写入关注点详细的 Write Concern 和 Read Concern 可参考官网文档。 以下操作将全局写入关注设置为 w: 2 db.adminCommand({setDefaultRWConcern : 1,defaultWriteConcern : {w : 2} })设置完成后再次执行 rs.addArb(ac34057c51af:27019)删除节点 从副本集中删除节点 rs.remove(host)副本集读写操作 主节点 use test db.comment.insert({userid: 001, username: cauchy, content: 专家有言早上空腹不能吃饭, timestamp: new Date()})成功读写操作 从节点 mongosh --port27018目前无法读取任何数据需要主动承认自己是从节点 db.getMongo().setReadPref(primaryPreferred)执行成功从节点只读不可写 Read PreferenceRead Preference — MongoDB Manual readPreference 主要控制客户端 driver 从副本集Replica Set读数据的时候如何路由如下图这个特性可以方便的配置读写分离、就近去读等策略。 读策略各模式 primary只从 primary 节点读数据默认模式 primaryPreferred先主后从。优先从 primary 读取primary 不可用时从 secondary 读 secondary只从副本集中 secondary 节点读数据 secondaryPreferred先从后主。优先从 secondary 读取如果 secondary 不可用时就从 primary 读 nearest就近。根据网络距离就近读取根据客户端与服务端的 PingTime 实现 副本集中的方法 可以通过 rs.help() 返回副本集功能的基本帮助文档 分片集群 分片是一种跨多台机器分布数据的方法MongoDB使用分片来支持具有非常大的数据集和高吞吐量操作的部署。 换句话说分片就是将数据拆分将其分散到不同的机器上的过程。 分片包含的组件 分片存储每个分片包含分片数据的子集。每个分片都可以部署为副本集。mongos路由mongos充当查询路由器在客户端应用程序和分片集群之间提供接口。config servers调度的配置配置服务器存储群集的元数据和配置设置。 分片集群架构目标 第一个副本集 创建存放数据和日志的目录 mkdir -p ~/mongodb/sharded_cluster/shardrs_01_27018/data/db ~/mongodb/sharded_cluster/shardrs_01_27018/log mkdir -p ~/mongodb/sharded_cluster/shardrs_01_27118/data/db ~/mongodb/sharded_cluster/shardrs_01_27118/log mkdir -p ~/mongodb/sharded_cluster/shardrs_01_27218/data/db ~/mongodb/sharded_cluster/shardrs_01_27218/log新建或修改配置文件 vim ~/mongodb/sharded_cluster/shardrs_01_27018/mongod.conf vim ~/mongodb/sharded_cluster/shardrs_01_27118/mongod.conf vim ~/mongodb/sharded_cluster/shardrs_01_27218/mongod.confshardrs_01_27018/mongod.conf # mongod.conf# for documentation of all options, see: # http://docs.mongodb.org/manual/reference/configuration-options/# Where and how to store data. storage:dbPath: /home/cauchy/mongodb/sharded_cluster/shardrs_01_27018/data/db # engine: # wiredTiger:# where to write logging data. systemLog:destination: filelogAppend: truepath: /home/cauchy/mongodb/sharded_cluster/shardrs_01_27018/log/mongod.log# network interfaces net:port: 27018bindIp: 0.0.0.0# how the process runs processManagement:fork: truetimeZoneInfo: /usr/share/zoneinfopidFilePath: /home/cauchy/mongodb/sharded_cluster/shardrs_01_27018/log/mongod.pid# security: # authorization: enabled#operationProfiling:replication:replSetName: shardrs_01sharding:clusterRole: shardsvr#sharding:## Enterprise-Only Options:#auditLog:shardrs_01_27118/mongod.confshardrs_01_27218/mongod.conf 同理修改即可。 第二个副本集 mkdir -p ~/mongodb/sharded_cluster/shardrs_02_27318/data/db ~/mongodb/sharded_cluster/shardrs_02_27318/log mkdir -p ~/mongodb/sharded_cluster/shardrs_02_27418/data/db ~/mongodb/sharded_cluster/shardrs_02_27418/log mkdir -p ~/mongodb/sharded_cluster/shardrs_02_27518/data/db ~/mongodb/sharded_cluster/shardrs_02_27518/logvim ~/mongodb/sharded_cluster/shardrs_02_27318/mongod.conf vim ~/mongodb/sharded_cluster/shardrs_02_27418/mongod.conf vim ~/mongodb/sharded_cluster/shardrs_02_27518/mongod.confshardrs_02_27318/mongod.conf # mongod.conf# for documentation of all options, see: # http://docs.mongodb.org/manual/reference/configuration-options/# Where and how to store data. storage:dbPath: /home/cauchy/mongodb/sharded_cluster/shardrs_02_27318/data/db # engine: # wiredTiger:# where to write logging data. systemLog:destination: filelogAppend: truepath: /home/cauchy/mongodb/sharded_cluster/shardrs_02_27318/log/mongod.log# network interfaces net:port: 27318bindIp: 0.0.0.0# how the process runs processManagement:fork: truetimeZoneInfo: /usr/share/zoneinfopidFilePath: /home/cauchy/mongodb/sharded_cluster/shardrs_02_27318/log/mongod.pid# security: # authorization: enabled#operationProfiling:replication:replSetName: shardrs_02sharding:clusterRole: shardsvr#sharding:## Enterprise-Only Options:#auditLog:shardrs_02_27418/mongod.confshardrs_02_27518/mongod.conf 同理修改即可。 配置集 mkdir -p ~/mongodb/sharded_cluster/configrs_27019/data/db ~/mongodb/sharded_cluster/configrs_27019/log mkdir -p ~/mongodb/sharded_cluster/configrs_27119/data/db ~/mongodb/sharded_cluster/configrs_27119/log mkdir -p ~/mongodb/sharded_cluster/configrs_27219/data/db ~/mongodb/sharded_cluster/configrs_27219/logconfigrs_27019/mongod.conf # mongod.conf# for documentation of all options, see: # http://docs.mongodb.org/manual/reference/configuration-options/# Where and how to store data. storage:dbPath: /home/cauchy/mongodb/sharded_cluster/configrs_27019/data/db # engine: # wiredTiger:# where to write logging data. systemLog:destination: filelogAppend: truepath: /home/cauchy/mongodb/sharded_cluster/configrs_27019/log/mongod.log# network interfaces net:port: 27019bindIp: 0.0.0.0# how the process runs processManagement:fork: truetimeZoneInfo: /usr/share/zoneinfopidFilePath: /home/cauchy/mongodb/sharded_cluster/configrs_27019/log/mongod.pid# security: # authorization: enabled#operationProfiling:replication:replSetName: configrssharding:clusterRole: configsvr## Enterprise-Only Options:#auditLog:configrs_27119/mongod.confconfigrs_27219/mongod.conf 同理修改即可。 初始化副本集 两个副本集的初始化和上文副本集中连接节点处讲解一致 配置集没有仲裁节点将两个节点以从节点的方式加入即可 路由集 mongos服务不是mongod服务 仅需要创建日志目录 mkdir -p ~/mongodb/sharded_cluster/mongos_27017/log mkdir -p ~/mongodb/sharded_cluster/mongos_27117/log新建或修改配置文件 vim ~/mongodb/sharded_cluster/mongos_27017/mongos.conf vim ~/mongodb/sharded_cluster/mongos_27117/mongos.confmongos_27017/mongos.conf # where to write logging data. systemLog:destination: filelogAppend: truepath: /home/cauchy/mongodb/sharded_cluster/mongos_27017/log/mongod.log# network interfaces net:port: 27017bindIp: 0.0.0.0# how the process runs processManagement:fork: truetimeZoneInfo: /usr/share/zoneinfopidFilePath: /home/cauchy/mongodb/sharded_cluster/mongos_27017/log/mongod.pid# security: # authorization: enabled#operationProfiling:# replication:sharding:configDB: configrs/ac34057c51af:27019,ac34057c51af:27119,ac34057c51af:27219#sharding:## Enterprise-Only Options:#auditLog:mongos_27117/mongos.conf # where to write logging data. systemLog:destination: filelogAppend: truepath: /home/cauchy/mongodb/sharded_cluster/mongos_27117/log/mongod.log# network interfaces net:port: 27117bindIp: 0.0.0.0# how the process runs processManagement:fork: truetimeZoneInfo: /usr/share/zoneinfopidFilePath: /home/cauchy/mongodb/sharded_cluster/mongos_27117/log/mongod.pid# security: # authorization: enabled#operationProfiling:# replication:sharding:configDB: configrs/ac34057c51af:27019,ac34057c51af:27119,ac34057c51af:27219#sharding:## Enterprise-Only Options:#auditLog:启动路由节点 mongos 服务 sudo mongos -f ~/mongodb/sharded_cluster/mongos_27017/mongos.conf sudo mongos -f ~/mongodb/sharded_cluster/mongos_27117/mongos.conf此时路由还不能找到分片要添加分片到路由中。 添加分片 语法 sh.addShard(IP:Port)添加第一套副本集 添加第二套副本集 开启分片 sh.enableSharding(库名) 需要先对对库开启分片功能 集合分片 对集合分片必须使用 sh.shardCollection() 方法指定集合和分片键 片键Shard Key是每条记录都必须包含的且建立了索引的单个字段或复合字段MongoDB 按照片键将数据划分到不同的数据块中并将数据块均衡地分布到所有分片中。 MongoDB 使用基于哈希的分片方式随机平均分配或者基于范围的分片方式数值大小分配 语法 sh.shardCollection(namespace,key,unique)ParameterTypeDescriptionnamespacestring要分片共享对目标集合对命名空间格式database.collectionkeydocument用作分片键的索引规范文档。shard键决定MongoDB如何在shard之间分发文档。除非集合为空否则索引必须在shard collection命令之前存在。如果集合为空则MongoDB在对集合进行分片之前创建索引前提是支持分片键的索引不存在。简单来说由包含字段和该字段的索引遍历方向的文档组成。uniqueboolean当值为true片键字段上会限制为确保是唯一索引哈希策略片键不支持唯一索引默认为false 测试 test_db 库的 comment 集合以 username 为键以哈希策略来分片 sh.shardCollection(test_db.comment, {username: hashed})分片规则一哈希策略 对于基于哈希的分片MongoDB 计算一个学段的哈希值并用这个哈希值来创建数据块。 在使用基于哈希分片的系统中拥有相近片键的文档很可能不会存储在同一个数据块中因此数据的分离性更好一些 测试哈希策略 for(var i0;i1000;i){db.comment.insert({userid: i, username: cauchyi})}在分片1中查看 mongosh --port27018 use test_db db.comment.countDocuments()在分片2中查看 分片规则二范围策略 对于基于范围的分片MongoDB按照片键的范围把数据分成不同部分。假设有一个数字的片键想象一个从负无穷到正无穷的直线每一个片键的值都在直线上画了一个点。MongoDB 把这条直线划分为更短的不重叠的片段并称之为数据块每个数据块包含了片键在一定范围内的数据。 在使用片键做范围划分的系统中拥有相近片键的文档很可能存储诸在同一个数据块中因此也会存储在同一个分片中。 sh.shardCollection(test_db.author, {age: 1})删除分片 use config db.databases.remove({_id: test_db}) db.shards.remove({_id: shardrs_01}) db.shards.remove({_id: shardrs_02})第二个路由节点直接同第一个创建即可开启后不需要分配由配置服务自动同步 安全认证 MongoDB用户和角色权限 参考上篇博客 副本集安全认证 创建副本集认证的key文件 生成一个key文件到当前文件夹中 可以使用任何方法生成密钥文件。例如以下操作使用 openssl 生成密码文件然后使用 chmod 来更改文件权限 仅为文件所有者提供读取权限 openssl rand -base64 128 ./mongo.keyfile chmod 400 ./mongo.keyfile所有副本集节点都必须要用同一份keyfile一般是在一台机器上生成然后拷贝到其他机器上且必须有读的权 限。 一定要保证密钥文件一致文件位置随便。但是为了方便查找建议每台机器都防放到一个固定的位置都防放到和配 置文件一起的目录中。 将该文件分别拷贝到多个目录中 cp mongo.keyfile ~/mongodb/replicaset/rs_27017 cp mongo.keyfile ~/mongodb/replicaset/rs_27018 cp mongo.keyfile ~/mongodb/replicaset/rs_27019修改配置文件指定keyfile ... security:keyFile: /home/cauchy/mongodb/replicaset/rs_27017/mongo.keyfileauthorization: enabled ...... security:keyFile: /home/cauchy/mongodb/replicaset/rs_27018/mongo.keyfileauthorization: enabled ...... security:keyFile: /home/cauchy/mongodb/replicaset/rs_27019/mongo.keyfileauthorization: enabled ...分片集群安全认证 每个节点上都要添加 keyfile其他步骤同副本集一样。 参考https://www.bilibili.com/video/BV1bJ411x7mq
http://www.huolong8.cn/news/33983/

相关文章:

  • 广东省住房和城乡建设厅网站进不去梧州论坛红豆社区
  • 建设手机网站上海网站平台建设
  • 绥化市建设局网站网络开发是什么专业
  • 网站搭建行业松原做招聘的网站有哪些
  • 西部数码网站管理助手 mysql基层建设是哪个网站的
  • 定期更新网站微信公众号菜单跳转的网页怎么制作
  • 西安seo网站管理个人简历免费导出
  • 南城仿做网站智慧团建网站怎么转团关系
  • 成都房产网官方网站建设手机网站的方案
  • 深圳制作网站公司哪里好书画展示网站源码
  • 怎样做网站设计要交税吗个安装wordpress
  • 化学网站定制房地产怎么白手起家
  • 找工程去哪个网站网站制作公司兴田德润简介
  • 2网站建设张家界网站建设app
  • 苏州市工业园区规划建设局网站网站建设比较合理的流程
  • 商业网站页面公司广告墙设计图片
  • wap网站html5顺德网站建设报价
  • 美妆网站建设环境分析万网封停慧聪网域名事件
  • 开发网站公司地址做网站用的浏览器有哪些
  • 二级网站都在一台服务器怎么做域名苏州 手机网站
  • 做网站需要每年都缴费吗涿州市住房和城乡建设局网站
  • 网站透明效果旅游景点网站策划书
  • 用asp.net做的网站框架推广策略和推广方案一样吗
  • 北京做网站建设公司哪家好做网站嘉兴
  • 建筑设计网站排行榜0元可以注册公司吗
  • 建站设计网站网站管家
  • excel网站链接怎么做网上书店网站建设设计的收获
  • 网站查询访问产品推广文案100字
  • 网站描述标签优化南京网站开发南京乐识正规
  • 英文网站推荐网站优化 西安