《Linux运维总结:使用 MongoDB工具备份和恢复mongodb 7.0.14分片集群(方案一)》
总结:整理不易,如果对你有帮助,可否点赞关注一下?
更多详细内容请参考:《Linux运维篇:Linux系统运维指南》
一、备份说明
1、要使用mongodump备份分片集群,您必须 停止负载均衡器、 停止写入,避免备份的数据出现状态不一致问题。
2、从MongoDB7.0.2开始(也可以从6.0.11和5.0.22开始使用),fsync和fsyncUnlock命令可以在mongos上运行,以锁定和解锁分片集群。
二、备份步骤
2.1、查找备份窗口(路由节点)
说明、要找到执行备份的好时机,请监控应用程序和数据库的使用情况,以找到不太可能发生数据块迁移、重分片和模式转换操作的时间。
负载均衡默认是开启的,为了避免chunk迁移影响线上业务,可以通过设置迁移执行窗口,例如只允许凌晨02:00~06:00期间进行迁移。
# 连接其中一个路由节点
use config
db.settings.updateOne(
{
_id : "balancer" },
{
$set : {
activeWindow : {
start : "02:00", stop : "06:00" } } },
true
)
db.settings.find({
_id: "balancer" })
如下图所示:
总结、此操作将负载均衡器配置为在服务器时间上午02:00到晚上06:00之间运行。 安排备份操作在此时间之外运行和完成。 确保当负载均衡器正在运行时,备份可以在窗口外完成,并且负载均衡器可以在分配给每个分片的窗口中有效地平衡分片之间的集合。
2、假设你希望恢复到默认的活动窗口设置(例如,不启用活动窗口限制),你可以再次使用updateOne命令:
use config
db.settings.updateOne(
{
_id : "balancer" },
{
$unset : {
activeWindow : "" } },
{
upsert: true }
)
db.settings.find({
_id: "balancer" })
2.2、停止负载均衡器(路由节点)
为防止数据块迁移干扰备份,请连接到其中一个路由节点并使用 sh.stopBalancer() 方法停止负载均衡器:
[direct: mongos] test> sh.isBalancerRunning().mode
[direct: mongos] test> sh.stopBalancer()
[direct: mongos] test> sh.isBalancerRunning().mode
off
如果返回值为off,则表示已经关闭,如下图所示:
2.3、锁定集群(分片节点)
说明:路由节点、配置节点不需要锁定,分片节点需要锁定。分片节点通过主节点进行锁定,锁定完成后,需要在路由节点确认锁定集群。
1、未锁定集群前,路由节点查看锁定情况
[direct: mongos] test> db.getSiblingDB("admin").aggregate( [
{
$currentOp: {
} },
{
</