在进行数据存储时,备份与容灾是非常重要的步骤。在 MongoDB 中,也需要进行数据的备份与容灾,以确保数据的安全性。本文将详细介绍 MongoDB 的容灾备份实现方法。
MongoDB 备份方法
- 备份到本地
MongoDB 提供了 mongodump 命令行工具,可以将数据备份到本地。使用该命令,可以将 MongoDB 中的数据以 bson 的形式备份到指定目录中。例如,执行以下命令:
mongodump --db <databaseName> --out <backupFolderPath>
--db
参数指定要备份的数据库名称。--out
参数指定备份文件的存储目录。
- 备份到云端
备份到云端可以更好地保护数据,使其不会受到物理设备和地理位置的限制。在 MongoDB 官方提供了 Atlas 云数据库服务,使用该服务,可以方便地将 MongoDB 数据备份到云端。同时可以自动备份,保证数据的可靠性。接下来,我们将了解将 MongoDB 备份到 Atlas 的方法。
(1) 创建 Atlas 帐户
首先,需要创建 Atlas 帐户。填写必要信息创建 Atlas 帐户。创建完成后,就可以创建要使用的集群。
(2) 创建 Atlas 集群
在 Atlas 的控制台中,选择“Clusters”,然后点击“Create a new Cluster”按钮。填写基本信息并选择集群中的实例类型,然后创建集群。
(3) 开启备份功能
在 Atlas 集群的控制台中,选择“Clusters”,然后在“Security”选项卡中,找到“Backup & Restore”选项。在该页面中,可以启用备份功能,选择最好的备份策略。备份选择的时期和频率会影响存储和费用,因此需要在选择时考虑清楚。
MongoDB 容灾方法
在 MongoDB 中,容灾主要可以分为两个方面:复制集和分片集群。下面我们将介绍这些容灾方法。
- 复制集
复制集是一种数据同步的方法,即将数据从一个 MongoDB 服务器同步到另一个 MongoDB 服务器。MongoDB 中的复制集至少包含两个节点,具体包含以下三个角色:
主节点:默认情况下,一个节点是主节点。主节点读写数据,并将写入操作异步复制给其他节点。
副本节点:由主数据节点发出的写入操作被异步复制到副本节点。副本节点不能处理写入操作,但可以读取从主节点同步的数据。
仲裁节点:仲裁节点只有在主节点不可用时才会发挥作用。它将决定副本节点哪个节点应该成为主节点。仲裁节点通常启动时很小,不使用存储,不需要主要硬件资源。
通过使用复制集,可以确保在主节点发生故障时也可以从副本节点读取数据。复制集可以使用以下命令进行部署:
mongod --configsvr --replSet RS1 --port 20000 --dbpath /data/db
- 分片集群
分片集群是一种多节点分布式集合,数据可以分布在多个服务器中。分片功能允许您在单个 MongoDB 部署中分散大量数据。用户可在分片数据库中分享数据交易负载。分片可以使用以下命令进行部署:
mongos --configdb configdb.example.net:27019 --port 27017 --fork --logpath /log/mongos.log
如何进行容灾备份
当需要设置 MongoDB 的容灾和备份策略时,可以将上述容灾方法与备份方法相结合。在有了复制集或分片集群之后,保障数据库的容灾性就变得容易了。可以对复制集或分片集群进行mongodump命令的备份,也可以启用 Atlas Cloud 数据库服务中提供的自动备份功能。
mongodump --host <hostname> --port <portNumber> --out <backupFolderPath>
示例代码
以下代码是备份 MongoDB 数据库到本地的示例:
mongodump --db mydb --out /data/db/dump/
以下代码是备份 MongoDB 数据库到 Atlas 的示例:
mongodump --uri mongodb+srv://user:password@cluster0.mongodb.net/mydb --gzip --archive=/data/db/mydb.archive
以下代码是设置一个带三个节点的复制集:
rs.initiate() rs.add('192.168.1.1:27017') rs.add('192.168.1.2:27017') rs.add('192.168.1.3:27017')
以下代码是设置一个带两个 Shard 的分片集群:
mongos> sh.addShard("shard001.example.net:27017") mongos> sh.addShard("shard002.example.net:27017")
结论
对于任何数据库,容灾和备份都是很重要的。MongoDB 内置许多能够确保数据可靠性的特性,包括分片和复制集。在设置容灾策略时一定要选择正确的方法,同时不能忽略数据备份的重要性。有了本文提供的知识基础,希望大家能够更好地理解 MongoDB 的容灾备份策略,并可以相应地实施它们。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/671500b5ad1e889fe2169515