mongoDB的增量备份

目标:实现mongoDB主备中心的数据同步,服务的无缝切换

在这里插入图片描述
本次使用阿里的mongoShake功能实现同步(mongoShake windows和liunx都可以使用,本次为windows),并附上开启自启脚本

阿里开源了mongoshake

git地址:https://github.com/alibaba/MongoShake/releases/tag/release-v2.4.10-20200814

go语言编写,可直接下载编译好的包 ,测试采用的是mongo-shake-v2.4.10.tar.gz

增量同步基本能做到秒级同步

1.解压压缩包

2.修改配置文件collector.conf

(注意已测试,在初次同步时需要修改同步当时为full,否则无法同步,全量同步后,再改同步方式为incr执行)

mongo_urls = mongodb://username:password@10.1.1.1:1001,10.2.2.2:2002,10.3.3.3:3003 #源端连接串信息,逗号分隔不同的mongod

sync_mode = all # 同步模式,all表示全量+增量同步,full表示全量同步,incr表示增量同步。

tunnel.address = mongodb://username:password@10.5.5.5:5005, 10.6.6.6:6006, 10.7.7.7:7007 #目的端连接串信息,逗号分隔不同的mongod

3执行命令collector.windows -conf=collector.conf

全量同步会很快执行完,增量同步则显示一直执行的状态

4.建议增量同步脚本改成开启自启方式

a.创建一个txt文件,写入增量同步的命令 如下,并改扩展名为bat

rem ******MongoDB backup start********
@echo off
d:
rem 此处改为本机mongoshake的地址
cd D:\ck\devlopsTools\mongo-shake-v2.4.10\mongo-shake-v2.4.10
collector.windows -conf=collector.conf
@echo on

b.新建脚本mongosync.vbs,内容如下,换成bat脚本的地址

createobject("wscript.shell").run"C:\Users\Lenovo\Desktop\mongosync.bat",0

4、创建run.vbs的快捷方式,移动到:C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
C:\ProgramData\Microsoft\Windows\【开始】菜单\程序\启动
即开机自启

测试: mongoDB 可以支持从集群往单节点同步,单节点同步其他,因为mongoshake是以oplog来同步的,单节点是没有oplog的,因此备中心最好也是个集群,在切换时中心,mongoshake将源mongoDB地址和目的mongoDB地址切换,即可同步

在172.21.15.13,172.21.15.14,172.21.15.16新搭建的副本集作为了备用中心,在本地和172.21.15.15上同时部署了mongoshake进行了测试(mongoshake)可以多部署

以下和mongoshake同步无关,是个人所写windows下mongoDB同步代码,需要可以随便看看
由于mongoDB官方对增量备份不是很支持,网上大多是liunx用的备份工具,故写此文章。
需求:主中心3节点,备中心一节点,主备中心不是同一个集群但是可以ping,现在要求备中心每5分钟增量主中心数据

定时任务+mongoDB工具
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
指定targetMongoTemplate的数据库

@Configuration
@EnableMongoRepositories
@EnableTransactionManagement
@ComponentScan
public class MongoDBConfig extends AbstractMongoConfiguration {
    @Value("${spring.data.target.mongodb.uri}")
    private String targetUri;
    @Bean(name = "targetMongoTemplate")
    public MongoTemplate getSecondaryMongoTemplate() {
        SimpleMongoDbFactory simpleMongoDbFactory = new SimpleMongoDbFactory(new MongoClientURI(targetUri));
        return new MongoTemplate(simpleMongoDbFactory);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值