应用场景
- 减轻主节点负载:在主节点进行备份操作会占用大量系统资源,影响正常业务读写。隐藏成员由于不参与读操作,可专门用于备份任务,避免干扰主节点服务。
- 不影响集群性能:对于有高并发读写需求的集群,隐藏成员备份不会增加集群的读压力,保障业务性能不受备份操作影响。
优势
- 数据一致性:隐藏成员从主节点同步数据,能保证备份数据与主节点数据的一致性,确保备份的有效性。
- 灵活性:可根据实际需求,灵活安排隐藏成员进行备份,不影响其他成员的正常工作。
操作步骤
- 连接隐藏成员:使用MongoDB客户端工具,通过正确的连接字符串连接到隐藏成员节点。
- 选择备份方式:
- mongodump工具:在命令行执行
mongodump --uri="mongodb://隐藏成员地址:端口" --out=/备份目录
,该命令会将隐藏成员上的所有数据库数据备份到指定的/备份目录
。
- 脚本备份:可以编写Python脚本,使用
pymongo
库连接隐藏成员,遍历数据库和集合,将数据导出为合适的格式(如JSON)进行备份。示例代码如下:
import pymongo
import json
client = pymongo.MongoClient("mongodb://隐藏成员地址:端口")
dbs = client.list_database_names()
for db_name in dbs:
db = client[db_name]
collections = db.list_collection_names()
for col_name in collections:
col = db[col_name]
data = list(col.find())
with open(f"{db_name}_{col_name}.json", "w") as f:
json.dump(data, f)
- 定期执行:利用系统任务调度工具(如Linux的
crontab
),设置定时任务来定期执行上述备份命令或脚本。例如,若使用mongodump
,编辑crontab
文件,添加0 2 * * * mongodump --uri="mongodb://隐藏成员地址:端口" --out=/备份目录
,表示每天凌晨2点执行一次备份操作。