mongodb replicaset 突发事件怎么办

mongodb replicaset 突发事件怎么办,第1张

1假如现在replica set中一共就2个节点,一个是primary member,另外一个是second
member

如果primary出现故障,(not reachable/healthy),这时候,second依旧是seconde,

只能提供读的 *** 作。如果重启primary member,一般情况下是按照最新数据的member作为
primary,这个时候这个节点依旧可以作为primary member使用。replica set恢复正常。
如果seconde出现故障,(not reachable/healthy),这时候,primary member自动降级为
seconde member,replica set中不存在primary member,无法提供写 *** 作,数据会丢失。
如果seconde故障时间比较短(oplog相关),重启后,最好指定
config={_id:'shard1',members:[
{_id:1,host:'127001:10001'},
{_id:0,host:'127001:10002',priority:1}]
}
10002作为你需要的最新数据为primary member,这个时候,replica set恢复正常。
如果人为rsremove()掉seconde member,primary member依旧不变
如果人为rsremove()掉primary member,seconde member依旧不变。
如果seconde故障时间比较短(oplog相关):
这句话的意思是,replica set master和slave之间的复制,是采取oplog读 *** 作日志
的方式进行复制数据的。所以短时间这个日志比较小的情况下,启动slave,加上
--fastsync 启动参数,可以再原来的replication 复制的log基础上快速启动,并syn
同步最新的master数据,否则,master上的oplog日志上一轮如果结束了,这个时候,
slave 从master获取oplog的时候,发现和master的数据相差太远,更不上master的更新
了,这个时候,seconde节点不能正常加入replica set中,需要删除seconde数据,进行
冷copy master数据,然后再进行同步。
2最少replica set中至少有2个member(primary 、seconde),一个Arb member。
这种情况,Arb member意义不大,最差情况和上边1一样,导致replica set 瘫痪,
所以,最有意义的配置应该是3个member(1primary、2seconde),一个 Arb member。

对应72官方文档路径:Modules » Shard allocation and cluster-level routing
官方地址如下:
>1、通过上面的配置,写的时候,我们自己控制写到除第一个replica的其他replica上;在通过分布式表读的时候,就会自动把读请求分发到第一个replica上,再利用复制特性把数据同步到自己replica上。通过这样子的设计,使得读请求与写请求分开。
2、优点
(1)相比之前的普通集群配置,等于把空闲的资源利用起来,提供了集群资源利用率。
(2)读写互不干扰,单并发的写、读性能提升。
3、缺点
(1)相比普通的集群配置,当并发多查请求时,性能下降更厉害。假设集群有N台,则在多个请求过来的时候,可以理解集群有N台服务器能提供读服务;当使用这种架构的时候,则只有N/2台能提供服务,单台负载的请求数翻倍。
4、all

Windows 2016双机热备不需要共享存储,可以通过网络共享来实现。可以使用Windows Server 2016的内置热备功能,它可以将两台服务器上的数据同步,以便在一台服务器出现故障时,另一台服务器可以接管服务。此外,还可以使用第三方软件,如Veeam,来实现热备功能。Windows 2016双机热备不需要共享存储,可以通过网络共享来实现。可以使用Windows Server 2016的内置热备功能,它可以将两台服务器上的数据同步,以便在一台服务器出现故障时,另一台服务器可以接管服务。此外,还可以使用第三方软件,如Veeam,来实现热备功能。

Deployment是kubernetes在12版本中引入的新概念,用于更好的解决Pod的编排问题,为此,Deployment在内部使用了ReplicaSet来实现目的,我们可以把Deployment理解为ReplicaSet的一次升级,两者的相似度超过90%
Deployment的使用场景有以下几个:
1)创建一个Deployment对象来生成对应的ReplicaSet并完成Pod副本的创建
2)检查Deployment的状态来看部署动作是否完成(Pod副本数量是否达到了预期的值)
3)更新Deployment以创建新的Pod(比如镜像升级)
4)如果当前Deployment不稳定,可以回滚到一个早先的Deployment版本
5)暂停Deployment以便于一次性修改多个PodTemplateSpec的配置项,之后在恢复Deployment,进行新的发布
6)扩展Deployment以应对高负载
7)查看Deployment的状态,以此作为发布是否成功的标志
8)清理不在需要的旧版本ReplicaSet

可以通过kubectl命令行方式获取更加详细信息

除了API生命与Kind类型有区别,Deployment的定义与Replica Set的定义很类似。
controller/deploymentdemoyml

微服务部署:蓝绿部署、滚动部署、灰度发布、金丝雀发布。

Deployment控制器支持自定义控制更新过程中的滚动节奏,如“暂停(pause)”或“继续(resume)”更新 *** 作。比如等待第一批新的Pod资源创建完成后立即暂停更新过程,此时,仅存在一部分新版本的应用,主体部分还是旧的版本。然后,再筛选一小部分的用户请求路由到新版本的Pod应用,继续观察能否稳定地按期望的方式运行。确定没问题之后再继续完成余下的Pod资源滚动更新,否则立即回滚更新 *** 作。这就是所谓的金丝雀发布(Canary Release)

默认情况下,kubernetes 会在系统中保存前两次的 Deployment 的 rollout 历史记录,以便可以随时回退(您可以修改 revision history limit 来更改保存的revision数)。
注意: 只要 Deployment 的 rollout 被触发就会创建一个 revision。也就是说当且仅当
Deployment 的 Pod template(如 spectemplate )被更改,例如更新template 中的 label 和容器镜像时,就会创建出一个新的 revision。
其他的更新,比如扩容 Deployment 不会创建 revision——因此我们可以很方便的手动或者自动扩容。这意味着当您回退到历史 revision 时,只有 Deployment 中的 Pod template 部分才会回退。

