云服务器内容精选
-
删除时间漫游快照 在dds副本集的主节点,或者dds集群的mongos节点命令行中,切换至用户库。 use test //可以是任意用户库,不影响最终命令结果 执行如下命令,删除已有时间漫游快照。 db.runCommand({snapshot:1, op:"delete", name:"s1"}) //删除名为s1的时间漫游快照 db.runCommand({snapshot:1, op:"delete"}) //如果未指定name参数,默认删除名为stable的时间漫游快照 db.runCommand({snapshot:1, op:"delete", name:"*"}) //指定name参数为*,删除所有时间漫游快照
-
使用须知 当前只有最新版本的4.2、4.4文档数据库实例支持该能力,如果您的实例版本较低,请参考文档《补丁升级》; 时间漫游快照为持久化快照,实例重启后依然保留; 对于同一实例您最多可以创建8个时间漫游快照,快照名称支持字符0~9、a~z、A~Z 和 _ ,例如:"Snapshot_2024_09_30_15_18"; 因为时间漫游快照是针对当前时刻所有用户库的数据快照,因此下发命令的数据库账户至少应该具备{role: "dbAdminAnyDatabase"}权限,创建数据库账户请参考文档《创建用户》; 时间漫游快照命令只能在主节点(集群中则为mongos节点)下发,同时会以oplog的形式同步到备节点,所以如果想要有效避免主备倒换可能发生的回滚,那么应该将writeConcern设置为majority来创建、删除时间漫游快照; 请确保在时间漫游快照生效期间,不要对相关集合进行元数据变更(包括删除、重命名集合,创建、删除索引等),对于元数据的操作会使得对应集合的快照失效,但其他集合的快照不受影响; 读取时间漫游快照过程中请勿删除对应快照; 创建时间漫游快照本身并不会占用额外的磁盘空间,但这个动作会使得快照相关的数据不参与存储引擎的compact,因此在创建时间漫游快照后如果有新的写入动作,请及时关注实例的磁盘占用情况。存储引擎相关说明请参考文档《DDS 4.2及其以上版本切RocksDB存储引擎相关问题Q&A》; 因为时间漫游快照的相关数据不参与存储引擎compact,因此如果创建较多时间漫游快照,那么会对实例的写入性能造成5~10%左右的影响; 在集群实例上使用时间漫游快照时,需关闭均衡器Balancer,管理均衡器请参考文档《如何管理均衡器Balancer》。
-
查看时间漫游快照 在dds副本集的主节点,或者dds集群的mongos节点命令行中,切换至用户库。 use test //可以是任意用户库,不影响最终命令结果 执行如下命令,查看当前时间漫游快照。 db.runCommand({snapshot: 1, op: "list"}) // {snapshot: 1, op: "list"} // {snapshot: 1, op: "list"} 执行结果 { "snapshotList" : [ "s1", "stable" ], "ok" : 1, "operationTime" : Timestamp(1727683917, 1), "$clusterTime" : { "clusterTime" : Timestamp(1727683917, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } } }
-
创建时间漫游快照 在dds副本集的主节点,或者dds集群的mongos节点命令行中,切换至用户库。 use test //可以是任意用户库,不影响最终快照结果 执行如下命令,创建时间漫游快照。 db.runCommand({snapshot: 1, op: "create", name: "s1"}) //创建名为s1的时间漫游快照 db.runCommand({snapshot: 1, op: "create"}) //如果未指定name参数,那么默认使用stable作为快照名称
-
连接数据库 连接数据库的客户端工具包括DAS、gsql和应用程序接口(如ODBC和JDBC)。 通过华为云数据管理服务(Data Admin Service,简称DAS)这款可视化的专业数据库管理工具,可获得执行SQL、高级数据库管理、智能化运维等功能,做到易用、安全、智能的管理数据库。 GaussDB 默认开通DAS连接权限。推荐使用DAS连接实例。连接GaussDB的具体操作请参考《DAS用户指南》。 gsql是GaussDB自带的客户端工具。使用gsql连接数据库,可以交互式地输入、编辑、执行SQL语句。 用户可以使用标准的数据库应用程序接口(如ODBC和JDBC),开发基于GaussDB的应用程序。 主备版场景下:客户端工具通过连接主DN访问数据库。因此连接前,需获取主DN所在服务器的IP地址及端口号信息。正常业务使用禁止直接连接其他DN访问数据库。 应用程序接口 父主题: 数据库使用
-
连接数据库 连接数据库的客户端工具包括DAS、gsql和应用程序接口(如ODBC和JDBC)。 通过华为云数据管理服务(Data Admin Service,简称DAS)这款可视化的专业数据库管理工具,可获得执行SQL、高级数据库管理、智能化运维等功能,做到易用、安全、智能的管理数据库。GaussDB默认开通DAS连接权限。推荐使用DAS连接实例。连接GaussDB的具体操作请参考《DAS用户指南》。 gsql是GaussDB自带的客户端工具。使用gsql连接数据库,可以交互式地输入、编辑、执行SQL语句。具体连接方式请参考通过gsql连接实例。 用户可以使用标准的数据库应用程序接口(如ODBC和JDBC),开发基于GaussDB的应用程序。 分布式场景下:客户端工具通过连接CN访问数据库。因此连接前,需获取CN所在服务器的IP地址及CN的端口号信息。客户端工具可以通过连接任何一个CN访问数据库。正常业务使用禁止直接连接DN访问数据库。 应用程序接口 父主题: 数据库使用
-
处理方法 故障构造场景 使用客户端连接DWS数据库。 执行以下SQL语句。 1 2 3 4 5 6 7 8 9 10 11 12 CREATE TABLE t1(a int, b timestamp); CREATE TABLE CREATE TABLE t2(a int, b text); CREATE TABLE INSERT INTO t1 select 1, current_date; INSERT 0 1 INSERT INTO t2 select 1, current_date; INSERT 0 1 SELECT * FROM t1 UNION SELECT * FROM t2; ERROR: UNION types timestamp without time zone and text cannot be matched LINE 1: SELECT * FROM t1 UNION SELECT * FROM t2; ^ 解决办法 示例中,t1表和t2表在b列上类型不同,导致在UNION操作时出现类型不匹配的报错,应保证UNION各分支相同位置的输出列类型匹配。 t2表b列是text类型,插入的数据是current_date,在插入时发生了隐式类型转换,所以插入不报错;但是在查询时,不会自动进行隐式转换,因此会报错。 解决以上问题,需保证UNION各分支的输出列类型匹配,不满足要求时可以对输出列强制类型转化。 1 2 3 4 5 6 SELECT a,b::text FROM t1 UNION SELECT a,b FROM t2; a | b ---+--------------------- 1 | 2023-02-16 1 | 2023-02-16 00:00:00 (2 rows)
-
扩展JSON语义: 表2 扩展JSON语义 关键字 作用 filter 在查询语句中json查询的关键字。 term 查询时判断某个document是否包含某个具体的值。 match 将被询值进行分词,进行全文检索。 range 查询指定某个字段在某个特定的范围。(范围查询子关键字:"eq"/"gte"/"gt"/"lte"/"lt") bool 必须和 "must"、"should"、"must not" 一起组合出复杂的查询。 must bool类型的子查询,封装"term"、"match"、"range" 查询。 should bool类型的子查询,封装"term"、"match"、"range" 查询。 must not bool类型的子查询,封装"term"、"match"、"range" 查询。 sort 支持全局索引列排序功能。
-
如何查看GaussDB(DWS)表是行存还是列存? 表的存储方式由建表语句中的ORIENTATION参数控制,row表示行存,column表示列存。 8.1.2及之前版本,不指定ORIENTATION参数,默认为row行存。 8.1.3版本后,支持通过GUC参数default_orientation控制,即创建表时,如果不指定ORIENTATION参数时,则根据该GUC参数的值来创建对应类型的表。其中,row表示行存表,column表示列存表,column enabledelta表示创建开启delta表的列存表。该GUC可通过DWS控制台进行设置,如下图。 查看已创建的表是行存还是列存,可通过表定义函数PG_GET_TABLEDEF查询。 如下orientation=column表示为列存表。 目前暂不支持通过ALTER TABLE语句修改ORIENTATION参数,即行存表和列存表无法直接进行转换。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 SELECT * FROM PG_GET_TABLEDEF('customer_t1'); pg_get_tabledef ----------------------------------------------------------------------------------- SET search_path = tpchobs; + CREATE TABLE customer_t1 ( + c_customer_sk integer, + c_customer_id character(5), + c_first_name character(6), + c_last_name character(8) + ) + WITH (orientation=column, compression=middle, colversion=2.0, enable_delta=false)+ DISTRIBUTE BY HASH(c_last_name) + TO GROUP group_version1; (1 row) 父主题: 数据库使用
-
连接数据库 文档数据库服务常用的连接方式如下表。 表1 连接方式 连接方式 IP地址 使用场景 说明 内网连接(推荐) 内网IP地址 系统默认提供内网IP地址。 当应用部署在弹性云服务器上,且该弹性云服务器与文档数据库实例处于同一区域、可用区、虚拟私有云子网内,建议单独使用内网IP通过弹性云服务器连接文档数据库实例。 文档数据库服务和弹性云服务器在不同的安全组默认不能访问,需要在文档数据库服务所属安全组添加一条“入”的访问规则。 文档数据库服务默认端口:8635,需要手动修改才能访问其它端口。 安全性高,可实现DDS的较好性能。 通过内网连接集群实例 通过内网连接副本集实例 通过内网连接单节点实例 公网连接 弹性公网IP 当应用部署在弹性云服务器上,且该弹性云服务器与文档数据库实例处于不同区域时,建议单独使用弹性公网IP通过弹性云服务器连接文档数据库实例。 当应用部署在其他云服务的系统上时,建议单独使用弹性公网IP通过弹性云服务器连接文档数据库实例。 降低安全性。 通过公网连接集群实例 通过公网连接副本集实例 通过公网连接单节点实例 应用程序连接 内网IP地址 通过各类应用程序连接数据库。 通过Java连接数据库 通过Python连接数据库 父主题: 数据库使用
-
账户说明 为了给文档数据库实例提供管理服务,您在创建数据库实例时,文档数据库服务会自动为实例创建根账户root(或admin)、监控账户monitor和备份账户backup,这些账户属于华为云实例管理平台,您不能操作或者使用。如果试图删掉、重命名、修改这些账户的密码和权限,会导致出错。 对于数据库管理员账户rwuser,以及您所创建的账户,允许修改账户的密码。 默认账户rwuser以及通过rwuser创建的账户,对系统库admin和config权限受限,无法进行正常操作。对自身创建的库表,具有充分的操作权限。 MongoDB的User一般是在某个固定的认证库下创建的。连接数据库时,需要通过参数--authenticationDatabase来明确指定对应的认证库。 DDS实例中,默认的rwuser用户的认证库,是admin。 账户密码连续5次输入错误,账户会被锁定10s。
-
创建账户 选择admin数据库。 use admin 以user1账户为例,创建数据库账户。 db.createUser({user: "user1", pwd: "****", passwordDigestor:"server", roles:[{role: "root", db: "admin"}]}) “server”是指在服务端加密密码,为固定值,无需修改。 “****”是新密码,长度8~32位,且必须为英文大小写字母、数字以及特殊字符~@#%-_!*+=^?的组合。 “roles”限制了该账户所具有的权限。若指定一个空数组,表示该账户不具有任何权限。 查看创建结果。 显示如下信息,说明创建成功。 Successfully added user: { "user" : "user1", "passwordDigestor" : "server", "roles" : [ { "role" : "root", "db" : "admin" } ] }
-
账户密码等级设置 文档数据库服务在控制台侧管理员密码的安全策略: 密码长度为8~32个字符。 密码必须为英文大小写字母、数字、特殊字符~!@#%^*-_=+?()$的组合。 文档数据库对在客户端新创的数据库用户,设置了密码安全策略: 密码长度为8~32个字符。 密码为英文大小写字母、数字、特殊字符~@#%-_!*+=^?的组合。 创建实例数据库以及设置密码时,安全起见,为用户提供了密码复杂度校验,如果不满足要求,请根据提示信息调整密码复杂度。
-
支持与限制的命令 用户在连接到社区版文档数据库后,需要关注以下支持以及限制的命令。 更多信息,请参见MongoDB官方文档。 如下表所示,“√”表示当前版本支持该命令,“×”表示当前版本不支持该命令。 表1 支持与限制的命令 命令类别 命令名称 3.4 4.0 4.2 备注 Aggregates Commands aggregate √ √ √ - count √ √ √ - distinct √ √ √ - group √ √ √ - mapReduce √ √ √ 在DDS实例关联参数模板中设置参数“security.javascriptEnabled”的值为“true”后,可以使用该命令。更多信息,请参见如何使用MapReduce命令。 Geospatial Commands geoNear √ √ √ - geoSearch √ √ √ - Query and Write Operation Commands find √ √ √ - insert √ √ √ - update √ √ √ - delete √ √ √ - findAndModify √ √ √ - getMore √ √ √ - getLastError √ √ √ - resetError √ √ √ - getPrevError √ √ √ - parallelCollectionScan √ √ √ - Query Plan Cache Commands planCacheListFilters √ √ √ - planCacheSetFilter √ √ √ - planCacheClearFilters √ √ √ - planCacheListQueryShapes √ √ √ - planCacheListPlans √ √ √ - planCacheClear √ √ √ - Authentication Commands logout √ √ √ - authenticate √ √ √ - copydbgetnonce √ √ √ - getnonce √ √ √ - authSchemaUpgrade x x x 系统内部命令。 User Management Commands createUser √ √ √ - updateUser √ √ √ - dropUser √ √ √ - dropAllUsersFromDatabase √ √ √ - grantRolesToUser √ √ √ - revokeRolesFromUser √ √ √ - usersInfo √ √ √ - Role Management Commands invalidateUserCache √ √ √ - createRole √ √ √ - updateRole √ √ √ - dropRole √ √ √ - dropAllRolesFromDatabase √ √ √ - grantPrivilegesToRole √ √ √ - revokePrivilegesFromRole √ √ √ - grantRolesToRole √ √ √ - revokeRolesFromRole √ √ √ - rolesInfo √ √ √ - Replication Commands replSetElect x x x 系统内部命令。 replSetUpdatePosition x x x 系统内部命令。 appendOplogNote x x x 系统内部命令。 replSetFreeze x x x 系统内部命令。 replSetGetStatus √ √ √ - replSetInitiate x x x 系统内部命令。 replSetMaintenance x x x 系统内部命令。 replSetReconfig x x x 系统内部命令。 replSetStepDown x x x 系统内部命令。 replSetSyncFrom x x x 系统内部命令。 replSetRequestVotes x x x 系统内部命令。 replSetDeclareElectionWinner x x x 系统内部命令。 resync x x x 系统内部命令。 applyOps x x x 系统内部命令。 isMaster √ √ √ - replSetGetConfig x x x 系统内部命令。 Sharding Commands flushRouterConfig √ √ √ 高危命令。 addShard x x x 越权操作。 addShardToZone √ √ √ - balancerStart √ √ √ - balancerStatus √ √ √ - balancerStop √ √ √ - removeShardFromZone √ √ √ - updateZoneKeyRange √ √ √ - cleanupOrphaned x x x 高危命令。 checkShardingIndex x x x 系统内部命令。 enableSharding √ √ √ - listShards x x x 系统内部命令。 removeShard x x x 高危命令。 getShardMap x x x 系统内部命令。 getShardVersion √ √ √ - mergeChunks √ √ √ - setShardVersion x x x 系统内部命令。 shardCollection √ √ √ - shardingState x x x 系统内部命令。 unsetSharding x x x 系统内部命令。 split √ √ √ - splitChunk √ √ √ - splitVector √ √ √ - moveChunk √ √ √ - movePrimary √ x √ - isdbgrid √ √ √ - Administration Commands setFeatureCompatibilityVersion √ √ √ - renameCollection √ √ √ - dropDatabase √ √ √ - listCollections √ √ √ - drop √ √ √ - create √ √ √ - clone x x x 系统内部命令。 cloneCollection √ √ √ - cloneCollectionAsCapped √ √ √ - convertToCapped √ √ √ - filemd5 √ √ √ - createIndexes √ √ √ - listIndexes √ √ √ - dropIndexes √ √ √ - fsync √ √ √ - clean x x x 系统内部命令。 connPoolSync x x x 系统内部命令。 connectionStatus √ √ √ - compact x x x 高危命令。 collMod √ √ √ - reIndex √ √ √ - setParameter x x x 系统配置命令。 getParameter √ √ √ - repairDatabase x x x 高危命令。 repairCursor x x x 系统内部命令。 touch √ √ √ - shutdown x x x 高危命令。 logRotate x x x 高危命令。 killOp √ √ √ - releaseFreeMemory √ √ √ - Diagnostic Commands availableQueryOptions √ √ √ - buildInfo √ √ √ - collStats √ √ √ - connPoolStats x x x 系统内部命令。 cursorInfo x x x 系统内部命令。 dataSize √ √ √ - dbHash x x x 系统内部命令。 dbStats √ √ √ - diagLogging x x x 系统内部命令。 driverO IDT est x x x 系统内部命令。 explain √ √ √ - features √ √ √ - getCmdLineOpts x x x 系统内部命令。 getLog x x x 系统内部命令。 hostInfo x x x 系统内部命令。 isSelf x x x 系统内部命令。 listCommands √ √ √ - listDatabases √ √ √ - netstat x x x 系统内部命令。 ping √ √ √ - profile √ √ √ - serverStatus √ √ √ - shardConnPoolStats x x x 系统内部命令。 top √ √ √ - validate x x x 系统配置命令。 whatsmyuri √ √ √ - Internal Commands handshake x x x 系统内部命令。 _recvChunkAbort x x x 系统内部命令。 _recvChunkCommit x x x 系统内部命令。 _recvChunkStart x x x 系统内部命令。 _recvChunkStatus x x x 系统内部命令。 _replSetFresh x x x 系统内部命令。 mapreduce.shardedfinish x x x 系统内部命令。 _transferMods x x x 系统内部命令。 replSetHeartbeat x x x 系统内部命令。 replSetGetRBID x x x 系统内部命令。 _migrateClone x x x 系统内部命令。 replSetElect x x x 系统内部命令。 writeBacksQueued x x x 系统内部命令。 writebacklisten x x x 系统内部命令。 System Events Auditing Commands logApplicationMessage x x x 系统内部命令。 父主题: 数据库使用
-
分析GeminiDB Mongo数据库的慢请求 GeminiDB Mongo数据库服务默认开启了慢请求Profiling ,系统自动将请求时间超过500ms的执行情况记录到对应数据库下的“system.profile”集合中。 通过Mongo Shell连接GeminiDB Mongo实例。 执行以下命令,进入指定数据库,以“test”为例。 use test 查看是否生成慢sql集合“system.profile”。 show collections; 回显中有“system.profile”,说明产生了慢SQL,继续执行下一步。 回显中没有“system.profile”,说明未产生慢SQL,该数据库不涉及慢请求分析。 查看数据下的慢请求日志。 db.system.profile.find().pretty() 分析慢请求日志,查找CPU使用率升高的原因。 下面是某个慢请求日志示例,可查看到该请求进行了全表扫描,扫描了1561632个文档,没有通过索引进行查询。 { "op" : "query", "ns" : "taiyiDatabase.taiyiTables$10002e", "query" : { "find" : "taiyiTables", "filter" : { "filed19" : NumberLong("852605039766") }, "shardVersion" : [ Timestamp(1, 1048673), ObjectId("5da43185267ad9c374a72fd5") ], "chunkId" : "10002e" }, "keysExamined" : 0, "docsExamined" : 1561632, "cursorExhausted" : true, "numYield" : 12335, "locks" : { "Global" : { "acquireCount" : { "r" : NumberLong(24672) } }, "Database" : { "acquireCount" : { "r" : NumberLong(12336) } }, "Collection" : { "acquireCount" : { "r" : NumberLong(12336) } } }, "nreturned" : 0, "responseLength" : 157, "protocol" : "op_command", "millis" : 44480, "planSummary" : "COLLSCAN", "execStats" : { "stage" : "SHARDING_FILTER", [3/1955] "nReturned" : 0, "executionTimeMillisEstimate" : 43701, "works" : 1561634, "advanced" : 0, "needTime" : 1561633, "needYield" : 0, "saveState" : 12335, "restoreState" : 12335, "isEOF" : 1, "invalidates" : 0, "chunkSkips" : 0, "inputStage" : { "stage" : "COLLSCAN", "filter" : { "filed19" : { "$eq" : NumberLong("852605039766") } }, "nReturned" : 0, "executionTimeMillisEstimate" : 43590, "works" : 1561634, "advanced" : 0, "needTime" : 1561633, "needYield" : 0, "saveState" : 12335, "restoreState" : 12335, "isEOF" : 1, "invalidates" : 0, "direction" : "forward", "docsExamined" : 1561632 } }, "ts" : ISODate("2019-10-14T10:49:52.780Z"), "client" : "xxx.xxx.xxx.xxx", "appName" : "MongoDB Shell", "allUsers" : [ { "user" : "__system", "db" : "local" } ], "user" : "__system@local" } 在慢请求日志中,您需要重点关注以下关键字。 全集合(全表)扫描:COLLSCAN 当一个操作请求(如QUERY、UPDATE、DELETE)需要全表扫描时,将大量占用CPU资源。在查看慢请求日志时,发现COLLSCAN关键字,很可能是这些查询占用了CPU资源。 如果该类操作请求较为频繁,建议您对查询的字段建立索引进行优化。 全集合(全表)扫描:docsExamined 通过查看参数“docsExamined”的值,可以查看一个查询扫描了多少文档。该值越大,请求的CPU使用率越高。 不合理的索引:IXSCAN、keysExamined 索引不是越多越好,过多索引会影响写入和更新的性能。 如果您的应用偏向于写操作,建立索引可能会降低写操作的性能。 通过查看参数“keysExamined”的值,可以查看一个使用了索引的查询,扫描了多少条索引。该值越大,请求的CPU使用率越高。 如果索引建立不太合理,或者匹配的结果很多。该场景下,即便使用了索引,请求的CPU使用率也不会降低很多,执行的速度也会很慢。 示例:对于某个集合的数据,a字段的取值很少(只有1和2),而b字段的取值很多。 如下所示,要实现 {a: 1, b: 2} 这样的查询。 db.createIndex( {a: 1} ) 效果不好,因为a相同取值太多 db.createIndex( {a: 1, b: 1} ) 效果不好,因为a相同取值太多 db.createIndex( {b: 1 } ) 效果好,因为b相同取值很少 db.createIndex( {b: 1, a: 1 }) 效果好,因为b相同取值少 关于{a: 1}与{b: 1, a: 1}的区别,可参考官方文档。 大量数据排序:SORT、hasSortStage 当查询请求中包含排序时,“system.profile”集合中的参数“hasSortStage”的值为“true”。如果排序无法通过索引实现,将在查询结果中进行排序。由于排序将占用大量CPU资源,该场景下,需要通过对经常排序的字段建立索引进行优化。 当您在“system.profile”集合中发现SORT关键字时,可以考虑通过索引来优化排序。 其他操作如建立索引、Aggregation(遍历、查询、更新、排序等动作的组合)也可能占用大量CPU资源,但本质上也适用以上几种场景。更多Profiling的设置,请参见官方文档。
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格