云服务器内容精选

  • 操作步骤 进入快速购买文档数据库DDS页面。 在“购买数据库实例”页面,选择计费模式,填写并选择实例相关信息后,单击“立即购买”。 图1 基础配置 表1 基础配置 参数 描述 计费模式 选择“包年/包月”或“按需计费”。 包年/包月 用户选购完服务配置后,可以根据需要设置购买时长,系统会一次性按照购买价格对账户余额进行扣费。 创建成功后,如果包周期实例到期后不再长期使用资源,可将“包年/包月”实例转为“按需计费”,到期后将转为按需计费实例。具体请参见包年/包月转按需。 说明: “包年/包月”方式购买的实例不能直接删除,仅支持资源退订操作,如何退订资源请参见退订包周期实例。 按需计费 用户选购完服务配置后,无需设置购买时长,系统会根据消费时长对账户余额进行扣费。 创建成功后,如果需要长期使用资源,可将“按需计费”实例转为“包年/包月”,继续使用这些资源的同时,享受包周期的低资费。具体请参见按需计费实例转包周期。 区域 资源所在的区域。 说明: 不同区域的内网不互通,且购买后不能更换,请谨慎选择。 项目 当前区域对应的项目,可进行切换。 可用区 指在同一区域下,电力、网络隔离的物理区域,可用区内部网络互通,不同可用区之间物理隔离。 目前支持将实例部署在单可用区或3可用区。 如果业务要求实例之间的网络延时较低,则建议您选择单可用区,将实例的组件部署在同一个可用区内。实例选择单可用区部署时,会默认配置为反亲和部署。反亲和部署是出于高可用性考虑,将您的Primary、Secondary和Hidden节点分别创建在不同的物理机上。 如果业务需要较高的容灾能力,建议您选择3可用区。此时实例下的主节点、备节点和隐藏节点分别部署在3个可用区内。 说明: 目前3可用区的功能只针对部分区域开放,如果您在当前区域的管理控制台上没有看到3可用区,请切换至其他支持3可用区的区域进行购买。 实例类型 选择“副本集”。 副本集实例由主节点、备节点和隐藏节点组成。当主节点故障时,系统自动分配新的主节点;当备节点不可用时,隐藏节点接管服务,保证高可用。 兼容MongoDB版本 5.0 4.4 4.2 4.0 3.4 CPU类型 当前文档数据库实例的CPU架构支持x86和鲲鹏两种类型。 说明: MongoDB4.0、3.4版本可选,其他版本无需选择,默认X86。 x86 x86类型的CPU架构采用复杂指令集(CISC),CISC指令集的每个小指令可以执行一些较低阶的硬件操作,指令数目多而且复杂,每条指令的长度并不相同。由于指令执行较为复杂所以每条指令花费的时间较长。 鲲鹏 鲲鹏类型的CPU架构采用RISC精简指令集(RISC),RISC是一种执行较少类型计算机指令的微处理器,它能够以更快的速度执行操作,使计算机的结构更加简单合理地提高运行速度,相对于X86类型的CPU架构具有更加均衡的性能功耗比。 鲲鹏类型CPU架构的优势是高密度低功耗,可以提供更高的性价比,满足重载业务场景使用。 规格类型 x86 CPU架构下,针对不同的应用场景,可以选择不同的规格类型。 通用型(s6)。通用型的规格实例,适合平时不会持续高压力使用CPU,但偶尔需要提高计算性能完成工作负载的场景,包括但不限于:轻量级的Web服务器、开发、测试环境以及中低性能数据库等。 增强Ⅱ型(c6)。多项技术优化,计算性能强劲稳定,配套25GE(千兆以太网)智能高速网卡,提供超高网络带宽和PPS收发包能力。是高负载场景首选,对于计算与网络有更高性能要求的网站和Web应用、通用数据库及缓存服务器,中重载企业应用等更加适用。 推荐配置 目前支持中轻量级数据库规格及自定义规格。 说明: 存储空间最小10GB,最大5000GB。 图2 网络设置和购买时长与数量 表2 网络设置 参数 描述 虚拟私有云 文档数据库实例所在的 虚拟专用网络 ,可对不同业务进行网络隔离,方便地管理、配置内部网络,进行安全、快捷的网络变更。 您需要创建或选择所需的虚拟私有云。如何创建虚拟私有云,请参见《虚拟私有云用户指南》中的创建虚拟私有云和子网。所需虚拟私有云的使用限制请参见实例连接方式介绍。 如果不创建或没有可选的虚拟私有云,文档数据库服务默认为您分配资源。 说明: 实例创建完成后不支持切换虚拟私有云,请谨慎选择所属虚拟私有云。 企业项目 该参数针对企业用户使用,如需使用该功能,请联系客服申请开通。 企业项目是一种云资源管理方式,企业项目管理服务提供统一的云资源按项目管理,以及项目内的资源管理、成员管理。 请在下拉框中选择所在的企业项目,其中,default为默认项目。更多企业项目相关的信息,请参见《企业管理用户指南》的项目管理。 如果需要自定义企业项目,请在控制台右上角单击“企业”,进入“企业项目”页面创建,具体请参见《企业管理用户指南》中“创建企业项目”的内容。 表3 购买时长与数量 参数 描述 购买时长 选择所需的时长,系统会自动计算对应的配置费用。 自动续费 默认不勾选,不进行自动续费。 勾选后实例自动续费,自动续费周期与原订单周期一致。 购买数量 购买数量与副本集实例配额有关,所需购买数量超出实例配额时,可根据界面提示申请扩大配额。批量购买的“包年/包月”实例,除实例名称和实例ID外,其余配置信息一致。 在“规格确认”页面,核对实例信息。 包年/包月 如果需要修改,单击“上一步”,修改实例信息。 核对无误后,单击“去支付”,进入“付款”页面,选择支付方式,完成支付。 按需计费 如果需要修改,单击“上一步”,修改实例信息。 核对无误后,单击“提交”,开始创建实例。 单击“返回实例列表”。实例创建成功后,用户可以在“实例管理”页面,查看并管理自己的数据库实例。 创建实例过程中,实例运行状态显示为“创建中”,此过程约15分钟。创建完成的实例的运行状态显示为“正常”。 创建实例时,默认开启自动备份策略,后期可修改。创建成功后,文档数据库服务会自动创建一个全量备份。
  • 使用须知 账户余额大于等于0元,才可恢复到新实例。 使用该功能需要具有相应的操作权限,您可联系客服人员进行申请。 目前4.0及以上版本的集群实例支持恢复到指定受限时间点。 开启自动备份策略和增量备份策略后,才允许恢复到指定受限时间点。 目前支持恢复到新实例和当前实例。 为了数据的安全性,增备恢复到指定时间点屏蔽了dropDatabase的操作。因此恢复后可能会存在残留空的库或view,用户可自行删除。 受限场景:rename操作,collmod操作,创建用户,删除用户,创建角色,删除角色,打开集群Shard ip,修改集群Shard ip密码,打开集群Config ip,修改集群Config ip密码,修改rwuser账号密码。当发生受限场景时,增备会停止,待下一次自动全备后,增备重启继续。 当全备和增备的时间窗发生重叠时,会优先保证全备任务的完成,因此对增备流程进行限制,使得小部分的恢复时间段不在可恢复时间窗中。 当oplog增量大于250GB/h的流量时,增量备份速度可能会无法跟上oplog操作日志产生速度,概率出现部分恢复时间点不可选的问题。
  • 使用限制 库表恢复与CPU及内存规格相关,恢复单表内数据到指定时间点,最大支持单条数据大小见表1。 库表级恢复失败时,可通过扩容规格或分批次进行库表时间点恢复。 表1 规格信息 CPU类型 规格类型 vCPU(个) 内存(GB) 单集合恢复最大支持单条数据大小 x86 通用型 2 4 400KB 2 8 800KB 4 8 1MB 4 16 1.3MB 8 16 1.3MB 8 32 2MB 增强Ⅱ型 1 8 400KB 2 8 800KB 2 16 800KB 4 16 1.3MB 4 32 1.3MB 8 32 2MB 8 64 3MB 16 64 4MB 16 128 7MB 32 128 7MB 32 256 10MB 64 256 10MB 64 512 16MB 鲲鹏 - 2 4 400KB - 2 8 800KB - 4 8 1MB - 4 16 1.3MB - 8 16 1.3MB - 8 32 2MB - 16 32 2MB - 16 64 4MB
  • 部署架构对比 单可用区 实例选择单可用区部署时,实例下的所有组件均部署在相同的可用区内。单可用区部署会默认配置为反亲和部署。反亲和部署是出于高可用性考虑,将Primary、Secondary和Hidden节点分别创建在不同的物理机上。 多可用区 实例选择多可用区部署时,实例下的组件分别部署在三个不同的可用区内,可实现跨可用区容灾部署能力。 dds mongos节点最少为两个,分别部署在两个可用区中,当增加第三个dds mongos节点时,默认部署在第三个可用区。 每个Shard节点中的Primary节点、Secondary节点与Hidden节点随机均衡的部署在三个可用区中。 图1 多可用区部署
  • 实例连接方式介绍 文档数据库服务提供使用内网和公网的连接方式。 表1 连接方式 连接方式 IP地址 使用场景 说明 DAS连接 无需使用IP地址 通过数据管理服务管理数据,具备友好的图形化界面,直接在控制台上进行可视化操作。可获得执行SQL、高级数据库管理、智能化运维等功能,做到易用、安全、智能地管理数据库。 文档数据库服务默认开通了DAS连接权限。 易用、安全、高级、智能。 推荐使用DAS连接。 内网连接 内网IP地址 系统默认提供内网IP地址。 当应用部署在弹性云服务器上,且该弹性云服务器与文档数据库实例处于同一区域,同一VPC时,建议使用内网IP地址连接文档数据库实例。 安全性高,可实现DDS的较好性能。 为了获得更快的传输速率和更高的安全性,建议您将应用迁移到与您的DDS实例在同一虚拟私有云子网内,使用内网连接。 公网连接 弹性公网IP 当应用部署在弹性云服务器上,且该弹性云服务器与文档数据库实例处于不同区域时,建议使用弹性公网IP连接文档数据库实例。 如果您使用华为云以外的设备(例如本地设备、其他云厂商服务器等)连接文档数据库实例,您可以使用弹性公网IP连接文档数据库实例。 降低安全性。 公网连接需要购买弹性公网IP,请参见弹性公网IP计费说明。 父主题: 连接集群实例
  • 相关常见问题 如果使用DAS登录DDS实例时,出现如下报错信息,请参考DAS连接DDS常见问题进行处理。 Command failed with error 18 (AuthenticationFailed): 'Authentication failed.' on server xxx.xxx.xx.xx:xxxx. The full response is { 'ok' : 0.0, 'errmsg' : "Authentication failed.", "code" : 18, "codeName" : "AuthenticationFailed" } 图1 登录失败 在实例列表的操作列单击“登录”时,无法跳转至DAS页面怎么办? 解决方法:请将您的浏览器设置为允许弹出窗口,然后重试。
  • 策略语法 给用户组选择策略时,单击策略下方的,可以查看策略的详细内容,以“DDS Administrator”为例,说明RBAC策略的语法。 图2 DDS Administrator策略 { "Version": "1.0", "Statement": [ { "Effect": "Allow", "Action": [ "DDS:DDS:*" ], "Resource": [ "DDS:*:*:instanceName:dds-*" ], } ], "Depends": [ { "catalog": "BASE", "display_name": "Server Administrator" }, { "catalog": "BASE", "display_name": "Tenant Guest" } ]} 表1 参数说明 参数 含义 值 Version 策略的版本 固定为“1.0”。 Statement Action 定义对DDS的具体操作。 格式为:服务名:资源类型:操作 "DDS:DDS:*",表示对DDS的所有操作,其中DDS为服务名称;“*”为通配符,表示对DDS资源可以执行所有操作。 Effect 定义Action中所包含的具体操作是否允许执行。 Allow:允许执行。 Deny:不允许执行。 Resource 定义资源粒度的鉴权 非必传,“DDS:*:*:instanceName:dds-*”表示对所有dds-开头的实例拥有配置的action权限,如果没有配置,那么默认拥有所有实例的权限 Depends catalog 依赖的策略的所属服务。 服务名称 例如:BASE display_name 依赖的策略的名称。 权限名称 例如:Server Administrator
  • 注意事项 跨区域备份仅支持部分区域,详情请参见下表。 表1 支持的备份区域 备份源区域 支持备份的目标区域 北京四 上海一、上海二、广州、贵阳一 上海一 乌兰察布一、北京四、广州、上海二、北京一 上海二 上海一、北京四、北京一、广州、乌兰察布一 深圳 上海一、广州、上海二、北京四 广州 上海一、上海二、北京一、北京四、乌兰察布一、贵阳一 北京一 上海一、北京四 东莞二零一 贵阳二零一 贵阳二零一 东莞二零一 香港 新加坡 新加坡 约翰内斯堡 约翰内斯堡 新加坡
  • 前提条件 连接数据库的弹性云服务器必须和DDS实例之间网络互通,可以使用curl命令连接DDS实例服务端的IP和端口号,测试网络连通性。 curl ip:port 返回“It looks like you are trying to access MongoDB over HTTP on the native driver port.”,说明网络互通。 如果开启SSL,需要在界面上下载根证书,并上传到弹性云服务器。
  • 使用须知 以下情况不可重置密码: 租户被冻结 创建中 重启中 节点扩容中 切换SSL中 修改端口号中 规格变更中 删除节点中 内核版本升级中 主备切换中 可用区迁移中 只读节点扩容中 开启操作保护的用户,在进行敏感操作时,通过进行二次认证再次确认您的身份,进一步提高账号安全性,有效保护您安全使用云产品。关于如何开启操作保护,具体请参考《 统一身份认证 服务用户指南》中敏感操作的内容。 修改密码可能会导致业务断连。
  • 迁移方案概览 DDS提供了多种数据迁移方案,可满足不同业务场景下的MongoDB数据库迁移。 表1 迁移方案 迁移场景 支持的迁移类型 文档链接 使用导出导入工具迁移数据 全量迁移 通过mongoexport和mongoimport工具迁移数据 通过mongodump和mongorestore工具迁移数据 其他云数据库MongoDB迁移至华为云DDS 全量+增量迁移 其他云数据库 MongoDB迁移至华为云DDS 本地自建MongoDB数据库迁移至华为云DDS 全量+增量迁移 本地自建MongoDB数据库迁移至华为云DDS E CS 自建MongoDB数据库迁移至华为云DDS 全量+增量迁移 ECS自建MongoDB数据库迁移至华为云DDS 华为云DDS迁移至用户端MongoDB数据库 全量+增量迁移 华为云DDS迁移至用户端MongoDB数据库 父主题: 数据迁移
  • 数据库连接 使用DDS时,可能会遇到因为Mongod/dds mongos的连接数满了,导致客户端无法连接的问题。在Mongod/dds mongos的服务端,收到一个新的连接由一个单独的线程来处理,每个线程配置了1MB的栈空间,当网络连接数太多时,过多的线程会导致上下文切换开销变大,同时内存开销也会上涨。 客户端连接数据库的时候,要计算业务一共有多少个客户端,每个客户端配置的连接池大小是多少,总的连接数不要超过当前实例能承受的最大连接数的80%。 客户端与数据库的连接应尽量保持相对稳定的状态,每秒新增连接数建议保持在10以下。 建议客户端的连接超时时间至少设置为最大业务执行时长的3倍。 对于副本集实例,客户端需要同时配置主备节点的IP地址;对于集群实例,至少配置两个dds mongos的IP地址。 DDS默认提供rwuser用户,使用rwuser用户登录时认证库必须是admin。
  • 前提条件 连接数据库的弹性云服务器必须和DDS实例之间网络互通,可以使用curl命令连接DDS实例服务端的IP和端口号,测试网络连通性。 curl ip:port 返回“It looks like you are trying to access MongoDB over HTTP on the native driver port.”,说明网络互通。 如果开启SSL,需要在界面上下载根证书,并上传到弹性云服务器。
  • 性能相关 规范 业务程序禁止执行全表扫描的查询。 执行查询时,只选择需要返回的字段,不需要的字段不要返回。从而减少网络和进程处理的负载,修改数据时,只修改变化需要修改的字段,不要整个对象直接存储全部修改。 避免使用$not。DDS并不会对缺失的数据进行索引,因此$not的查询条件将会要求在一个结果集中扫描所有记录。如果$not是唯一的查询条件,会对集合执行全表扫描。 用$and时把匹配最少结果的条件放在最前面,用$or时把匹配最多结果的条件放在最前面。 单个实例中,数据库的总的个数不要超过200个,总的集合个数不要超过500个。集合数量过多会导致内存压力变高,并且集合数量多会导致重启以及主备倒换性能变差,影响紧急情况下的高可用性能。 业务上线前,一定要对数据库进行性能压测,评估业务峰值场景下,对数据库的负载情况。 禁止同时执行大量并发事务,且长时间不提交。 业务正式上线前, 所有的查询类别,都应该先执行查询计划检查查询性能。 建议 每个连接在后台都是由一个单独线程处理,每个线程会分配1MB的栈内存。所以连接数不宜过多,否则会占用过多的内存。 使用连接池,避免频繁的建立连接和断开连接,否则会导致CPU过高。 减少磁盘读写:避免使用不必要的upsert命令,避免查询不必要的数据。 优化数据分布:对数据进行分片,同时分散热点数据,均衡地使用实例资源。如何进行数据分片,请参见设置数据分片。 减少锁冲突:避免对同一个Key过于频繁地操作。 减少锁等待:避免前台创建索引。 注意 开发过程中对集合的每一个操作都要通过执行explain()检查其执行计划,如: db.T_DeviceData.find({"deviceId":"ae4b5769-896f"}).explain(); db.T_DeviceData.find({"deviceId":"77557c2-31b4"}).explain("executionStats"); 对于查询而言,因为覆盖查询不需要读取文档,而是直接从索引中返回结果,这样的查询性能好,所以尽可能使用索引覆盖查询。如果explain()的输出显示indexOnly字段为真,则说明这个查询就被一个索引覆盖。 执行计划解析: 看执行时间:executionStats.executionStages.executionTimeMillisEstimate和executionStats.executionStages.inputStage. executionTimeMillisEstimate时间越短越好。 executionStats.executionTimeMillis表示执行计划选择和执行的所有时间。 executionStats.executionStages.executionTimeMillisEstimate表示执行计划的执行完成时间。 executionStats.executionStages.inputStage. executionTimeMillisEstimate表示执行计划下的子阶段执行完成时间。 看扫描条数:三个条目数相同为最佳。 executionStats. nReturned表示匹配查询条件的文档数。 executionStats .totalKeysExamined表示索引扫描条目数。 executionStats .totalDocsExamined表示文档扫描条目数。 看Stage状态,性能较好的Stage状态组合如下。 Fetch+IDHACK Fetch+ixscan Limit+(Fetch+ixscan) PROJECTION+ixscan 表1 状态说明 状态名称 描述 COLLSCAN 全表扫描 SORT 内存中进行排序 IDHACK 根据_id进行查询 TEXT 全文索引 COUNTSCAN 未用索引计数 FETCH 索引扫描 LIMIT 使用Limit限制返回数 SUBPLA 未用索引的$or查询阶段 PROJECTION 限定返回字段时stage的返回 COUNT_SCAN 使用索引计数
  • 连接代码 SSL开启 import sslfrom pymongo import MongoClientconn_urls="mongodb://rwuser:rwuserpassword@ip:port/{mydb}?authSource=admin"connection = MongoClient(conn_urls,connectTimeoutMS=5000,ssl=True, ssl_cert_reqs=ssl.CERT_REQUIRED,ssl_match_hostname=False,ssl_ca_certs=${path to certificate authority file})dbs = connection.database_names()print "connect database success! database names is %s" % dbs SSL关闭 import sslfrom pymongo import MongoClientconn_urls="mongodb://rwuser:rwuserpassword@ip:port/{mydb}?authSource=admin"connection = MongoClient(conn_urls,connectTimeoutMS=5000)dbs = connection.database_names()print "connect database success! database names is %s" % dbs