MongoDB

MongoDB 是一款高性能、开源的 NoSQL 文档数据库。

在新浪云上,你可以很方便的创建和管理 MongoDB 集群。目前 MongoDB 集群采用三节点副本集的高可用架构,三个数据节点位于不同的物理服务器上,自动同步数据。其中 Primary 和 Secondary 节点提供服务,当 Primay 节点出现故障,系统自动选举新的 Primary 节点。 同时我们还提供了在线扩容、自动备份、监控等功能来帮助你更好地管理集群。

创建

进入云应用控制台的任一应用管理页面,点击左侧栏的『数据库与缓存/MongoDB』,进入 MongoDB 的管理页面,点击上方的『创建 MongoDB』,如下图所示:

../../_images/mongodb-create.png

创建实例需要设置以下参数:

  • 名称:最大长度不超过 32 个字符,限英文、数字、下划线,横线。
  • 配置:目前提供 4 种配置的 MongoDB 实例。

创建成功后,点击实例管理,即可进入信息页面,在信息页面中,可以查看连接实例需要的URI,以及用户名密码等信息。

../../_images/mongodb-info.png

数据导入

如果你想将自己现有 MongoDB 实例里的数据导入到新浪云线上的 MongoDB 实例里,可以按以下步骤操作:

使用 mongodump 导出数据:

$ mongodump --host=MongoDB 地址 --username= 用户名 --password= 密码

导出成功后,会在当前目录生成一个 dump 目录,所有的数据都会被导出到 dump 目录中。

通过 VPN 隧道 连接到新浪云的云端网络。执行以下命令将数据导入到线上 MongoDB 实例里。

$ mongorestore --host=MongoDB 地址 --username= 用户名 --password= 密码 --dir=dump

注解

mongodumpmongorestore 是 MongoDB 的命令行导入 / 导出工具。

Windows环境下数据导入

连接VPN

MongoDB的服务端默认只能从新浪云的内网访问,您在本地使用mongorestore程序导入本地的数据前,必须要通过新浪云提供的CloudBridge连接到新浪云的内网,如何使用请参考:http://www.sinacloud.com/doc/sae/php/cloudbridge.html

下载Git for Windows

在Windows环境下推荐使用Git for Windows程序运行命令行,并推荐1.9.15版本,下载地址: https://github.com/msysgit/msysgit/releases/download/Git-1.9.5-preview20150319/Git-1.9.5-preview20150319.exe

下载MongoDB Windows版本

安装完成Git for Windows后从MongoDB官方下载Windows版本 https://www.mongodb.com/download-center#community,选择“community”下载Windows分类的msi程序安装。

示例中,MongoDB被安装到了 D:\Program Files\MongoDB\Server\3.6\bin 目录,如图所示:

../../_images/mongodb_bin_dir.png

注解

如果您安装了程序到其他的路径,以下的路径请自行更换为您安装的路径。

找到mongorestore命令

在安装的路径下可以看到mongorestore.exe的程序,这个程序就是用于导入数据的程序,如图所示:

../../_images/mongo_restore_intro.png

执行数据导入命令

D:\Program Files\MongoDB\Server\3.6\bin 目录下点击鼠标右键,选择“Git bash”进入命令行:

../../_images/git-bash.png

执行命令:

mongorestore --host xxxxxxx.mongodb.sae.sina.com.cn:10101,yyyyyyyy.mongodb.sae.sina.com.cn:10101 --username root --password YCg7L3GoB7bXXXXXXXXXXXXXXXXXXXXRLMqHO3CguDg47 /D/6code/mongodb/

注解

以上的host、username等等信息请替换成您的MongoDB的链接信息,管理后台可以查询。

  说明
–host 数据库的连接信息,新浪云为replicaset模式,多个主机端口间请用英文逗号分割,参考示例
–username 数据库用户名,在新浪云都是root
–password 数据库密码,在管理平台可以查询
/D/6code/mongodb/ 本地的数据目录,表示D盘下的6code文件夹下的mongodb文件夹。
–db 本例子中没有指定,如果指定了表示将数据导入到某个特定的库中。

导入完成

从命令行中可以看到导入已经完成,如图所示:

../../_images/importsuccess.png

从RockMongo中也可以查询到刚刚导入的数据:

../../_images/import-success-mongoadmin.png

管理

你可以通过 VPN 隧道 连接到新浪云的云端网络。然后使用 MongoDB Admin UIs 这里列出的任意管理工具来管理 MongoDB。

也可以通过新浪云提供的 Web 客户端进行管理,在对应实例后面的操作栏中选择『管理』即可。

删除

进入 MongoDB 的管理页面,在对应实例后面的操作栏中选择『删除』即可。

扩容

你可以在线扩大或者缩小 MongoDB 实例的内存容量,进入 MongoDB 的管理页面,在对应实例后面的操作栏中选择『修改』即可,扩容期间 MongoDB 会重启,可能会造成短时间的服务不可用。

高可用

MongoDB 复制集(Replica Set) 通过存储多份数据副本来保证数据的高可靠,通过自动的主备切换机制来保证服务的高可用。但需要注意的是,连接副本集需要使用特殊的连接字符串,否则服务高可用将不复存在。

因此,连接时需要使用形如 mongodb://[username:password@]host1[:port1][,host2[:port2],…[,hostN[:portN]]][/[database][?options]] 的连接字符串,该字符串可以在服务详情页查询到。

NodeJS

你可以使用 mongodb <https://github.com/mongodb/node-mongodb-native> 来连接 MongoDB 数据库。

安装并添加依赖到package.json:

$ npm install --save mongodb

使用:

var MongoClient = require('mongodb').MongoClient;

MongoClient.connect(MONGODB_URI, function(err, db) {
    if(err) throw err;
    // ...
});

Go

您可以使用 mgo 来连接 MongoDB 数据库。

import "gopkg.in/mgo.v2"

session, err := mgo.Dial(MONGODB_URI)

Python

您可以使用 MongoDB 官方提供的 pymongo 来访问 MongoDB 数据库。

添加 pymongorequirements.txt 。然后就可以使用其API访问 MongoDB 了。

import pymongo
pymongo.MongoClient(MONGODB_URI)

其中 MONGODB_URI 是 MongoDB 的连接字符串,你可以在你创建的 MongoDB 数据库的管理页面找到这个字符串。

Java

在已经建立好的容器Java项目中的 pom.xml 文件中引入

<dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongo-java-driver</artifactId>
        <version>3.2.2</version>
</dependency>

通过在命令行中使用mvn package或者Eclipse自动编译会从中央仓库下载相应的jar包到本地仓库中

具体的使用方法:

MongoClientURI uri = new MongoClientURI("MONGODB_URI");
MongoClient client = new MongoClient(uri);
MongoDatabase db = client.getDatabase("test");
MongoCollection<Document> users = db.getCollection("users");
Document user = new Document("key", "sinacloud");
users.insertOne(user);

其中 MONGODB_URI 是 MongoDB 的链接字符串 ,你可以在你创建的 MongoDB 数据库的管理页面找到这个字符串。