MongoDB和MongoDB云数据库浅谈
作者:网络转载 发布时间:[ 2016/8/31 10:21:47 ] 推荐标签:数据库 MongoDB 云数据库
备份管理
在自建的MongoDB中,备份的管理往往也较为混乱,另外还需要额外的磁盘空间去存取备份文件。在MongoDB云数据库中,基本上各个云服务商都提供有成熟的备份策略,同样以UCloud举例,它可保存7次自动备份,3次手工备份,并根据自己的业务低峰期设置每天的定时备份时间段,还可以设置是否从secondary节点进行备份
监控和告警
自建MongoDB中,数据库本身的监控项一般通过脚本获取mongostat的结果实现,CPU,内存,磁盘使用率等监控项还需要额外再写脚本,并配置好相应的告警策略。使用MongoDB云数据库,可提供非常丰富的监控项和告警策略,及时地发现和处理性能瓶颈。
故障处理
使用MongoDB云数据库,当DB所在的物理机出现硬件故障或者DB本身出现性能问题时,一般公司都没有专业的MongoDB DBA,导致排查问题困难且耗时。而云计算厂商往往具备非常丰富的故障处理经验,可保障在短的时间内恢复服务。另外,虽然云数据库虽然禁止客户登陆DB所在的物理机,这在一定程度上限制了用户的操作自由度,不过一般云计算厂商比如UCloud可以提供错误日志下载等功能,方便客户去定位故障原因。
连接MongoDB副本集
如果MongoDB采用的是副本集方式,那么连接MongoDB时需要设置一个正确的连接url,这样后续Primary节点宕机才可以成功的进行漂移,一般副本集连接的url格式如下,一般包括账户,密码和各个节点的IP和端口。
client=MongoClient('mongodb://ucloudbackup:edFO09SkdU@10.9.57.241:27017,10.9.40.112:27017,10.9.35.45:27017')
MongoDB只支持在Primary节点上进行写操作,不过读操作可以有以下几种,客户可以根据自身业务需求选择合适的读取策略
primary:默认设置,所有的读操作都在Primary节点
primaryPreferred:优先读取Primary节点,Primary不可用的情况下读取Secondary节点
secondary:所有的读操作都读取Secondary节点
secondaryPreferred:优先读取Secondary节点,Secondary节点不可用的情况下读取Primary节点
nearest:读取网络延迟低的节点
迁移到云数据库
一般MongoDB的迁移上云的策略都是通过副本集的高可用性来实现,不过需要首先保证网络的连通性(这一点一般云计算厂商都会负责或协助打通)。通过将云DB作为自建DB的Secondary节点,当两边的数据达到完成一致,确认数据正常后,手工做一次高可用的切换,使得服务整理从自建DB切换到云DB。当切换完成后,云DB可成功选举成为新的Primary节点,这时即可在新的Primary节点上rs.remove移除自建DB节点,从而实现了MongoDB上云的平滑迁移。下面已自建的MongoDB是三个节点组成的副本集为例,现在想迁移到云上,步骤如下
1打通目标库和源库之间的网络,这一步不做详细讨论,简单地说,假如源库本身布置是在云服务商所在的云主机上,那么一般来说同一账户下的资源,网络已经是打通了的;假如是从其他IDC机房迁移到云MongoDB上,可以通过做一次代理的方式实现网络互通。
2建立源DB和目标DB的副本集,以源库作为主节点,目标库作为从节点,并将目标DB的IP添加到副本集连接字符串的url中,这里还需要注意的是保证账户鉴权方式的统一和副本集名称的统一。假设源DB为三个节点的副本集,现在想迁移到云上,那么需要做成的副本集结构图如下
MongoDB和MongoDB云数据库浅谈
3当数据完全一致后,人为地将旧主库关闭,并将Mongodb云数据库中的一个Secondary节点提升为新的Primary节点,提升完成后的结构图如下
4确认业务正常,数据没有问题后,在MongoDB云数据库的Primary节点中挨个删除自建DB的数据节点,并将连接url去掉之前源DB的IP和端口信息即可
另外,部分云计算厂商,比如UCloud已经推出完整的MongoDB数据库上云工具,用户可自行调用API即可实现MongoDB迁移到云数据库。
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。
相关推荐
在测试数据库性能时,需要注意哪些方面的内容?测试管理工具TC数据库报错的原因有哪些?怎么解决?数据库的三大范式以及五大约束编程常用的几种时间戳转换(java .net 数据库)优化mysql数据库的几个步骤数据库并行读取和写入之Python实现深入理解数据库(DB2)缓冲池(BufferPool)国内三大云数据库测试对比预警即预防:6大常见数据库安全漏洞数据库规划、设计与管理数据库-事务的概念SQL Server修改数据库物理文件存在位置使用PHP与SQL搭建可搜索的加密数据库用Python写一个NoSQL数据库详述 SQL 中的数据库操作详述 SQL 中的数据库操作Java面试准备:数据库MySQL性能优化
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11热门文章
常见的移动App Bug??崩溃的测试用例设计如何用Jmeter做压力测试QC使用说明APP压力测试入门教程移动app测试中的主要问题jenkins+testng+ant+webdriver持续集成测试使用JMeter进行HTTP负载测试Selenium 2.0 WebDriver 使用指南