MongoDB备份和还原数据库教程
MongoDB 提供的命令行实用程序mongodump
和mongorestore
创建备份和恢复数据的过程。
一、数据备份
mongorestore
和mongodump
实用程序可处理BSON数据转储,对于创建小型部署的备份非常有用。要实现弹性且无中断的备份,请将文件系统快照或区块级磁盘快照与 MongoDB Atlas 的云备份结合使用。
性能影响
由于mongodump和mongorestore是通过与正在运行的mongod实例交互来进行操作的,因此它们可能会影响正在运行的数据库的性能。这些工具不仅会为正在运行的数据库实例创建流量,还会强制数据库通过内存读取所有数据。当 MongoDB 读取不常使用的数据时,它可能会逐出更频繁访问的数据,从而导致数据库常规工作负载的性能下降。
排除 local 数据库
mongodump
会在其输出中排除local
数据库的内容。
local数据库:用于存储诊断信息、复制集配置和操作日志等数据,其中的集合不会被复制
基本 mongodump 操作
mongodump`实用程序通过连接到正在运行的`mongod来备份数据。
该工具可以为整个服务器、数据库或集合创建备份,也可以结合查询来仅备份一个集合的某一部分。
备份命令
备份命令其他参数
要限制数据库转储中包含的数据量,可以指定--db
和--collection
作为mongodump
的选项。例如:
二、集群还原
适用于整个集群不可用或者误删除了部分数据无法找回的情况
下载备份到指定目录
基本 mongorestore 操作
mongorestore实用程序可恢复mongodump创建的二进制备份。默认情况下, mongorestore会在dump/目录中查找数据库备份。
mongorestore实用程序通过直接连接到正在运行的mongod来恢复数据。
mongorestore 可以恢复整个数据库备份或部分的备份。
可以考虑使用mongorestore --drop选项从数据库中删除每个集合,然后再从备份恢复。
如果恢复到强制执行访问控制的实例,请同时包括--username和--authenticationDatabase 。
还原前准备
需要保证副本集正常运行,所有游戏服都停止,不会有客户端对mongodb进行写操作。
登录mongodb副本集
查找主节点
还原命令
副本集还原和单节点命令相同,需要注意一点,要保证-h参数指定的主机为副本集的主节点。
以下为对单个库进行还原,可以按照自己的需求进行还原操作。
三、单节点还原
适用于单机点不可用,但是集群可用的情况。
向副本集添加成员
MongoDB 提供了两个用于恢复副本集从节点成员的选项:
手动将数据库文件复制到每个数据目录。
允许初始同步以自动分发数据。
具体步骤
停止数据异常的成员节点
清理数据异常的成员节点的数据目录
情况一:数据量不大,直接启动即可,初始同步会将数据从主成员复制到新成员。
情况二:数据量大,
将主成员的数据目录复制到新的辅助成员,再启动即可。