kubectl rollout history deployment deploymentdemo1

kubectl rollout status deployment deploymentdemo1

Deployment 可以保证在升级时只有一定数量的 Pod 是 down 的。默认的,它会确保至少有比期望的Pod数量少
一个是up状态(最多一个不可用)
Deployment 同时也可以确保只创建出超过期望数量的一定数量的 Pod。默认的,它会确保最多比期望的Pod数
量多一个的 Pod 是 up 的(最多1个 surge )
Kuberentes 版本v1175中,从1-1变成25%-25%

Deployment为Pod和Replica Set(下一代Replication Controller)提供声明式更新。
只需要在 Deployment 中描述想要的目标状态是什么,Deployment controller 就会帮您将 Pod 和ReplicaSet 的实际状态改变到您的目标状态。也可以定义一个全新的 Deployment 来创建 ReplicaSet或者删除已有的 Deployment 并创建一个新的来替换。
Replicas(副本数量):
specreplicas 是可以选字段,指定期望的pod数量,默认是1。
Selector(选择器):
specselector是可选字段,用来指定 label selector ,圈定Deployment管理的pod范围。如果被指定, specselector 必须匹配 spectemplatemetadatalabels,否则它将被API拒绝。如果specselector 没有被指定, specselectormatchLabels 默认是spectemplatemetadatalabels。
在Pod的template跟spectemplate不同或者数量超过了specreplicas规定的数量的情况下,Deployment会杀掉label跟selector不同的Pod。
Pod Template(Pod模板):
spectemplate 是 spec中唯一要求的字段。
spectemplate 是 pod template 它跟 Pod有一模一样的schema,除了它是嵌套的并且不需要apiVersion 和 kind字段。
另外为了划分Pod的范围,Deployment中的pod template必须指定适当的label(不要跟其他controller重复了,参考selector)和适当的重启策略。
spectemplatespecrestartPolicy 可以设置为 Always , 如果不指定的话这就是默认配置。
strategy(更新策略):
specstrategy 指定新的Pod替换旧的Pod的策略。 specstrategytype 可以是"Recreate"或者是"RollingUpdate"。"RollingUpdate"是默认值。
Recreate:
重建式更新,就是删一个建一个。类似于ReplicaSet的更新方式,即首先删除现有的Pod对象,然后由控制器基于新模板重新创建新版本资源对象。
rollingUpdate:
滚动更新,简单定义 更新期间pod最多有几个等。可以指定 maxUnavailable 和 maxSurge 来控制 rolling update 进程。
maxSurge:
specstrategyrollingUpdatemaxSurge 是可选配置项,用来指定可以超过期望的Pod数量的最大个数。该值可以是一个绝对值(例如5)或者是期望的Pod数量的百分比(例如10%)。当 MaxUnavailable 为0时该值不可以为0。通过百分比计算的绝对值向上取整。默认值是1。
例如,该值设置成30%,启动rolling update后新的ReplicatSet将会立即扩容,新老Pod的总数不能超过期望的Pod数量的130%。旧的Pod被杀掉后,新的ReplicaSet将继续扩容,旧的ReplicaSet会进一步缩容,确保在升级的所有时刻所有的Pod数量和不会超过期望Pod数量的130%。
maxUnavailable:
specstrategyrollingUpdatemaxUnavailable 是可选配置项,用来指定在升级过程中不可用Pod的最大数量。该值可以是一个绝对值(例如5),也可以是期望Pod数量的百分比(例如10%)。通过计算百分比的绝对值向下取整。 如 果 specstrategyrollingUpdatemaxSurge 为0时,这个值不可以为0。默认值是1。
例如,该值设置成30%,启动rolling update后旧的ReplicatSet将会立即缩容到期望的Pod数量的70%。新的Pod ready后,随着新的ReplicaSet的扩容,旧的ReplicaSet会进一步缩容确保在升级的所有时刻可以用的Pod数量至少是期望Pod数量的70%。
rollbackTo:
specrollbackTo 是一个可以选配置项,用来配置Deployment回退的配置。设置该参数将触发回退 *** 作,每次回退完成后,该值就会被清除。
revision:
specrollbackTorevision 是一个可选配置项,用来指定回退到的revision。默认是0,意味着回退到上一个revision。
progressDeadlineSeconds:
specprogressDeadlineSeconds 是可选配置项,用来指定在系统报告Deployment的failed progressing一一表现为resource的状态中 type=Progressing 、 Status=False 、 Reason=ProgressDeadlineExceeded 前可以等待的Deployment进行的秒数。Deployment controller会继续重试该Deployment。未来,在实现了自动回滚后, deployment controller在观察到这种状态时就会自动回滚。
如果设置该参数,该值必须大于 specminReadySeconds 。
paused:
specpaused 是可以可选配置项,boolean值。用来指定暂停和恢复Deployment。Paused和没有paused的Deployment之间的唯一区别就是,所有对paused deployment中的PodTemplateSpec的修改都不会触发新的rollout。Deployment被创建之后默认是非paused。

在delphi中有一批数据库专用的控件,比如ADO类的,可以直接用于数据库开发,你可以先用一个Access数据库自己进行一下测试。
首先在窗体上放一个ADOConnection1控制,用于与Access数据库进行连接,连接字符串为: ADOConnection1ADOC_DataConne


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12635109.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-26
下一篇2025-08-26

发表评论

登录后才能评论

评论列表(0条)

    保存