day19-mongodb集群以及日志、异常讲义_第1页
day19-mongodb集群以及日志、异常讲义_第2页
day19-mongodb集群以及日志、异常讲义_第3页
day19-mongodb集群以及日志、异常讲义_第4页
day19-mongodb集群以及日志、异常讲义_第5页
已阅读5页,还剩17页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

其它、简一组Mongodb集,就是一组mongod进程,这些进程同一个数据集合。集提供了数据冗余和高等级的可靠性,这是生产部署的基础。目失。能够随时应对数据丢失、机器损坏带来的风险。还能提高能力,用户的服务器和写入服务器在不同的地方,而且,由不同的服务器为不同的用户提服务,提高整个系统的负载。机(Primry),接受客户端所有的写入操作,其他都是副本实例(Scondry),从主服务器上获得数据并保持同步。主服务器很重要,包含了所有的改变操作(写)此当主服务器挂掉了,就会在副本服务器上重新选取一个成为主服务器。每个集还有一个仲裁者(Ate),仲裁者不数据,只是负责通过心跳包来确认集群中集合的数量,并在主服务器的时候作为仲裁决定结果。、架、三个数据的、存在arbiter节点的、集通过rlStie命令(或mongos 的sat())进行初始化,初始化后各个成员间开始发送心跳消息,发Py操,得大多』员票持的点会成Py其节成Scy。『大多数』的定假设集内投票成员数量为N,则大多数为N/2+1,当集内存活成员数量不足大多数时,整个集将无法、成员说成说情集yPyPPiay同步写入的数据,以保证与Piay相同的数据。Scndy可以提供读服增点力升用,Mogob支持对集的Seconay节点进行灵活的配置,以适应多种场景的需求。2个节点的集,1个Primary,1个Secondary,任一节点宕机,集将不能提供服务(无法选出Priry),这时可以给集添加一个Ar节点,即使有节点宕机,仍能选出Primry。Artr本身不数据,是非常轻量级的服务,当集成员为偶数时,最好加入一个Are节点,以提升集可用性。Priority0节点的优先级为0,不会被为Primary。比如你跨机房A、B部署了一个集,并且想指定Primry必须在A机房,这时可以将B机房的集成员Pririty设置为0,这样Primry就一定会是A机房的成员。(注意:如果这样部署,最好将『大多数』节点部署在A机房,否则网络分区时可能无法选出Primry) Hidde节点不能被选为主(Pririty为),并且对Drivr不可见。因Hidden节点不会接受Driver的请求,可使用Hidde节点做一些数据备份、离线计算的任务,不会影响集的服务。Dlayed节点必须是Hidde节点,并且其数据与Primry一段时间(可配置,比如1时)。因Delayed节点的数据比Primry一段时间,当错误或者无效的数据写入Primry时,可通过Dlayed节点的数据来恢复到之前的时间点。、搭建##创建3个mongo容#"ok":1,#"operationTime":,"$clusterTime":"clusterTime":,"signature":}}}"hash":}}}"hash":"keyId":#进入容器dockerexec-itmongo01#登录到mongo服mongo#初始化集集rs.initiate(_id:"rs0",members:[{_id:0,host:"85:27017"{_id:1,host:"85:27018"{_id:2,host:"85:27019"]#响{9# 库查询数#在主库插入数rs0:PRIMARY>"keyId":}}}rs0:SECONDARY>rs.slaveOk()#设置允许从库数rs0:SECONDARY>{"_id": "id":1001,"name":"zhangsan"、故障转测试一:从节点、增加arbiter节1dockercreate--namemongo04-p27020:27017-vmongo-data-04:/data/dbmongo:4.0.3-23456789replSet"rs0"--dockerstartmongo04rs0:PRIMARY>{"ok":"operationTime":Timestamp( ,1),"$clusterTime":{"clusterTime":Timestamp( "signature":{"hash":"keyId":}}}通过测试,添加arbte节点后,如果集群节点数不满足N/21时,arite节点可作为凑数节点,可以选出主节点,继续提供服务。分片(shing)是MnDB用来将大型集合分割到不同服务器(或者说一个集群)上所采用的方法。尽管分片起源于关系型数据库分区,但MnDB分片完全又是另一回事。和yS分区方案相比,ogDB的最大区别在于它几乎能自动完成所有事情,只要告诉MnDB自动数据在不同服务器之间的均衡。、简高数据量和吞吐量的数据库应用会对单机的性能造成较大压力,大的查询量会将单机的P耗尽,大的数据量对单机的压力较大,最终会耗尽系统的内存而将压力转移到磁盘上。为了解决这些问题,有两个基本的方法垂直扩展和水平扩展。群可以提高自己的容量和吞吐量。举例来说,当插入一条数据时,应用只需要这条数据的分片.、优对集群进行抽象,让集群“不可见nDB自带了一个叫做mongos的专有路由进程。mongos就是掌握统一路口的路由器,其会将客户端发来的请求准确无误的路由到集群中的一个或者一组服务器上,同时会把接收到的响应拼装起来发回到客户端。保证集群总是可将ogDB的分片和功能结合使用,在确保数据分片到多台服务器的同时,也确保了每分数据都有相应的备份,这样就可以确保有服务器换掉时,其他的从库可以立即坏掉的部分继续工作。使集群易于扩、架组说 提供对外应用,所有操作均通过mongos执行。一般有多个mongs节点。数据迁移和数据自动平衡。ongs本身并不持久化数据,Shadedclustr所有的元数据都会到CfigServe,而用户的数据会分散到各个sh。Mogos启动后,会从配置服务器加载元数据,开始提供服务,将用户的请求正确路由到对应的分片。当数据写入时,ogDBCltr根据分片键设计写入数据。当外部语句发起数据查询时,MnDB、集群中数据分在一个shardserver内部,MongoDB会把数据分为chunks,每个chunk代表这个shardserver内部一部分数据。Slitting:当一个chuk的大小超过配置中的chunksize时,ogDB的进程会把这个cunk切分成更小的chuk,从而避免chuk过大的情况Blaning:在ogDB中,blacer是一个进程,负责chunk的迁移,从而均衡各个shdsrvr载,系统初始1个chunk,chunksiz默认值64M,生产库上选择适合业务的chunksize是最好的。mnDB会自动拆分和迁移chks。、chunk及迁随着数据的增长,其中的数据大小超过了配置的chunksiz,默认是64,则这个chuk就会成两个。数据的增长会让chuk得越来越多。这时候,各个 、小的cukiz:数据均衡是迁移速度快,数据分布更均匀。数据频繁,路由节点消耗资源。大的cukiz:数据少。数据块移动集中消耗资源。chunkSize对及迁移的影MongoDB默认的chunkSize为64MB,如无特殊需求,建议保持默认值;chunkSize会直接影响到chunk分chunkSize越小,chunk及迁移越多,数据分布越均衡;反之,chunkSize越大,chunk及迁移会更chunk自动只会在数据写入时触发,所以如果将chunkSize改小,系统需要一定的时间来将chunk到chunk只会,不会合并,所以即使将chunkSize改大,现有的chunk数量不会减少,但chunk大小会随、搭建集##启动服#进去容器#集群初始 _id:configsvr:members: {_id:0,host:"85:17000" {_id:1,host:"85:17001" {_id:2,host:"85:17002" 2628#创建2个shard集群,每个集群都有3#集群dockercreate--nameshardsvr01-p37000:27018-vmongoshardsvr-data-01:/data/dbmongo:4.0.3--replSet"rs_shardsvr1"--bind_ip_all--shardsvrdockercreate--nameshardsvr02-p37001:27018-vmongoshardsvr-data-02:/data/dbmongo:4.0.3--replSet"rs_shardsvr1"--bind_ip_all--shardsvrdockercreate--nameshardsvr03-p37002:27018-vmongoshardsvr-data-03:/data/dbmongo:4.0.3--replSet"rs_shardsvr1"--bind_ip_all--shardsvr#集群dockercreate--nameshardsvr04-p37003:27018-vmongoshardsvr-data-04:/data/dbmongo:4.0.3--replSet"rs_shardsvr2"--bind_ip_all--shardsvrdockercreate--nameshardsvr05-p37004:27018-vmongoshardsvr-data-05:/data/dbmongo:4.0.3--replSet"rs_shardsvr2"--bind_ip_all--shardsvrdockercreate--nameshardsvr06-p37005:27018-vmongoshardsvr-data-06:/data/dbmongo:4.0.3--replSet"rs_shardsvr2"--bind_ip_all--shardsvr#启动容dockerstartshardsvr01shardsvr02dockerstartshardsvr04shardsvr05shardsvr06#进去容器dockerexec-itshardsvr01mongo#初始化集 _id:members: {_id:0,host:"85:37000" {_id:1,host:"85:37001" {_id:2,host:"85:37002" 5860#初始化集

