GaussDB(for Mongo)
文档版本 22
发布日期 2022-01-27
版权所有 © 华为技术有限公司 2022。 保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传 播。
商标声明
和其他华为商标均为华为技术有限公司的商标。
本文档提及的其他所有商标或注册商标,由各自的所有人拥有。
注意
您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或 特性可能不在您的购买或使用范围之内。除非合同另有约定,华为公司对本文档内容不做任何明示或暗示的声 明或保证。
由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,本文 档中的所有陈述、信息和建议不构成任何明示或暗示的担保。
目 录
1 引擎简介...1
1.1 什么是 GaussDB(for Mongo)... 1
1.2 兼容接口和版本...2
1.3 数据库实例规格...2
1.4 数据库实例状态...2
1.5 使用规范...3
1.5.1 命名规范... 3
1.5.2 索引规范... 3
1.5.3 数据库连接... 4
1.5.4 可靠性...4
1.5.5 数据库性能... 4
1.5.6 Cursor 使用规则... 6
2 快速入门...7
2.1 概述... 7
2.2 购买副本集实例 ... 8
2.3 连接副本集实例... 14
2.3.1 连接方式介绍... 14
2.3.2 通过内网连接副本集实例... 15
2.3.3 通过公网连接副本集实例... 22
2.3.3.1 通过 Robo 3T 工具连接副本集实例... 22
2.3.3.2 通过 MongoDB 客户端连接副本集实例...29
3 用户指南...36
3.1 权限管理... 36
3.1.1 创建用户并授权...36
3.1.2 自定义策略... 37
3.2 数据迁移... 39
3.2.1 迁移方案概览... 39
3.2.2 通过数据复制服务迁移数据... 39
3.2.3 通过 mongoexport 和 mongoimport 工具迁移数据... 40
3.2.4 通过 mongodump 和 mongorestore 工具迁移数据...43
3.3 实例生命周期...46
3.3.1 重启实例... 46
GaussDB(for Mongo) 目 录
3.3.2 删除实例... 48
3.3.3 实例回收站... 48
3.4 变更实例... 50
3.4.1 修改实例名称... 50
3.4.2 重置管理员密码...52
3.4.3 扩容磁盘... 53
3.4.4 变更实例的 CPU 和内存规格... 56
3.4.5 标签管理... 59
3.5 连接管理... 62
3.5.1 设置安全组规则...62
3.5.2 绑定弹性公网 IP ... 65
3.5.3 设置 SSL 数据加密... 67
3.5.4 修改数据库端口...69
3.5.5 修改实例安全组...70
3.5.6 跨网段访问配置...71
3.6 数据库命令... 73
3.6.1 支持与限制的命令... 73
3.7 备份与恢复... 79
3.7.1 备份概述... 79
3.7.2 管理自动备份... 80
3.7.3 管理手动备份... 84
3.7.4 恢复备份... 87
3.8 参数模板管理...90
3.8.1 创建参数模板... 90
3.8.2 编辑参数模板... 91
3.8.3 查看参数修改历史... 94
3.8.4 导出参数模板... 96
3.8.5 比较参数模板... 97
3.8.6 复制参数模板... 99
3.8.7 重置参数模板...101
3.8.8 应用参数模板...101
3.8.9 查看参数模板应用记录... 102
3.8.10 修改参数模板描述...103
3.8.11 删除参数模板... 103
3.9 监控与告警... 104
3.9.1 支持的监控指标... 104
3.9.2 设置告警规则...110
3.9.3 查看监控指标...111
3.10 审计... 112
3.10.1 支持审计的关键操作列表...113
3.10.2 查看追踪事件... 114
3.11 日志管理... 114
GaussDB(for Mongo) 目 录
3.11.1 慢日志... 115
3.11.2 错误日志... 116
3.12 计费管理... 117
3.12.1 实例续费... 117
3.12.2 按需计费实例转包周期... 119
3.12.3 包周期实例转按需计费... 121
3.12.4 退订包周期实例... 123
4 性能白皮书... 126
4.1 副本集... 126
4.1.1 测试方法... 126
4.1.2 测试数据... 128
5 常见问题... 130
5.1 产品咨询... 130
5.1.1 使用时要注意什么... 130
5.1.2 什么是实例可用性... 130
5.2 权限问题... 130
5.2.1 如何创建 GaussDB(for Mongo)只读用户... 130
5.3 计费相关... 137
5.3.1 GaussDB(for Mongo)包年/包月和按需计费模式有什么区别...137
5.3.2 GaussDB(for Mongo)支持包年/包月和按需计费模式相互转换吗...137
5.4 数据库使用... 137
5.4.1 如何在 GaussDB(for Mongo)中创建会话... 137
5.4.2 GaussDB(for Mongo)是否支持降低版本... 137
5.4.3 GaussDB(for Mongo)支持只读库吗...138
5.4.4 GaussDB(for Mongo)现在是否可以订阅 oplog...138
5.5 安装客户端... 138
5.5.1 如何安装 MongoDB 客户端... 138
5.5.2 如何安装 Robo 3T 工具... 139
5.6 数据库连接... 141
5.6.1 如何创建和连接弹性云服务器... 141
5.6.2 GaussDB(for Mongo)实例购买成功后是否支持更换 VPC... 141
5.7 备份与恢复... 142
5.7.1 实例能够保存多长时间的备份... 142
5.8 区域和可用区... 142
5.8.1 什么是可用区,如何选择可用区... 142
5.8.2 如何选择区域...142
5.8.3 不同的可用区是否影响内网互通... 142
5.8.4 GaussDB(for Mongo)购买成功后是否支持更换区域... 143
A 修订记录... 144
GaussDB(for Mongo) 目 录
1 引擎简介
1.1 什么是 GaussDB(for Mongo)
GaussDB(for Mongo)是一款兼容MongoDB生态的云原生NoSQL数据库,具有企业级 性能、灵活弹性、高可靠、可视化管理等特点。
● 企业级性能
开源3倍性能提升,支持7*24小时在线数据实时写入,具备高可用和读写负载均衡 能力。
● 灵活弹性
基于计算存储分离的分布式架构,实现分钟级计算节点扩容和秒级存储扩容,扩 容过程不干扰线上业务。
● 极致可靠
– 通过VPC、子网、安全组、SSL加密传输以及细粒度权限控制等多层安全防护 体系,保护数据库和用户隐私。
– 支持跨三个可用区部署,快速备份和恢复。
– 分布式架构,最高N-1个节点故障容忍。
● 可视化管理
可视化实例管理平台对实例创建删除、备份恢复、监控报警、节点扩缩容等实现 一键式便捷操作。
典型应用
游戏场景
兼容MongoDB协议,游戏应用可以将一些游戏数据,如用户装备、用户积分等存储其 中。游戏玩家活跃高峰期,对并发能力要求较高,可以快速灵活添加计算节点以应对 高并发场景。
优势:
● 灵活
游戏开服6小时内需多次扩容,GaussDB(for Mongo)计算节点增加,扩容性能倍 数提升,可灵活轻松应对。
GaussDB(for Mongo) 1 引擎简介
● 数据恢复快
表级时间点恢复,支持游戏快速回档。
● 稳定扩容
扩容期间性能稳定,不影响游戏体验。
1.2 兼容接口和版本
介绍GaussDB(for Mongo)目前支持的兼容接口和版本。
表1-1 兼容接口和版本
兼容接口 实例类型 版本
MongoDB 副本集 4.0
1.3 数据库实例规格
同一实例类型根据内存的配置不同分为多种实例规格,针对不同的应用场景,您可以 选择不同规格的实例。
本章节主要介绍GaussDB(for Mongo)实例支持的实例规格信息。数据库实例规格与所 选的CPU机型相关,请以实际环境为准。
GaussDB(for Mongo)实例当前支持副本集类型的实例,分别支持不同的实例规格。
副本集实例规格
表1-2 GaussDB(for Mongo)副本集实例规格
规格名称 vCPU
(个)
内存(GB) 最小存储 空间(GB)
最大存储 空间(GB)
缺省最大 连接数配 置 geminidb.mongodb.re
pset.xlarge.4 4 16 100 1200 1000 geminidb.mongodb.re
pset.2xlarge.4 8 32 100 2400 4000 geminidb.mongodb.re
pset.4xlarge.4 16 64 100 4800 8000 geminidb.mongodb.re
pset.8xlarge.4 32 128 100 9600 16000
1.4 数据库实例状态
数据库实例状态是数据库实例的运行情况。可以通过管理控制台查看数据库实例状 态。
GaussDB(for Mongo) 1 引擎简介
表1-3 实例状态
状态 说明
正常 数据库实例正常和可用。
异常 数据库实例不可用。
创建中 正在创建数据库实例。
创建失败 数据库实例创建失败。
重启中 正在重启数据库实例。
重置密码中 正在重置管理员密码。
节点扩容中 正在扩容该实例下的节点个数。
节点缩容中 正在删除该实例下的节点。
存储扩容中 正在扩容实例的磁盘容量。
规格变更中 正在变更实例的CPU和内存规格。
备份中 正在创建数据库备份。
恢复检查中 该实例下的备份正在恢复到新实例。
SSL切换中 正在开启或关闭SSL安全连接。
冻结 账户余额小于或等于0元,系统对该用户下的实例进行冻结。您 需前往费用中心充值成功,欠款核销后,冻结的实例才会解冻。
解冻中 欠款核销后,正在解冻数据库实例。
1.5 使用规范
1.5.1 命名规范
● 数据库对象(库、表、字段、索引)命名建议全部使用小写字母开头,后面跟字 母或者数字,长度不要超过32字节。
● 数据库名称不能使用特殊字符("",.,$,\,/,\0,*,?,~,#,:,?,|"),数据库名称不能使用系统 数据库名,如:admin,local,config。
● 数据库集合名称建议使用字母和下划线组合,不能以system为前缀,<数据库名
>.<集合名称> 总长度不超过120字符。
1.5.2 索引规范
● 索引字段的长度不能超过512字节,索引名称长度不能超过64字符,单个复合索 引所包含字段数最多不能超过16个。
● <数据库名>.<集合名>.$<索引名>的总长度不能超过128字符。
● 在高选择性字段上创建索引,在低选择性字段上查询时会返回较大的结果集,请 尽量避免返回较大的结果集。
GaussDB(for Mongo) 1 引擎简介
● 对集合的写操作同时会操作集合上的索引,从而触发更多的IO操作,集合上的索 引数量不要超过32。
● 不要创建不会被使用到的索引,因为GaussDB(for Mongo)会加载索引到内存,无 用索引加载到内存会浪费内存空间因业务逻辑变化而产生的无用索引也要及时清 理。
● 索引创建必现使用后台创建索引,禁止前台创建索引。
● 业务中查询,排序条件的key一定要创建索引,如果建立的是复合索引,索引的字 段顺序要和这些关键字后面的字段顺序一致,否则索引不会被使用。
● 不要基于复合索引的靠前字段再创建索引。复合索引可以被用于一个索引中主要 字段的查询。例如,一个基于firstname和lastname的复合索引可以用于在 fistname上的查询,这样,基于firstname的索引是不必要的。
● 索引创建的过程,耗时长短和数据量有关,建议提前设计创索引。
● 索引创建进度,可以通过db.currentOp命令返回结果(关键字:createIndexes)
查看。
1.5.3 数据库连接
使用GaussDB(for Mongo)时,可能会遇到因为mongod连接数用满了,导致客户端无 法连接的问题。mongod的服务模型是每个网络连接由一个单独的线程来处理,每个线 程配置了1MB的栈空间,当网络连接数太多时,过多的线程会导致上下文切换开销变 大,同时内存开销也会上涨。
● 客户端使用GaussDB(for Mongo)驱动连接数据库的时候,一定要配置连接池,连 接池大小最大不要超过200。
● 客户端使用GaussDB(for Mongo)驱动连接数据库的时候,要计算业务一共有多少 个客户端, 每个客户端配置的连接池大小是多少,总的连接数不要超过当前实例 能承受的最大连接数的80%。
● 对于副本集,客户端需要同时配置主备节点的IP地址。
● GaussDB(for Mongo)默认提供rwuser用户,使用rwuser登录时认证库必须是 admin。
1.5.4 可靠性
● write concern设置规则
对于关键业务,write concern设置为{w:n},n>0,数字越大,一致性实现更好,但 性能较差。
– w:1表示实际写入主节点完成返回。
– w:1,journal:true表示写主节点和日志后返回。
– w:majority 表示大多数从节点写入后返回。
● 对于可靠性有较高要求的,建议采用3AZ部署的副本集。
1.5.5 数据库性能
● 业务禁止出现任何全表扫描的查询。
● 执行查询时,只选择需要返回的字段,不需要的字段不要返回。从而减少网络和 进程处理的负载,修改数据时,只修改变化需要修改的字段,不要整个对象直接 存储全部修改。
GaussDB(for Mongo) 1 引擎简介
● 避免使用$not。GaussDB(for Mongo)并不会对缺失的数据进行索引,因此$not 的查询条件将会要求在一个结果集中扫描所有记录。如果$not是唯一的查询条 件,会对集合进行全表扫描。
● 用$and时把匹配最少结果的条件放在最前面,用$or时把匹配最多结果的条件放在 最前面。
● 单个实例中,数据库的总的个数不要超过200个,总的集合个数不要超过500个。
● 业务上线前,一定要对数据库进行性能压测,评估业务峰值场景下,对数据库的 负载情况。
● 禁止同时执行大量并发事务,且长时间不提交。
● 业务正式上线前, 所有的查询类别,都应该先执行查询计划检查查询性能。
开发过程中,对集合的每一个操作都要通过执行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+ixscanGaussDB(for Mongo) 1 引擎简介
表1-4 状态说明
状态名称 描述
COLLSCAN 全表扫描
SORT 内存中进行排序
IDHACK 根据_id进行查询
TEXT 全文索引
COUNTSCAN 未用索引计数
FETCH 索引扫描
LIMIT 使用Limit限制返回数
SUBPLA 未用索引的$or查询阶段
PROJECTION 使用索引计数
COUNT_SCAN 使用索引计数
1.5.6 Cursor 使用规则
cursor不使用了要立即关闭,MongoDB cursor在10分钟内不活动,就会关闭。立即手 动关闭节省资源。
GaussDB(for Mongo) 1 引擎简介
2 快速入门
2.1 概述
快速入门主要介绍如何购买实例以及连接实例,使用户能够了解从购买实例到连接并 管理实例的流程。
流程图
图2-1 操作流程图
操作步骤
通常,从购买实例到开始使用实例,您需要完成如下操作。
步骤一:登录云数据库 GaussDB(for Mongo)控制台。
步骤二:购买实例。
步骤三:连接实例。
GaussDB(for Mongo) 2 快速入门
2.2 购买副本集实例
本章介绍在云数据库 GaussDB NoSQL管理控制台购买兼容MongoDB接口的副本集数 据库实例。您可以根据业务需要,定制相应计算能力和存储空间的副本集实例。
每个租户下GaussDB(for Mongo)实例的默认总配额为50。如需申请扩大配额,请联 系客服申请。
前提条件
● 已注册华为云帐号。
● 账户余额大于或等于0元。
操作步骤
步骤1 登录管理控制台。
步骤2 在服务列表中选择“数据库 > 云数据库 GaussDB(for Mongo)”。
图2-2 登录云数据库 GaussDB(for Mongo)控制台
步骤3 在“实例管理”页面,单击“购买数据库实例”。
步骤4 在“服务选型”页面,选择计费方式,填写并选择实例相关信息后,单击“立即购 买”。
图2-3 计费方式和基本信息
GaussDB(for Mongo) 2 快速入门
表2-1 计费方式
参数 描述
计费模式 选择“包年包月”或“按需计费”。
● 包年包月
– 用户选购完服务配置后,可以根据需要设置购买时长,系 统会一次性按照购买价格对账户余额进行扣费。
– 创建成功后,如果包周期实例到期后不再长期使用资源,
可将“包年/包月”实例转为“按需计费”,到期后将转为 按需计费实例。具体请参见包周期实例转按需计费。
说明“包年/包月”方式购买的实例不能直接删除,仅支持资源退订操 作,如何退订资源请参见退订包周期实例。
● 按需计费
– 用户选购完服务配置后,无需设置购买时长,系统会根据 消费时长对账户余额进行扣费。
– 创建成功后,如果需要长期使用资源,可将“按需计费”
实例转为“包年/包月”,继续使用这些资源的同时,享受 包周期的低资费。具体请参见按需计费实例转包周期。
表2-2 基本信息
参数 描述
区域 租户所在的区域。
须知
请就近选择靠近您业务的区域,可减少网络时延,提高访问速度。不同区域内 的产品内网不互通,且购买后不能更换,请谨慎选择。
实例名称 设置实例名称时,需要满足如下规则。
● 实例名称允许和已有名称重复。
● 实例名称不包含中文时,长度范围为4~64位,包含中文时,长度 为4~20位。
● 必须以中文或字母开头(A~Z或a~z),区分大小写,可以包含中 文、字母、数字(0~9)、中划线(-)或者下划线(_),不能包 含其他特殊字符。
创建成功后,可修改实例名称,请参见修改实例名称。
兼容接口 MongoDB 实例类型 副本集 版本 4.0
GaussDB(for Mongo) 2 快速入门
参数 描述
可用区 指在同一区域下,电力、网络隔离的物理区域,可用区之间内网互 通,不同可用区之间物理隔离。
目前支持将实例部署在单可用区或3可用区。
● 若实例只需要部署在单可用区,请选择1个可用区。
● 若实例需要实现跨可用区容灾部署时,请选择3可用区,此时实例 下的节点Hash均衡部署在3个可用区内。
图2-4 规格与存储
表2-3 规格与存储
参数 描述
性能规格 实例的CPU和内存。
不同性能规格对应不同连接数和最大IOPS,请根据不同的CPU与内 存配比,选取符合业务类型的性能规格。
存储空间 不同的性能规格对应的存储空间不同,存储空间最小为100GB,用 户选择容量大小必须为整数。
图2-5 网络和数据库配置
GaussDB(for Mongo) 2 快速入门
表2-4 网络
参数 描述
虚拟私有云 实例所在的虚拟专用网络,可以对不同业务进行网络隔离。您可 根据需要创建或选择所需的虚拟私有云。
如何创建虚拟私有云,请参见《虚拟私有云用户指南》中的“创 建虚拟私有云基本信息及默认子网”。
如果没有可用的VPC,系统自动为您分配资源。
说明
● 目前GaussDB(for Mongo)实例创建完成后不支持切换虚拟私有云 VPC,请谨慎选择所属虚拟私有云。
● 如需与ECS进行内网通信,GaussDB(for Mongo)实例与需要通信的ECS 需要处于同一个虚拟私有云下,或者不同虚拟私有云之间配置对等连 接。
子网 通过子网提供与其他网络隔离的、可以独享的网络资源,以提高 网络安全。
说明目前不支持选择IPV6网段的子网,建议您在使用时创建并选择IPV4网段的 子网。
内网安全组 安全组限制安全访问规则,加强GaussDB(for Mongo)与其他服务 间的安全访问。请确保所选取的安全组允许客户端访问数据库实 例。
如果没有可用的安全组,系统自动为您分配资源。
SSL安全连接 SSL证书是一种遵守SSL协议的服务器数字证书,能在客户端和服 务器端之间建立加密通道,保证数据在传输过程中不被窃取或篡 改。
您可以开启SSL连接,提高数据安全性,实例创建成功后,通过 SSL的方式连接实例。
说明
● 该功能目前为公测阶段,如需使用,请联系客服申请开通。
● 如果您在创建实例时未开启SSL安全连接,可以待实例创建成功后开 启,操作详情请参见设置SSL数据加密。
GaussDB(for Mongo) 2 快速入门
参数 描述 跨网段访问配
置
跨网段访问配置只有在客户端与副本集实例部署在不同网段的情 况下才需要配置,例如访问副本集的客户端所在的网段为
192.168.0.0/16,副本集所在的网段为172.16.0.0/24,则需要为副 本集实例添加客户端所在的网段192.168.0.0/16才能正常访问。
您可以选择创建实例时配置跨网段访问,也可以待实例创建成功 后配置。
● 现在设置
创建实例时,添加源端(如访问副本集实例的客户端)网段,
待实例创建成功后,可以在源端连接实例。
如果您需要配置多个源端网段,请单击 ,依次增加多个源 端网段,最多可支持配置9个网段,且网段之间不能重复。
说明
– 源端ECS连接实例的前提是与实例节点网络通信正常,如果网络不 通,可以参考对等连接进行相关配置。
● 创建后设置
暂不配置源端对应网段。实例创建成功后,如需配置,请参见 跨网段访问配置章节。
表2-5 数据库配置
参数 描述
管理员账户名 管理员账户名默认为rwuser。
管理员密码 用户设置的密码。
● 长度为8~32个字符。
● 必须是大写字母、小写字母、数字、特殊字符的组合,其中可 输入~!@#%^*-_=+?特殊字符。
● 系统会进行弱密码校验,安全起见,请输入高强度密码。
请妥善管理您的密码,因为系统将无法获取您的密码信息。
确认密码 必须和管理员密码一致。
参数模板 数据库参数模板就像是数据库引擎配置值的容器,参数模板中的 参数可应用于一个或多个相同类型的数据库实例。
实例创建成功后,您可以根据业务需要调整参数,具体请参见编 辑参数模板。
须知创建数据库实例时, 为确保数据库实例正常创建,自定义参数模板中如下 相关规格参数不会下发, 而是采用系统默认的推荐值。
replica.net.maxIncomingConnections
GaussDB(for Mongo) 2 快速入门
参数 描述
企业项目 该参数针对企业用户使用。
企业项目是一种云资源管理方式,企业项目管理服务提供统一的 云资源按项目管理,以及项目内的资源管理、成员管理,默认项 目为default。
请在下拉框中选择所在的企业项目。更多关于企业项目的信息,
请参见《企业管理用户指南》。
表2-6 标签
参数 描述
标签 可选配置,对GaussDB(for Mongo)的标识。使用标签可以方便识 别和管理您拥有的GaussDB(for Mongo)资源。每个实例默认最多 支持10个标签配额,如果你需要使用更多标签,可以联系客服申 请开通至20个标签配额。
标签由标签“键”和标签“值”组成。
● 键:如果要为数据库实例添加标签,该项为必选参数。
对于每个实例,每个标签的键唯一。长度不超过36个字符,只 能包含数字、英文字母、下划线、中划线和中文。
● 值:如果要为数据库实例添加标签,该项为可选参数。
长度不超过43个字符,只能包含数字、英文字母、下划线、小 数点、中划线和中文。
实例创建成功后,您可以单击实例名称,在“标签”页签下查看 对应标签。同时,支持为已有实例添加、修改、删除标签,具体 操作请参见标签管理。
表2-7 购买时长
参数 描述
购买时长 选择“包年/包月”方式的用户需要设置购买时长,最短为1个 月,最长为3年。
自动续费 ● 默认不勾选,不进行自动续费。
● 勾选后实例自动续费,自动续费周期与原订单周期一致。
表2-8 批量购买
参数 描述
购买数量 GaussDB(for Mongo)支持批量创建实例,且单次最多可批量申请 50个数据库实例。
GaussDB(for Mongo) 2 快速入门
步骤5 在“订单详情确认”页面,核对实例信息。
● 包年/包月
– 如果需要修改,单击“上一步”,修改实例信息。
– 核对无误后,勾选协议,单击“去支付”,进入“付款”页面,选择支付方 式,完成支付。
● 按需计费
– 如果需要修改,单击“上一步”,修改实例信息。
– 核对无误后,勾选协议,单击“提交”,开始创建实例。
步骤6 在“实例管理”页面,您可以查看并管理实例。
● 实例创建过程中,运行状态显示为“创建中”,此过程约5~9分钟。
● 实例创建完成后,运行状态显示为“正常”。
如果页面长时间未刷新,您可以单击页面右上角的 刷新页面查看实例运行状 态。
● 创建实例时,系统默认开启自动备份策略。因此,实例创建成功后,系统会自动 创建一个全量备份。
----结束
2.3 连接副本集实例
2.3.1 连接方式介绍
GaussDB(for Mongo)副本集实例支持通过内网和公网的方式连接。
表2-9 连接方式
连接方式 使用场景 说明
内网连接 系统默认提供内网IP地址。
当应用部署在弹性云服务器上,且该弹性云 服务器与数据库实例处于同一区域、同一 VPC内时,建议使用内网IP通过弹性云服务 器连接数据库实例。
安全性高,可实现数据库 实例的较好性能。
公网连接 不能通过内网IP地址访问数据库实例时,使 用公网访问,建议单独绑定弹性公网IP连接 弹性云服务器(或公网主机)与数据库实 例。
● 降低安全性。
● 为了获得更快的传输 速率和更高的安全 性,建议您将应用迁 移到与您的数据库实 例在同一VPC子网 内,使用内网连接。
GaussDB(for Mongo) 2 快速入门
2.3.2 通过内网连接副本集实例
当应用部署在弹性云服务器上,且该弹性云服务器与数据库实例处于同一区域、同一 VPC内时,建议使用内网方式通过弹性云服务器连接数据库实例。
本章节详细介绍使用MongoDB客户端通过内网方式连接GaussDB(for Mongo)副本集 实例的过程。
操作系统使用场景:弹性云服务器的操作系统以Linux为例,本地使用的计算机系统以 Windows为例。
连接副本集实例的方式有SSL连接和非SSL连接两种方法,其中SSL连接通过了加密功 能,具有更高的安全性。为了提升数据在网络传输过程中的安全性,建议采用SSL方 式。
使用须知
● 目标实例必须与弹性云服务器在同一个虚拟私有云和子网内才能访问。
● 该弹性云服务器必须处于目标实例所属安全组允许访问的范围内。
– 如果目标实例所属安全组为默认安全组, 则无需设置安全组规则。
– 如果目标实例所属安全组非默认安全组,请查看安全组规则是否允许该弹性 云服务器访问。
如果安全组规则允许弹性云服务器访问,即可连接实例。
如果安全组规则不允许弹性云服务器访问,需要在实例安全组添加一条入方 向的访问规则。具体操作请参考设置安全组规则。
前提条件
1. 创建并登录弹性云服务器,请参见购买弹性云服务器和登录弹性云服务器。
2. 在弹性云服务器上,安装MongoDB客户端。
安装MongoDB客户端,请参见如何安装MongoDB客户端。
SSL 连接
须知
使用SSL方式连接,请务必开启SSL连接,否则会报错。关于如何开启SSL连接,请参见 设置SSL数据加密。
步骤1 登录管理控制台。
步骤2 在服务列表中选择“数据库 > 云数据库 GaussDB(for Mongo)”。
GaussDB(for Mongo) 2 快速入门
图2-6 登录云数据库 GaussDB(for Mongo)控制台
步骤3 在“实例管理”页面,单击实例名称。
步骤4 在左侧导航树,单击“连接管理”。
步骤5 在“基本信息”区域的“SSL”处,单击 ,下载根证书。
步骤6 上传根证书至需要连接实例的弹性云服务器。
根据客户端使用的计算机系统类型,选择相应的上传方法。
● Linux操作系统下,可参考如下命令:
scp<IDENTITY_FILE><REMOTE_USER>@<REMOTE_ADDRESS>:<REMOTE_DIR>
说明
– IDENTITY_FILE为存储根证书的文件目录,该文件目录权限为600。
– REMOTE_USER为弹性云服务器云主机的操作系统用户。
– REMOTE_ADDRESS为弹性云服务器云主机的主机地址。
– REMOTE_DIR为将根证书上传到弹性云服务器云主机的文件目录。
● Windows操作系统下,请使用远程连接工具上传根证书。
步骤7 连接数据库实例。
● 方式一:使用连接地址连接副本集实例(推荐)
GaussDB(for Mongo)控制台界面提供了连接地址,默认包含主节点、备节点、隐 藏节点的IP和端口。通过该方式连接实例,可同时访问副本集实例的主、备和隐 藏节点,避免在发生主备节点切换后,从客户端写入数据报错的情况。
命令格式:
./mongo "<连接地址>" --ssl --sslCAFile<FILE_PATH> -- sslAllowInvalidHostnames
GaussDB(for Mongo) 2 快速入门
表2-10 参数说明
参数 说明
<连接地址> 待连接实例的连接地址。
您可以在实例管理页面,单击目标实例名称,进入基本 信息页面。在“连接管理”页面获取内网连接地址。
图2-7 获取内网地址
– 其中,*****需要替换为数据库帐号对应的密码。
如果密码中包含特殊字符“@”、“!”和“%”需要 分别替换为对应的十六进制的URL编码(ASSCII码)
“%40”、“%21”和“%25”。
例如:密码为****@%***!,对应的URL编码为****
%40%25***%21。
– “replicaSet=replica”中的“replica”是副本集的名 称。华为云GaussDB(for Mongo)副本集统一固定为 该名称且不可改变。
<FILE_PATH> 存放根证书的路径。
示例:
./mongo "mongodb://rwuser:****@192.168.0.252:8635,192.168.0.31:8635/
test?authSource=admin&replicaSet=replica" --ssl --sslCAFile/tmp/ca.crt -- sslAllowInvalidHostnames
说明
– 为了保证副本集内部通讯不占用用户IP带宽等资源,副本集证书使用内部管理IP生成。
通过内网SSL连接副本集实例时,需要添加“--sslAllowInvalidHostnames”。
– 通过内网地址连接实例时,需要在连接信息前后添加英文双引号。
返回如下信息,表示实例已连接成功:
replica:PRIMARY>
● 方式二:单个节点连接 命令格式:
./mongo --host <DB_HOST> --port <DB_PORT> -u <DB_USER> -p -- authenticationDatabase admin --ssl --sslCAFile<FILE_PATH> -- sslAllowInvalidHostnames
出现如下提示时,输入数据库帐号对应的密码:
Enter password:
GaussDB(for Mongo) 2 快速入门
表2-11 参数说明
参数 说明
<DB_HOST> 待连接实例主节点或备节点的内网IP。
主节点:即Primary节点,连接该节点后可执行数据的读写 操作。
备节点:即Secondary节点,连接该节点后仅可执行数据的 读操作。
您可以在实例管理页面,单击目标实例名称,进入基本信息 页面。在“连接管理 > ”页签下获取对应节点的内网IP。
图2-8 获取节点 IP
您也可以单击实例名称,在“基本信息 > 节点信息”处获 取对应节点的内网IP。
图2-9 获取内网 IP
<DB_PORT> 数据库端口。
<DB_USER> 数据库帐号,默认为rwuser。
<FILE_PATH> 存放根证书的路径。
示例:
./mongo --host 192.168.0.31 --port 8635 -u rwuser -p -- authenticationDatabase admin --ssl --sslCAFile /tmp/ca.crt -- sslAllowInvalidHostnames
返回如下信息,表示已成功连接对应的节点:
– 针对副本集主节点的连接结果:
replica:PRIMARY>
– 针对副本集备节点的连接结果:
GaussDB(for Mongo) 2 快速入门
replica:SECONDARY>
----结束
非 SSL 连接
须知
使用非SSL方式连接,请务必关闭SSL连接,否则会报错。关于如何关闭SSL连接,请参 见设置SSL数据加密。
步骤1 连接弹性云服务器。
步骤2 在客户端工具mongo所在的目录下,连接数据库实例。
● 使用连接地址连接副本集实例(推荐)
GaussDB(for Mongo)控制台界面提供了连接地址,默认包含主节点、备节点、隐 藏节点的IP和端口。通过该方式连接实例,可同时访问副本集实例的主、备和隐 藏节点,避免在发生主备节点切换后,从客户端写入数据报错的情况。
命令格式:
./mongo "<连接地址>"
GaussDB(for Mongo) 2 快速入门
表2-12 参数说明 参数名称 说明
<连接地址> 您可以通过如下方式获取连接地址:
单击实例名称,进入基本信息页面,在页面下方“网络信息 >
连接地址”处获取当前实例的连接地址。
图2-10 基本信息页面获取连接地址
或者您也可以单击实例名称,进入基本信息页面,单击左侧导航 栏中的“连接管理”,在连接管理页面获取当前实例的连接地 址。
图2-11 连接管理页面获取连接地址
– 其中,*****需要替换为数据库帐号对应的密码。
如果密码中包含特殊字符“@”、“!”和“%”需要分别替 换为对应的十六进制的URL编码(ASSCII码)“%40”、
“%21”和“%25”。
例如:密码为****@%***!,对应的URL编码为****%40%25***
%21。
– “replicaSet=replica”中的“replica”是副本集的名称。华 为云GaussDB(for Mongo)副本集统一固定为该名称且不可改 变。
示例如下:
./mongo "mongodb://
rwuser:****@192.168.0.196:8635,192.168.0.67:8635,192.168.0.32:8635/test?
authSource=admin&replicaSet=replica"
出现如下信息,说明连接成功。
replica:PRIMARY>
● 连接单个节点
您也可以通过连接指定节点的内网IP,访问单个节点。
GaussDB(for Mongo) 2 快速入门
命令格式:
./mongo --host <DB_HOST> --port <DB_PORT> -u <DB_USER> -p -- authenticationDatabase admin
表2-13 参数说明
参数 说明
<DB_HOST> 待连接实例主节点或备节点的内网IP。
– 主节点:即Primary节点,连接该节点后可执行数据的读 写操作。
– 备节点:即Secondary节点,连接该节点后仅可执行数据 的读操作。
您可以在实例管理页面,单击目标实例名称,进入基本信息 页面。在页面下方节点信息列表中获取对应节点的内网IP。
图2-12 基本信息页面获取内网 IP
或者您也可以单击实例名称,进入基本信息页面,单击左侧 导航栏中的“连接管理”,在连接管理页面获取对应节点的 内网IP。
图2-13 连接管理页面获取内网 IP
<DB_PORT> 数据库端口。
<DB_USER> 数据库帐号,默认为rwuser。
出现如下提示时,输入数据库帐号对应的密码:
Enter password:
示例:
./mongo --host 192.168.1.6 --port 8635 -u rwuser -p -- authenticationDatabase admin
GaussDB(for Mongo) 2 快速入门
返回如下信息,表示对应的节点已经连接成功:
针对副本集主节点的连接结果:
replica:PRIMARY>
针对副本集备节点的连接结果:
replica:SECONDARY>
----结束
2.3.3 通过公网连接副本集实例
2.3.3.1 通过 Robo 3T 工具连接副本集实例
当需要使用本地设备连接文档数据库实例时,您可以为目标实例绑定弹性公网IP弹性 IP,使用Robo 3T工具以公网的方式连接文档数据库实例。
本章节介绍使用Robo 3T工具,通过公网方式连接副本集实例的过程。
操作系统使用场景:本地使用的计算机系统以Windows为例。
通过Robo 3T工具连接实例的方式有SSL连接和非SSL连接两种,其中SSL连接通过了加 密功能,具有更高的安全性。为了提升数据在网络传输过程中的安全性,建议采用SSL 方式。
前提条件
1. 副本集实例需要绑定弹性公网IP并设置安全组规则,请分别参见绑定弹性公网IP 和设置安全组规则,确保可以通过Robo 3T工具访问弹性公网IP。
2. 安装Robo 3T工具。
安装方法请参见如何安装Robo 3T工具。
SSL 方式
须知
使用SSL方式连接,请务必开启SSL连接,否则会报错。关于如何开启SSL连接,请参见 设置SSL数据加密。
步骤1 获取副本集实例的弹性公网IP和端口信息。
说明
主节点:即Primary节点,连接该节点后可执行数据的读写操作。
备节点:即Secondary节点,连接该节点后仅可执行数据的读操作。
● 您可以单击实例名称,进入基本信息页面。分别在页面下方“网络信息 > 数据库 端口”和“节点信息”列表中,获取端口信息和绑定的弹性公网地址。
GaussDB(for Mongo) 2 快速入门
图2-14 获取连接信息
● 您也可以单击实例名称,在基本信息页面,单击左侧导航栏中的连接管理,在连 接管理信息页面获取对应的端口号和弹性公网IP。
图2-15 查看弹性公网 IP
步骤2 打开Robo 3T工具,在连接信息页面,单击“Create”。
图2-16 连接信息
步骤3 在弹出的“Connection Settings”窗口,设置新建连接的参数。
1. 在“Connection”页签,“Name”填写自定义的新建连接的名称,“Address”
填写副本集实例绑定的弹性IP和实例的数据库端口。
GaussDB(for Mongo) 2 快速入门
图2-17 Connection
2. 在“Authentication”页签,“Database”填写admin,“User Name”填写 rwuser,“Password”填写您创建副本集实例时设置的管理员密码。
图2-18 Authentication
3. 在“TLS”页签,勾选“Use TLS protocol”,“Authentication Method”选择
“Use CA Certificate”,并上传已获取的SSL证书。
GaussDB(for Mongo) 2 快速入门
图2-19 SSL
4. 设置完成后,单击“Save”。
步骤4 在连接信息页面,单击“Connect”,开始连接副本集实例。
图2-20 副本集连接信息
步骤5 成功连接副本集实例,工具界面显示下图所示。
GaussDB(for Mongo) 2 快速入门
图2-21 副本集连接成功
----结束
非 SSL 连接
须知
使用非SSL方式连接,请务必关闭SSL连接,否则会出现报错。如何关闭,请参见设置 SSL数据加密。
步骤1 获取副本集实例的弹性公网IP和端口信息。
说明
主节点:即Primary节点,连接该节点后可执行数据的读写操作。
备节点:即Secondary节点,连接该节点后仅可执行数据的读操作。
● 您可以单击实例名称,进入基本信息页面。分别在页面下方“网络信息 > 数据库 端口”和“节点信息”列表中,获取端口信息和绑定的弹性公网地址。
图2-22 获取连接信息
● 您也可以单击实例名称,在基本信息页面,单击左侧导航栏中的连接管理,在连 接管理信息页面获取对应的端口号和弹性公网IP。
GaussDB(for Mongo) 2 快速入门
图2-23 查看弹性公网 IP
步骤2 打开Robo 3T工具,在连接信息页面,单击“Create”。
图2-24 连接信息
步骤3 在弹出的“Connection Settings”窗口,设置新建连接的参数。
1. 在“Connection”页签,“Name”填写自定义的新建连接的名称,“Address”
填写步骤1获取到的副本集实例端口和弹性公网IP。
GaussDB(for Mongo) 2 快速入门
图2-25 Connection
2. 在“Authentication”页签,“Database”填写admin,“User Name”填写 rwuser,“Password”填写您创建副本集实例时设置的管理员密码。
图2-26 Authentication
3. 设置完成后,单击“Save”。
GaussDB(for Mongo) 2 快速入门
步骤4 在连接信息页面,单击“Connect”,开始连接副本集实例。
图2-27 连接信息
步骤5 成功连接副本集实例,工具界面显示如图2-28所示。
图2-28 连接成功
----结束
2.3.3.2 通过 MongoDB 客户端连接副本集实例
不能通过内网方式访问数据库实例时,可以使用公网访问,通过弹性公网IP连接数据 库实例。
本章节介绍使用MongoDB客户端,通过公网方式连接副本集实例的过程。
操作系统使用场景:弹性云服务器以Linux系统为例。
GaussDB(for Mongo) 2 快速入门
连接副本集实例的方式有SSL连接和非SSL连接两种方法,其中SSL连接通过了加密功 能,具有更高的安全性。为了提升数据在网络传输过程中的安全性,建议采用SSL方 式。
前提条件
1. 副本集实例需要绑定弹性公网IP并设置安全组规则,请分别参见绑定弹性公网IP 和设置安全组规则,确保可以通过弹性云服务器访问弹性公网IP。
2. 安装MongoDB客户端。
a. 创建并登录弹性云服务器,请参见购买弹性云服务器和登录弹性云服务器。
b. 在弹性云服务器上,安装MongoDB客户端。
安装MongoDB客户端的方法请参见如何安装MongoDB客户端。
SSL 连接
须知
使用SSL方式连接,请务必开启SSL连接,否则会报错。关于如何开启SSL连接,请参见 设置SSL数据加密。
步骤1 登录管理控制台。
步骤2 在服务列表中选择“数据库 > 云数据库 GaussDB(for Mongo)”。
图2-29 登录云数据库 GaussDB(for Mongo)控制台
步骤3 在“实例管理”页面,单击实例名称。
步骤4 在左侧导航树,单击“连接管理”。
步骤5 在“基本信息”区域的“SSL”处,单击 ,下载根证书。
步骤6 上传根证书至需要连接实例的弹性云服务器云主机。
根据客户端使用的计算机系统类型,选择相应的上传方法。
● Linux操作系统下,可参考如下命令:
scp<IDENTITY_FILE><REMOTE_USER>@<REMOTE_ADDRESS>:<REMOTE_DIR>
GaussDB(for Mongo) 2 快速入门
说明
– IDENTITY_FILE为存储根证书的文件目录,该文件目录权限为600。
– REMOTE_USER为的操作系统用户。
– REMOTE_ADDRESS为的主机地址。
– REMOTE_DIR为将根证书上传到的文件目录。
● Windows操作系统下,请使用远程连接工具上传根证书。
步骤7 在客户端工具mongo所在的目录下,连接数据库实例。
命令格式:
./mongo --host <DB_HOST> --port <DB_PORT> -u <DB_USER> -p -- authenticationDatabaseadmin --ssl --sslCAFile<FILE_PATH> -- sslAllowInvalidHostnames
出现如下提示时,输入数据库帐号对应的密码:
Enter password:
GaussDB(for Mongo) 2 快速入门
表2-14 参数说明
参数 说明
<DB_HOST> 待连接实例节点对应绑定的弹性公网IP。
主节点:即Primary节点,连接该节点后可执行数据的读写操 作。
备节点:即Secondary节点,连接该节点后仅可执行数据的读 操作。
您可以在实例管理页面,单击目标实例名称,进入基本信息页 面。在“连接管理”页签下获取对应节点的弹性公网IP。
图2-30 获取节点公网 IP
或者您也可以单击实例名称,在“基本信息 > 节点信息”区域 获取对应节点的弹性公网IP。
图2-31 查看弹性公网 IP
<DB_PORT> 数据库端口。
<DB_USER> 数据库帐号,默认为rwuser。
<FILE_PATH> 存放根证书的路径。
示例:
./mongo --host 192.168.1.6 --port 8635 -u rwuser -p --authenticationDatabase admin --ssl --sslCAFile /tmp/ca.crt --sslAllowInvalidHostnames
步骤8 检查连接结果。出现如下信息,说明连接成功。
● 针对副本集主节点的连接结果:
replica:PRIMARY>
● 针对副本集备节点的连接结果:
GaussDB(for Mongo) 2 快速入门
replica:SECONDARY>
----结束
非 SSL 连接
须知
使用非SSL方式连接,请务必关闭SSL连接,否则会报错。关于如何关闭SSL连接,请参 见设置SSL数据加密。
步骤1 连接弹性云服务器。
步骤2 连接GaussDB(for Mongo)实例。
命令格式:
./mongo --host <DB_HOST> --port <DB_PORT> -u <DB_USER> -p -- authenticationDatabase admin
GaussDB(for Mongo) 2 快速入门
表2-15 参数说明
参数 说明
<DB_HOST> 待连接实例主节点或备节点的弹性公网IP。
● 主节点:即Primary节点,连接该节点后可执行数据的读写 操作。
● 备节点:即Secondary节点,连接该节点后仅可执行数据的 读操作。
您可以在实例管理页面,单击目标实例名称,进入基本信息页 面。在页面下方节点信息列表中获取对应节点的弹性公网IP。
图2-32 基本信息页面获取弹性公网 IP
或者您也可以单击实例名称,进入基本信息页面,单击左侧导 航栏中的“连接管理”,在连接管理页面获取对应节点的弹性 公网IP。
图2-33 连接管理页面获取弹性公网 IP
<DB_PORT> 数据库端口。
<DB_USER> 数据库帐号,默认为rwuser。
出现如下提示时,输入数据库账号对应的密码:
Enter password:
示例如下:
./mongo --host 192.168.1.6 --port 8635 -u rwuser -p --authenticationDatabase admin
步骤3 出现如下信息,说明连接成功。
● 针对副本集主节点的连接结果:
replica:PRIMARY>
GaussDB(for Mongo) 2 快速入门
● 针对副本集备节点的连接结果:
replica:SECONDARY>
----结束
GaussDB(for Mongo) 2 快速入门
3 用户指南
3.1 权限管理
3.1.1 创建用户并授权
如果您需要对您所拥有的云数据库 GaussDB NoSQL进行精细的权限管理,您可以使 用统一身份认证服务(Identity and Access Management,简称IAM),通过IAM,
您可以:
● 根据企业的业务组织,在您的华为云账号中,给企业中不同职能部门的员工创建 IAM用户,让员工拥有唯一安全凭证,并使用云数据库 GaussDB NoSQL资源。
● 根据企业用户的职能,设置不同的访问权限,以达到用户之间的权限隔离。
● 将云数据库 GaussDB NoSQL资源委托给更专业、高效的其他华为云账号或者云 服务,这些账号或者云服务可以根据权限进行代运维。
如果华为云账号已经能满足您的要求,不需要创建独立的IAM用户,您可以跳过本章 节,不影响您使用云数据库 GaussDB NoSQL服务的其它功能。
本章节为您介绍对用户授权的方法,操作流程如图3-1所示。
前提条件
给用户组授权之前,请您了解用户组可以添加的云数据库 GaussDB NoSQL权限,并 结合实际需求进行选择,云数据库 GaussDB NoSQL支持的系统权限,请参见:云数 据库 GaussDB NoSQL系统权限。若您需要对除云数据库 GaussDB NoSQL之外的其 它服务授权,IAM支持服务的所有权限请参见权限策略。
GaussDB(for Mongo) 3 用户指南
示例流程
图3-1 给用户授权云数据库 GaussDB NoSQL 权限流程
1. 创建用户组并授权
在IAM控制台创建用户组,并授予云数据库 GaussDB NoSQL只读权限“GaussDB NoSQLReadOnlyAccess”。
2. 创建用户并加入用户组
在IAM控制台创建用户,并将其加入1中创建的用户组。
3. 用户登录并验证权限
新创建的用户登录控制台,切换至授权区域,验证权限:
– 在“服务列表”中选择云数据库 GaussDB NoSQL服务,进入云数据库 GaussDB NoSQL主界面,单击右上角“购买数据库实例”,尝试购买云数据 库 GaussDB NoSQL实例,如果无法购买云数据库 GaussDB NoSQL实例(假 设当前权限仅包含GaussDB NoSQLReadOnlyAccess),表示“GaussDB NoSQLReadOnlyAccess”已生效。
– 在“服务列表”中选择除云数据库 GaussDB NoSQL服务外(假设当前策略 仅包含GaussDB NoSQLReadOnlyAccess)的任一服务,若提示权限不足,
表示“GaussDB NoSQLReadOnlyAccess”已生效。
3.1.2 自定义策略
如果系统预置的云数据库 GaussDB NoSQL权限,不满足您的授权要求,可以创建自 定义策略。自定义策略中可以添加的授权项(Action)请参见云数据库GaussDB NoSQL服务授权项说明。
目前华为云支持以下两种方式创建自定义策略:
● 可视化视图创建自定义策略:无需了解策略语法,按可视化视图导航栏选择云服 务、操作、资源、条件等策略内容,可自动生成策略。
● JSON视图创建自定义策略:可以在选择策略模板后,根据具体需求编辑策略内 容;也可以直接在编辑框内编写JSON格式的策略内容。
GaussDB(for Mongo) 3 用户指南
具体创建步骤请参见:创建自定义策略。本章为您介绍常用的云数据库 GaussDB NoSQL自定义策略样例。
自定义策略样例
● 示例1:授权用户创建云数据库 GaussDB NoSQL实例 { "Version": "1.1",
"Statement": [ {
"Effect": "Allow", "Action": [
"nosql:instance:create"
] } ] }
● 示例2:拒绝用户删除云数据库 GaussDB NoSQL数据库实例
拒绝策略需要同时配合其他策略使用,否则没有实际作用。用户被授予的策略 中,一个授权项的作用如果同时存在Allow和Deny,则遵循Deny优先原则。
如果您给用户授予GaussDB NoSQLFullAccess的系统策略,但不希望用户拥有 GaussDB NoSQLFullAccess中定义的删除云数据库 GaussDB NoSQL实例权限,
您可以创建一条拒绝删除云数据库 GaussDB NoSQL实例的自定义策略,然后同 时将GaussDB NoSQLFullAccess和拒绝策略授予用户,根据Deny优先原则,则用 户可以对云数据库 GaussDB NoSQL执行除了删除云数据库 GaussDB NoSQL实例 外的所有操作。拒绝策略示例如下:
{ "Version": "1.1", "Statement": [ {
"Effect": "Deny"
"Action": [
"nosql:instance:delete"
], } ] }
● 示例3:多个授权项策略
一个自定义策略中可以包含多个授权项,且除了可以包含本服务的授权项外,还 可以包含其他服务的授权项,可以包含的其他服务必须跟本服务同属性,即都是 项目级服务或都是全局级服务。多个授权语句策略描述如下:
{ "Version": "1.1", "Statement": [ {
"Action": [
"nosql:instance:create", "nosql:instance:rename", "nosql:instance:delete", "vpc:publicIps:list", "vpc:publicIps:update"
],
"Effect": "Allow"
} ] }
GaussDB(for Mongo) 3 用户指南
3.2 数据迁移
3.2.1 迁移方案概览
GaussDB(for Mongo)提供了多种数据迁移方案,可满足不同业务场景下的MongoDB 数据库迁移。
表3-1 迁移方案
迁移场景 支持的迁移类
型 文档链接
使用导出导入工具迁移
MongoDB数据库 全量迁移 ● 通过mongoexport和 mongoimport工具迁移数据
● 通过mongodump和
mongorestore工具迁移数据 使用DRS服务迁移
MongoDB数据库 全量+增量迁 移
通过数据复制服务迁移数据
3.2.2 通过数据复制服务迁移数据
数据复制服务(Data Replication Service,简称DRS)支持在多种场景下,将源库数 据迁移到目标GaussDB(for Mongo)数据库实例,最大限度允许迁移过程中业务继续对 外提供使用,有效地将业务系统中断时间和业务影响最小化,完成数据库平滑迁移工 作。
迁移须知
● 使用数据复制服务将MongoDB迁移至GaussDB(for Mongo)的功能需要具有一定 的操作权限,如需使用请联系客服申请相关权限。
● 使用数据复制服务进行数据迁移前,为了提高数据迁移的稳定性和安全性,请先 阅读迁移须知和迁移准备。
迁移方案
DRS支持将MongoDB数据库迁移至华为云GaussDB(for Mongo),具体支持的源库类 型、版本及迁移模式如表3-2所示。
表3-2 迁移方案
源数据库类型 目标数据库类型 迁移模式
● 自建MongoDB 3.4、
4.0版本
● 其他云上MongoDB 3.4、4.0版本
华为云GaussDB(for
Mongo) 4.0版本 ● 全量迁移
● 全量+增量迁移
GaussDB(for Mongo) 3 用户指南
迁移操作
具体的迁移操作请参考《数据复制服务最佳实践》中“MongoDB数据库迁移”章节。
3.2.3 通过 mongoexport 和 mongoimport 工具迁移数据
mongoexport和mongoimport是MongoDB客户端自带的备份恢复工具。您可以在本 地设备或ECS中安装MongoDB客户端,通过mongoexport和mongoimport工具将自建 MongoDB数据库或其他云数据库MongoDB迁移至华为云GaussDB(for Mongo) 实 例。
要将已有的MongoDB数据库迁移到GaussDB(for Mongo) 数据库,需要先使用 mongoexport工具对它做转储。再通过弹性云服务器或可访问GaussDB(for Mongo) 数据库的设备,使用mongoimport工具将转储文件导入到GaussDB(for Mongo) 数据 库。
使用须知
● mongoexport和mongoimport工具仅支持全量数据迁移。为保障数据一致性,迁 移操作开始前请停止源数据库的相关业务,并停止数据写入。
● 建议您尽量选择在业务低峰期迁移数据,避免在迁移过程中对业务造成影响。
● 不支持迁移系统库admin和local。
● 确保源库中系统库admin和local没有创建业务集合,如果已经有业务集合,必须 在迁移前将这些业务集合从admin和local库中迁移出来。
● 导入数据之前,确保源端有必要的索引,即在迁移前删除不需要的索引,创建好 必要的索引。
● 如果选择迁移分片集群,必须在目标库创建好要分片的集合,并配置数据分片。
同时,迁移前必须要创建好索引。
前提条件
1. 准备弹性云服务器或可访问GaussDB(for Mongo) 数据库的设备。
– 通过内网连接GaussDB(for Mongo) 数据库实例,需要创建并登录弹性云服 务器,请参见购买弹性云服务器和登录弹性云服务器。
– 通过公网地址连接GaussDB(for Mongo) 数据库实例,需具备以下条件。
i. 为实例中的节点绑定公网地址,如何绑定公网地址,请参见绑定弹性公 网IP 。
ii. 保证本地设备可以访问GaussDB(for Mongo) 数据库绑定的公网地址。
2. 在已准备的弹性云服务器或可访问GaussDB(for Mongo) 数据库的设备上,安装 数据迁移工具。
安装数据迁移工具,请参见如何安装MongoDB客户端。
说明
MongoDB客户端会自带mongoexport和mongoimport工具。
导出源库数据
步骤1 登录到已准备的弹性云服务器或可访问源数据库的设备。
步骤2 使用mongoexport,将源数据库转储至JSON文件。
GaussDB(for Mongo) 3 用户指南
此处以SSL连接方式为例进行说明,如果选择普通连接方式,去掉命令中对应的“--ssl --sslAllowInvalidCertificates”即可。
./mongoexport --host <DB_ADDRESS>--port <DB_PORT>--ssl --
sslAllowInvalidCertificates --type json --authenticationDatabase <AUTH_DB> - u <DB_USER> --db <DB_NAME> --collection <DB_COLLECTION> --out
<DB_PATH>
表3-3 参数说明
参数名称 说明
DB_ADDRESS 数据库地址。
DB_PORT 数据库端口。
AUTH_DB 存储DB_USER信息的数据库,一般为admin。
DB_USER 数据库用户。
DB_NAME 需要迁移的数据库名称。
DB_COLLECTION 需要迁移的数据库集合。
DB_PATH 存储数据JSON文件所在的路径。
出现如下提示时,输入数据库管理员对应的密码:
Enter password:
示例如下,命令执行完会生成“exportfile.json”文件:
./mongoexport --host 192.168.1.21 --port 8635 --ssl --
sslAllowInvalidCertificates --type json --authenticationDatabase admin -u rwuser --db test02 --collection Test --out /tmp/mongodb/export/
exportfile.json 步骤3 查看导出结果。
输出内容显示如下,说明迁移成功。其中,“x”表示转储数据的记录条数。
exported x records
步骤4 压缩导出的JSON文件。
gzip exportfile.json
压缩是为了方便网络传输,压缩后生成“exportfile.json.gz”文件。
----结束
将数据导入至目标 GaussDB(for Mongo)
步骤1 登录到已准备的弹性云服务器或可访问GaussDB(for Mongo) 数据库的设备。
步骤2 将要导入的数据上传到弹性云服务器或可访问GaussDB(for Mongo) 数据库的设备。
根据不同的平台选择相应的上传方法。
GaussDB(for Mongo) 3 用户指南
● Linux下可参考命令:
scp <IDENTITY_FILE>
<REMOTE_USER>@<REMOTE_ADDRESS>:<REMOTE_DIR>
– IDENTITY_FILE为存储“exportfile.json.gz”的文件目录,该文件目录权限为 600。
– REMOTE_USER为弹性云服务器的操作系统用户。
– REMOTE_ADDRESS为弹性云服务器的主机地址。
– REMOTE_DIR为将“exportfile.json.gz”上传到弹性云服务器的文件目录。
● Windows平台下,请使用传输工具上传“exportfile.json.gz”至弹性云服务器。
步骤3 解压数据包。
gzip -d exportfile.json.gz
步骤4 将转储文件导入到GaussDB(for Mongo) 数据库。
此处以SSL连接方式为例进行说明,如果选择普通连接方式,去掉命令中对应的“--ssl --sslAllowInvalidCertificates”即可。
./mongoimport --host <DB_ADDRESS> --port <DB_PORT> --ssl --
sslAllowInvalidCertificates --type json --authenticationDatabase <AUTH_DB> - u <DB_USER> --db <DB_NAME> --collection <DB_COLLECTION> --file
<DB_PATH>
表3-4 参数说明
参数名称 说明
DB_ADDRESS GaussDB(for Mongo)数据库实例的IP地址。
DB_PORT GaussDB(for Mongo)数据库端口。
AUTH_DB DB_USER进行权限验证的数据库,一般为admin。
DB_USER 数据库管理员帐号名。
DB_NAME 需要导入的数据库。
DB_COLLECTION 需要导入的数据库中的集合。
DB_PATH 转储数据JSON文件所在的路径。
出现如下提示时,输入数据库管理员对应的密码:
Enter password:
示例如下:
./mongoimport --host 192.168.1.21 --port 8635 --ssl --
sslAllowInvalidCertificates --type json --authenticationDatabase admin -u rwuser --db test02 --collection Test --file /tmp/mongodb/export/
exportfile.json 步骤5 查看迁移结果。
输出内容显示如下,说明迁移成功。其中,“x”表示转储数据的记录条数。
GaussDB(for Mongo) 3 用户指南
imported x records
----结束
3.2.4 通过 mongodump 和 mongorestore 工具迁移数据
mongodump和mongorestore是MongoDB客户端自带的备份恢复工具。您可以在本地 设备或ECS中安装MongoDB客户端,通过mongodump和mongorestore工具将自建 MongoDB数据库或其他云数据库MongoDB迁移至华为云GaussDB(for Mongo) 实 例。
使用须知
● mongodump和mongorestore工具仅支持全量数据迁移。为保障数据一致性,迁 移操作开始前请停止源数据库的相关业务,并停止数据写入。
● 建议您尽量选择在业务低峰期迁移数据,避免在迁移过程中对业务造成影响。
● 不支持迁移系统库admin和local。
● 确保源库中系统库admin和local没有创建业务集合,如果已经有业务集合,必须 在迁移前将这些业务集合从admin和local库中迁移出来。
● 导入数据之前,确保源端有必要的索引,即在迁移前删除不需要的索引,创建好 必要的索引。
● 如果选择迁移分片集群,必须在目标库创建好要分片的集合,并配置数据分片。
同时,迁移前必须要创建好索引。
● 如果使用mongodump工具备份失败(示例:备份进度至97%时报错),建议您 尝试增大虚拟机磁盘空间,预留部分冗余空间,再重新执行备份。
● 客户侧使用的是rwuser帐号,仅支持操作客户业务库表。所以,在使用时建议指 定库和表,仅对业务数据执行导入导出。不指定库表,全量进行导入导出,可能 会遇到权限不足的问题。
前提条件
1. 准备弹性云服务器或可访问GaussDB(for Mongo) 的设备。
– 通过内网连接GaussDB(for Mongo) 数据库实例,需要创建并登录弹性云服 务器,请参见购买弹性云服务器和登录弹性云服务器。
– 通过公网地址连接GaussDB(for Mongo) 数据库实例,需具备以下条件。
i. 为实例中的节点绑定公网地址,如何绑定公网地址,请参见绑定弹性公 网IP 。
ii. 保证本地设备可以访问GaussDB(for Mongo) 数据库绑定的公网地址。
2. 在已准备的弹性云服务器或可访问GaussDB(for Mongo) 的设备上,安装数据迁 移工具。
安装数据迁移工具,请参见如何安装MongoDB客户端。
说明
● MongoDB客户端会自带mongodump和mongorestore工具。
● MongoDB客户端版本须和实例相匹配,若版本不匹配则会有兼容性问题出现。
GaussDB(for Mongo) 3 用户指南
导出源库数据
步骤1 登录到已准备的弹性云服务器或可访问源数据库的设备。
步骤2 使用mongodump工具,备份源数据库中的数据。
● SSL命令格式:
./mongodump --host <DB_HOST> --port <DB_PORT> --
authenticationDatabase <AUTH_DB> -u <DB_USER> --ssl --sslCAFile
<FILE_PATH> --sslAllowInvalidCertificates --db <DB_NAME> --collection
<DB_COLLECTION> --gzip --archive=<Backup_directory>
● 非SSL命令格式:
./mongodump --host <DB_HOST> --port <DB_PORT> --
authenticationDatabase <AUTH_DB> -u <DB_USER> --db <DB_NAME> -- collection <DB_COLLECTION> --gzip --archive=<Backup_directory>
表3-5 参数说明
参数 说明
DB_HOST 数据库地址。
DB_PORT 数据库端口号。
DB_USER 数据库用户名。
AUTH_DB 存储<DB_USER>信息的数据库,一般为admin。
FILE_PATH 存放根证书的路径。
DB_NAME 需要迁移的数据库名称。
DB_COLLECTION 需要迁移的数据库中的集合。
Backup_directory 导出数据的存放路径,可以自定义路径。
出现如下提示时,输入数据库管理员对应的密码:
Enter password:
示例如下:
./mongodump --host 192.168.xx.xx --port 8635 --authenticationDatabase admin -u rwuser --db test --collection usertable --gzip --archive=/tmp/
usertable.tar.gz
----结束
GaussDB(for Mongo) 3 用户指南