Error

An error occurred.

Sorry, the page you are looking for is currently unavailable.
Please try again later.

If you are the system administrator of this resource then you should check the error log for details.

Faithfully yours, nginx.

帮助文档(华北一、二)

  • 1、MongoDB实例功能和开源MongoDB有区别吗?

    MongoDB实例和原生MongoDB完全一致。

    2、MongoDB实例是否使用物理机搭建?

    MongoDB实例使用物理机搭建,并采用高性能磁盘以及使用RAID1确保数据安全。

    3、MongoDB的安全性如何?

    访问安全性

    MongoDB实例仅支持通过云主机进行内网登陆且按账户进行隔离,因此仅有同一账户的云主机能够对MongoDB实例进行登录。

    MongoDB实例是强制鉴权的,只能通过认证的。

    数据安全性

    所有的MongoDB实例的数据文件所存放的硬盘都进行了RAID1保护。

    MongoDB实例每天都会进行数据备份,同时也提供了手工备份功能,以便用户能够在特定时间点主动对数据进行备份。

    MongoDB实例(Master)支持创建从库(搭建在与主库不同的物理机上),从库与主库自动进行数据同步,提供数据灾备的能力。

    4、如何备份与恢复?

    MongoDB实例支持手动备份,用户可以保存某些关键时间点的重要数据备份,当前手工备份的允许保留个数为3个,如果超过3个,会自动删除最早的手动备份。创建手动备份时,用户只需要输入备份名称,后台会立刻开始进行备份工作。

    备份可以下载至本地或云主机。

    如果要恢复MongoDB实例,建议用户先将备份文件下载至本地,由专业人员确认无误后导入MongoDB实例中,以规避数据风险。

    5、MongoDB实例类型有哪些?

    满足高可用和水平扩展的要求,支持单点、副本集、分片集群的多种架构演进。

    所有的数据节点都是内置副本集的,即使单点也是一个副本集,所以副本集按类型划分可以细分为单点副本集和多点副本集,其中单点副本集只包含一个primary,多点副本集包含一个primary和若干个secondary或者arbiter。

    6、怎么查看MongoDB的统计信息?

    MongoDB实例管理页可以查看统计信息。

    7、MongoDB集群包括哪些组件?

    集群按规模可以划分为两种:

    副本集:一个primary+若干个secondary+若干个arbiter,副本集提供高可用特性。

    分片集群:具有分片功能的多副本集的分布式架构,支持scale-out特性,其中每个分片指的就是副本集,集群包括一个或多个分片(数据存储),一个或三个configsvr(集群元数据管理),和一个或多个Mongos(路由)。

    8、配置文件有哪些?

    提供两个默认配置文件,分别是shardsvr默认配置文件和configsvr默认配置文件,它们用于创建不同类型的实例,其中:

    shardsvr配置文件:支持单点副本集、多点副本集、sharding的分片服务器实例。

    configsvr配置文件:支持sharding的配置服务器实例。

    用户可以从默认配置文件修改配置参数,另存为自定义的配置文件,供这些实例使用。

    9、如何创建shardsvr或者configsvr?

    ⑴、在MongoDB实例管理页面,点击创建MongoDB实例按钮:

    ⑵、在弹出的选择页面中,根据需求选择配置和实例数量,对于configsvr建议以3台为单位申请,这样可以保证分片集群配置服务器有一定的高可用性。对于shardsvr,建议使用一主一从一仲裁的副本集,机型大小可根据业务需要选择。

    ⑷、填写MongoDB实例信息,根据需要选择configsvr或者shardsvr的配置文件。configsvr和shardsvr的默认端口均采用27017。所有的configsvr都采用统一的管理员密码,shardsvr不作要求。

    ⑸、确认各项选择以及所付金额,支付订单。创建成功后,列表会显示刚创建的MongoDB实例信息。此时,MongoDB实例已经提供MongoDB分片与副本集的集群规模。

    注意:在MongoDB创建过程中,列表中属性列统一显示为slave。刷新页面获取MongoDB实例的真实属性。

    10、如何创建secondary和arbiter?

    ⑴、进入控制台MongoDB实例管理页,选中primary节点,在右边的弹框中选中“创建节点”按钮进行创建。

    ⑵、在“创建节点”的弹框中选择节点类型secondary或arbiter。创建完成后,新增节点将按指定的角色加入到primary节点的副本集中。同个副本集的所有节点共享相同的管理员账号和密码。

    11、如何使用鉴权?

    从数据安全性和可维护等角度,MongoDB实例是强制鉴权的,所有实例均采用keyfile认证,等效于auth=true。MongoDB实例的管理员账号和密码是申请时所填写的管理员用户名和密码。

    MongoDB实例统一使用keyfile:

     

    ymSs/7YgMlxlMMTR9K3B6eKyopWD98MX1KIuySyI8Kk1Coqw1sYZp2Nh4nN5yrul+0J21pIpNOz

    XU3Mbbl2zihF/qMEkofAWJPeORzZd2VR0c2rwHG4xxuxNRFOK3BSTTSIyAgMfnBVTPwC671E18S

    Ji3r/RohfGxy8NveipsZCqTTRDVcGXKqFf4i3vBRLXil+it1oxPb63ayjYJ7Uz1piVQQRtHlD+K

    zUEaTzhl/CW9Da8xhq1Lm2bxNUWov/ltDfJSyke+a+a1OlbpGTYwD5WeYINbGYYbJMpC1P6ELCQ

    2kD1c/Dyae7WNLcDO3ICJSOvGigKIGo3om5M8CeiUJ/xHA67RkJak2idSlXOopIEdjjAxtFRPWa

    F8jEoMgtOSty2OQMBpBYDYcwgRRFL8+fQQvHd1c6sQoXUoN1JbBqhtNxpvlm05keinIP9Al+EeI

    A1itZjUBcjC5zZgAAPHbXe803TosCupq/jS2W6K8MBEOUg+42u4r8g4Sp2LKdbqqdza1PlBHFQm

    ExSz2pAN61DwZPKjMlBArlCpa5Kk/44DzOc9Lc3bW51AdieG5xFad6d9qS0LLFFeG4tB5HcbUCC

    KWkVdUM5ocCb0TTRfJ2KNTRaJUTfKq4WLCe1zrIeHCvQIbKVJLgyo/3HHgse331daqVRm+rAAPW

    wgXVKbo/+XfYkS28ftDMOA6spIN1Vsba+UGdLjGFiq40xLSCA5z0RvB88oYouuyw16VAQuv1JzU

    k4tzZ9f5Snr1MlyI5rrjO6DZeDT3WYOK9TGRDshWHuVjDCtvDTYPjACy0Jy4Uhikze+pz9gAUbm

    JNUeU14CZb5EA1/mkICjpbIJigG1lduERa1g5OFv3cS4UIyh8V/zE11rjVdLva0Fq58w713kO6t

    40xG2QWbpTX/D5VWVH7j0Uq4QX3xSUPvCzIrcGXV0whPRM93BGCgEZVIkdOfDv2+VGDMDmL3mWy

    J8/ysjaN1VOnf

    12、如何访问MongoDB实例?

    申请MongoDB实例后会获取一个IP和Port。

    命令行操作:

    登录云服务,在命令行中输入:

     
    mongo --host $ip --port $port --authenticationDatabase $db --username 
    $admin --password $admin_passwd

    例如::

     mongo --host 10.4.12.80 --port 27017 --authenticationDatabase admin --username root --password root

    或者:

     mongo $ip:$port/$db -u $admin -p $admin_passwd

    或者:

     mongo 10.4.12.80:27017/admin -u root -p root

    API操作:

    用户可以使用开源的MongoDB API库来连接MongoDB,出于安全性考虑,MongoDB仅能在内网进行访问。

    13、如何访问业务MongoDB?

    因为在MongoDB安全机制作用下,刚开始用户是无法直连业务db的,否则一直提示无权限,这时需要通过以下步骤:

    ⑴、登录到admin库。

    ⑵、切换到业务db,如game。

    ⑶、使用createUser(2.6版本及更新版本支持)或者 addUser(2.4版本支持)新增用户。

    ⑷、使用mongo客户端连接到业务库,如:

     mongo 10.4.12.80:27017/game -u root -p root

    14、如何搭建分片集群?

    目前,浪潮云支持shardsvr、configsvr和mongos,可以在控制台页面申请。

    15、如何访问shardsvr?如何访问configsvr?如何连接集群?

    访问shardsvr/configsvr、连接集群的方式与连接mongodb实例的方式一致:

     mongo $mongos-ip:$mongos-port/admin -u $admin -p $admin_password

    注意:这里使用的管理员和密码是configsvr统一采用的管理员和密码。如:

     mongo 10.4.4.50:27017/admin -u root -p root

    16、如何开启分片?

    如何迁移数据到MongoDB?

    可以通过以下方法迁移数据到MongoDB,包括:

    ⑴、使用mongodump和mongorestore工具导出源数据,再导入到副 本集的primary或者分片集群的mongos;

    ⑵、如果源db是部署在ECS上,可以在内网通过副本集的复制机制同步数据到浪潮云的MongoDB;

    MongoDB的内存是如何管理?

    MongoDB使用mmap管理内存,内存使用率经常是100%,也有时候经过备份 操作(自动备份和手动备份),内存也会立即升到100%,通常情况下无需担心。内存上升后,通常情况下是不会主动释 放的。

    如果是平时的工作载荷,内存使用出现瓶颈,建议是在线升级内存。

    MongoDB的磁盘是如何管理?

    MongoDB采用预分配机制分配大文件用于存放数据,drop、remove、 compact等操作是不会释放磁盘空间的,但是可以使预分配的空间重用。如果磁盘使用率过高,这时候需要注意 是否会100%。如果磁盘空间使用率接近100%,建议采用以下方法克服:

    ⑴、升级磁盘;

    ⑵、创建secondary,通过复制方式将数据从primary同步到 secondary,这时候secondary的存储空间往往会较小一些,然后执行一次主从切换;

    ⑶、修复db,执行db.repairDatabase,这会阻塞住整个实例的读写服务,不建议使用;

    17、如何管理和查看慢查询?

    在业务库执行db.setProfilingLevel()启动和关闭慢查询;

    执行db.getProfilingStatus()查看慢查询设置状态。

    执行db.system.profile.find() 查看收集到的慢查询,有助于查询优化的工作。

    怎么查到MongoDB的统计信息?

    统计可以在 MongoDB管理页面看到,包括CPU使用率、内存使用、内存使用率、连接数、各类QPS指标等。

    如何使用mongostat监控?

    mongostat是官方提供的一种监控工具,使用方法是:

     
    mongostat -h $ip --port $port --authenticationDatabase admin -u $admin -p 
    $admin_password --discover

    如:

     
    mongostat -h 10.4.4.50 --port 27017 --authenticationDatabase admin -u root 
    -p root  --discover

    如何查看副本集属性信息与同步状态?

    使用客户端mongo连接到primary节点,执行命令rs.status()查 看副本集属性,其中“set”字段是副本集的id。

    执行命令rs.printReplicationInfo() 查看oplog的使用情况。

    使用客户端mongo连接到 secondary节点,执行命令rs.printSlaveReplicationInfo()查看与primary节点的同 步状态,可以看到是否落后primary。

    18、如何使用API创建Mongos?

    如果InServer自建mongos比较麻烦,也可以通过API调用来创建mongos,具体方法可以参见 CreateInDBRouteInstance。

    如何实现跨机房热迁移MongoDB?

    要求是将 MongoDB从X机房热迁移至Y机房,基本原理是将Y机房的MongoDB实例加入到X机房MongoDB的副本集中,通过复制的方式迁移数据,同步完成后,提升Y机房的MongoDB实例为primary节点。

    为保证迁 移过程不会出现单点故障或者无法选举primary等导致不可用,要求X机房的MongoDB副本集是多点的,节点数维持奇数个,在热迁移完成之前,不能停机。确保应用层链接db并非使用固定ip,而是驱动。MongoDB官网可以查看如何连接副本集,利用高可用特性。过 程包括:

    在Y机房创建一个primary节点;

    在Y机房的primary节点创建若干个从节点或者仲裁节点;

    联系我们提供协助,将Y机房的所有db实例加入到X机房的副本集;

    观察Y机房db的同步状态;

    如果完成后,则可以对副本集重置,提升Y机房的某个节点为新primary节点;

    登陆到Y机房的新primary节点重置副本集,逐台remove X机房的db实例;

    按需要,完成迁移后,可以在控制台删除X机房的db实例;

    19、如何修改local库的大小?

    一旦DB申请成功后,不再支持修改oplogSize的大小,只支持申请DB之前修改。

    如果是普通的sharding server,我们UDB的默认local库大小是5G。如果您需要设置成指定的大小,可以在新建MongoDB时前,先新建一个自定义配置文件,修改oplogSize大小来设置,并使用该自定义配置文件来创建DB。

    如果写操作比较频繁,建议根据申请的磁盘容量适当调大oplogSize的大小。

    如果是config server,系统会默认生成一个大概几十M的local库,即使申请DB阶段设置local库大小也无效。

    20、mongoDB-3.2备份文件解压

    linux环境:

    mongoDB-3.2的备份文件为.tgz格式,解压时执行如下命令:

     gunzip -c xxxxxxxxxx.tgz > xxxxxxx.mongoarchive

    手动恢复的命令如下:

     mongorestore -h <host> -u <user> -p <pwd> --archive=xxxxxxx.mongoarchive

    Windows环境:

    下载的mongoDB-3.2的备份文件的后缀名是.tgz,将后缀名改为mongoarchive.gz,然后再通过解压软件解压缩。

    21、如何连接MongoDB云数据库

    连接副本集

    如果MongoDB采用的是副本集方式,那么连接MongoDB时需要设置一个正确的连接URI,这样后续Primary节点宕机才可以成功的进行漂移,应用层无需变更连接设置,自动具有高可用。各类语言的驱动都支持URI连接。一般副本集连接的URI字符串格式如下,包括账户、密码和副本集各个节点的IP和端口。

     URI: mongodb://user:password@ip1:port1,ip2:port2,…

    假如URI的内容如下:

     

    mongodb://clouder:edFO09SkdU@10.9.57.241:27017,10.9.40.112:27017,10.9.35.45

    :27017/test

    那么正确的连接方式是:

     
    client=MongoClient('mongodb://clouder:edFO09SkdU@10.9.57.241:27017,10.9.40.
    112:27017,10.9.35.45:27017/test')

    MongoDB只支持在Primary节点上进行写操作,不过读操作可以有以下几种,客户可以根据自身业务需求选择合适的读取策略。

    primary:默认设置,所有的读操作都在Primary节点

    primaryPreferred:优先读取Primary节点,Primary不可用的话读取Secondary节点

    secondary:所有的读操作都读取Secondary节点

    secondaryPreferred:优先读取Secondary,Secondary不可用的情况下读取Primary

    nearest:读取网络延迟最低的节点

    举个例子,假如需要实现读写分离,即优先读取Secondary节点,连接超时为500ms,那么URI配置如下:

     

    mongodb://clouder:edFO09SkdU@10.9.57.241:27017,10.9.40.112:27017,10.9.35.45

    :27017/test?connectTimeoutMS=500&readPreference=secondaryPreferred

    连接分片集群

    连接到分片集群的方式和连接到普通MongoDB实例的方式完全相同,不过当存在多个mongos实例的情况下,即使URI里写全了mongos实例的IP也无法自动做到mongos本身的高可用和负载均衡,通常这个可以通过搭建HaProxy或者LVS的方式实现。 假设存在三个mongos节点,分别为IP1,IP2,IP3,而HaProxy的代理IP为IP4,采用简单的roundrobin轮询策略,则连接URI举例如下:

     
    mongodb://clouder:edFO09SkdU@IP4:27017/test?connectTimeoutMS=500&readPrefer
    ence=secondaryPreferred

文档是否已解决您的问题?

  已解决   未解决

如您有其它疑问,您也可以与我们技术专家联系探讨。

联系技术专家