mongo{_id:"rs_shardsvr2",members:[{_id:0,host:"85:37003"{_id:1,host:"85:37004"{_id:2,host:"85:37005"]})#创建mongos节点容器,需要指定configdockercreate--namemongos-p6666:27017--entrypoint"mongos"mongo:4.0.3--configdbrs_configsvr/85:17000,85:17001,85:17002--dockerstartmongosdockerexec-itmongosbashmongo85:6666#设置分片规则,按照_id的hash进行sh.shardCollection("test.order",{"_id":"hashed"#插入测试数usefor(i=1;i<=i=i+1){db.order.insert({'id':i,'price':}#分别在2个shard集群中查询数据 useconfigdb.databases.find()#列出所有数据库分片情况db.collections.find()#查看分片的片键sh.status()#查询分片集群的状态信息、阿里巴巴开发手、了解Java简易日志门面(SimpleLoggingFacadeforJava,缩写SLF4J),是一套包装Logging框架的界面程式,以外观模式实现。可以在软件部署的时候决定要使用的Logging框架,目前主要支援的有JavaLoggingAPI、Log4j及logback等框架。以MIT方式发布。SLF4JLog4j和Logback的作者CekiGülcü,他宣称SLF4JLog4j更有效率,而且比ApacheCommonsLogging(JCL)简单、稳定。、SLF4JLOGGER.info("这是info日志信息.代码之前进行打印信息。}}代码之后进行打印信息。.3.3、与JDK14导入依赖运行上面的代码进试运行上面的代码 试、与Log4j整<artifactId><artifactId>slf4j-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论