• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >MongoDB > MongoDB在不同主机间复制数据库和集合的教程

MongoDB在不同主机间复制数据库和集合的教程

作者:lucifercn 字体:[增加 减小] 来源:互联网 时间:2017-05-11

lucifercn通过本文主要向大家介绍了mongodb数据库教程,mongodb数据库,mongodb创建数据库,mongodb删除数据库,mongodb连接数据库等相关知识,希望本文的分享对您有所帮助

1. db.cloneCollection()
db.cloneCollection(from, collection, query)
在不同的mongodb实例间复制数据,db.cloneCollection是cloneCollection数据库命令的一个外在体现。

function (from, collection, query) {
 assert( isString(from) && from.length );
 assert( isString(collection) && collection.length );
 collection = this._name + "." + collection;
 query = query || {};
 return this._dbCommand( { cloneCollection:collection, from:from, query:query
} );
}
</div>

参数:

from  string  包含需要复制的表的mongodb实例主机名
collection string  数据实例中需要复制的表名,该命令只可以复制远程mongodb实例上相同数据库名称的表
query  document 可选的选项。标准的查询语句过滤掉不需要的文档
</div>

db.cloneCollection()不允许通过mongos来复制表,只能通过mongod实例来操作。
示例:
192.168.11.51 mongod实例mydb库,bar集合:

{ "_id" : ObjectId("53687d9df433cf04b788c6d1"), "name" : "dog" }
{ "_id" : ObjectId("53687ff1f433cf04b788c6d2"), "name" : "cat" }
{ "_id" : ObjectId("53687ff4f433cf04b788c6d3"), "name" : "tiger" }
</div>

本地mongod实例mydb库,复制远程主机的bar集合中满足查询条件的文档:

db.cloneCollection("192.168.11.52", "bar", {"name" : "tiger"})
db.bar.find();
{ "_id" : ObjectId("53687ff4f433cf04b788c6d3"), "name" : "tiger" }
</div>

2. db.cloneDatabase()
db.cloneDatabase("hostname")
复制远程主机的数据库到本地,该命令假设远程mongodb实例中拥有与本地相同的数据库名称。

hostname  string  包含需要复制的数据库的mongodb实例主机名
</div>

db.cloneDatabase是clone数据库命令的一个外在体现。

function (from) {
 assert( isString(from) && from.length );
 return this._dbCommand( { clone: from } );
}
</div>

示例:
192.168.11.51 mongod实例mydb库,
本机mongodb实例:

use mydb
db.dropDatabase();
db.cloneDatabase("192.168.11.52");
</div>

3. db.copyDatabase()
db.copyDatabase(fromdb, todb, fromhost, username, password)
从远程主机复制数据库到本地,或从本地复制数据库到远程主机。

db.copyDatabase是copydb数据库命令的一个外在体现。
function (fromdb, todb, fromhost, username, password) {
 assert( isString(fromdb) && fromdb.length );
 assert( isString(todb) && todb.length );
 fromhost = fromhost || "";
 if ( username && password ) {
  var n = this._adminCommand( { copydbgetnonce : 1, fromhost:fromhost } );

  return this._adminCommand( { copydb:1, fromhost:fromhost, fromdb:fromdb,
 todb:todb, username:username, nonce:n.nonce, key:this.__pwHash( n.nonce, userna
me, password ) } );
 } else {
  return this._adminCommand( { copydb:1, fromhost:fromhost, fromdb:fromdb,
 todb:todb } );
 }
}

</div>

参数:

fromdb  string  源数据库名称
todb  string  目标数据库名称
fromhost string  可选项,源数据库的主机名。如果是同一主机,忽略该选项
username string  可选项,源主机名用户名
password string  可选项,源主机名用户名对应密码
</div>

属性:
(1)db.copyDatabase()运行在目标主机的mongod实例上。
(2)db.copyDatabase()会创建目标数据库,如果其原来不存在。
(3)db.copyDatabase()需要目标机器上有足够的空间进行复制。
(4)db.copyDatabase()并不会产生目标数据库的即时快照。如果在复制过程中在源或目标库发生读写操作,会导致数据库不一致。
(5)db.copyDatabase()在操作过程中并不会锁住目标主机,所以复制过程中可能出现暂时的中断来完成其他操作。
源数据库(fromdb):
mongodb2.6需要在源主机和目标主机拥有以下权限来执行copydb。
(1)如果源主机数据库不是admin,必须确保拥有以下权限:
{ resource: { db: "mySourceDB", collection: "" }, actions: [ "find" ] }
{ resource: { db: "mySourceDB", collection: "system.js" }, actions: [ "find" ] }
如果源主机是一台远程主机,必须确保拥有以下权限:

