注册

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

复制MongoDB数据库和集合是一种灵活、高效的数据备份方式。它可以保证数据的高可用性,减少数据丢失的风险。本教程将介绍如何在不同主机间复制MongoDB数据库和集合。

1. 安装MongoDB

首先,需要在你的计算机或服务器上安装MongoDB。安装方式可以参考MongoDB的官方文档。

2. 配置MongoDB

在此之前,需要先准备好两台计算机。假设它们的IP地址分别为192.168.0.100192.168.0.200。这里选择的是基于主从备份架构进行配置。

配置主服务器

编辑主服务器的配置文件/etc/mongod.conf,将以下内容插入:

replication:
  replSetName: "myReplicaSet"

然后重启MongoDB。

sudo systemctl restart mongod

接着,进入MongoDB Shell命令行,并初始化一个副本集:

sudo mongo
rs.initiate()

配置从服务器

编辑从服务器的配置文件/etc/mongod.conf,将以下内容插入:

replication:
  replSetName: "myReplicaSet"

然后重启MongoDB。

sudo systemctl restart mongod

3. 复制MongoDB数据库和集合

假设原始数据库mydb在主服务器上,现在需要将它复制到从服务器上。

步骤一:在主服务器上创建用户

进入MongoDB Shell,使用以下命令创建用户。

use mydb
db.createUser({user: "replicaUser", pwd: "replicaPassword", roles: [{role: "read", db: "local"}]})

步骤二:在从服务器上授权

进入MongoDB Shell,使用以下命令完成授权。

use admin
db.auth("adminUser", "adminPassword")
rs.slaveOk()

步骤三:在从服务器上复制数据库和集合

进入MongoDB Shell,使用以下命令复制数据库和集合。

use mydb
db.copyDatabase("mydb", "mydb_copy", "192.168.0.200", "replicaUser", "replicaPassword", {copyIndexes: true, writeConcern: {w: "majority"}})

示例1

mydb复制到从服务器上,并保留数据索引。

use mydb
db.copyDatabase("mydb", "mydb_copy", "192.168.0.200", "replicaUser", "replicaPassword", {copyIndexes: true, writeConcern: {w: "majority"}})

示例2

mydb中的mycollection集合复制到从服务器上,并保留数据索引。

use mydb
db.runCommand({ cloneCollection: "mydb.mycollection" , from: "192.168.0.100", writeConcern: {w: "majority"} });

结论

以上就是在不同主机间复制MongoDB数据库和集合的完整攻略。在具体操作中,请务必根据自己的实际情况进行设置和修改。