{ resource: { db: "mySourceDB", collection: "system.indexes" }, actions: [ "find" ] }
{ resource: { db: "mySourceDB", collection: "system.namespaces" }, actions: [ "find" ] }
</div>

(2)如果源主机数据库是admin,必须确保拥有以下权限:

{ resource: { db: "admin", collection: "" }, actions: [ "find" ] }
{ resource: { db: "admin", collection: "system.js" }, actions: [ "find" ] }
{ resource: { db: "admin", collection: "system.users" }, actions: [ "find" ] }
{ resource: { db: "admin", collection: "system.roles" }, actions: [ "find" ] }
{ resource: { db: "admin", collection: "system.version" }, actions: [ "find" ] }
</div>

如果源主机是一台远程主机,必须确保拥有以下权限:

{ resource: { db: "admin", collection: "system.indexes" }, actions: [ "find" ] }
{ resource: { db: "admin", collection: "system.namespaces" }, actions: [ "find" ] }
</div>

(3)源数据库在远程主机
如果从一个拥有用户认证的远程主机复制数据库,需要一个拥有恰当的权限的用户认证。
目标数据库(todb):
A、如果目标主机数据库不是admin,必须确保拥有以下权限:

{ resource: { db: "myTargetDB", collection: "" }, actions: [ "insert", "createIndex" ] }
{ resource: { db: "myTargetDB", collection: "system.js" }, actions: [ "insert" ] }
</div>

B、如果目标主机数据库是admin,必须确保拥有以下权限:

resource: { db: "myTargetDB", collection: "" }, actions: [ "insert", "createIndex" ] },
{ resource: { db: "myTargetDB", collection: "system.js" }, actions: [ "insert" ] },
{ resource: { db: "myTargetDB", collection: "system.users" }, actions: [ "insert" ] },
{ resource: { db: "myTargetDB", collection: "system.roles" }, actions: [ "insert" ] },
{ resource: { db: "myTargetDB", collection: "system.version" }, actions: [ "insert" ] }
</div>

示例:
192.168.11.51 mongod实例mydb库,
复制到本地newmydb库:

db.copyDatabase("mydb", "newmydb", "192.168.11.52");
</div>

4. cloneCollection
从远程mongodb实例复制集合到当前mongodb实例。集合名称是一致的:

{ cloneCollection: "<namespace>", from: "<hostname>", query: { <query> } }
</div>

cloneCollection拥有以下的域值:

cloneCollection  string  集合的命名空间,命名空间包含了数据库名和集合名的组合
from    string  指定远程主机名和可选的端口号
query    document  可选的,过滤选项
</div>

示例:
192.168.11.51 mongod实例mydb库,bar集合:

{ "_id" : ObjectId("53687d9df433cf04b788c6d1"), "name" : "dog" }
{ "_id" : ObjectId("53687ff1f433cf04b788c6d2"), "name" : "cat" }
{ "_id" : ObjectId("53687ff4f433cf04b788c6d3"), "name" : "tiger" }
</div>

本地mongod实例:

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • MongoDB数据库查询性能提高40倍的经历分享
  • MongoDB在不同主机间复制数据库和集合的教程
  • MongoDB数据库的特色和优点介绍
  • Mongodb数据库的备份与恢复操作实例
  • mongodb 数据库操作--备份 还原 导出 导入
  • MongoDB数据库forEach循环遍历用法
  • mongodb数据库游标的使用浅析
  • mongodb数据库的6个安全设置命令
  • MongoDB数据库插入、更新和删除操作详解
  • 1亿条记录的MongoDB数据库随机查询性能测试

相关文章

  • 2017-05-11MongoDB中游标的深入学习
  • 2017-05-11如何对 MongoDB 进行性能优化(五个简单步骤)
  • 2017-05-11mongodb 修改用户密码 2种方法
  • 2017-05-11MongoDB错误32-bit servers don't have journaling enabled by default解决方法
  • 2017-05-11PHP库 查询Mongodb中的文档ID的方法
  • 2017-05-11MongoDB的安装方法图文教程
  • 2017-05-11Ubuntu中安装MongoDB及执行一些简单操作笔记
  • 2017-05-11MongoDB系列教程(三):Windows中下载和安装MongoDB
  • 2017-05-11MongoDB社区版和企业版的差别对照表
  • 2017-05-11Mongodb启动命令参数中文说明

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • PHP中MongoDB数据库的连接、添加、修改、查询、删除等操作实例
    • MongoDB系列教程(四):设置用户访问权限
    • MongoDB的查询方法
    • Mongodb安装与配置笔记
    • 深入分析Mongodb数据的导入导出
    • MongoDB快速翻页的方法
    • mongoDB在windows下安装与配置方案
    • cgroup限制mongodb进程内存大小
    • NoSQL反模式 - 文档数据库篇
    • MongoDB使用小结:一些不常见的经验分享

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有