MongoShake实时同步,MongoDB1到MongoDB2
一个主(MongoDB1),一个目标(MongoDB2),集群版类似。
1. 说明:
MongoDB 下载地址(社区版,当前5.0.2):https://www.mongodb.com/try/download/community
MongoShake介绍地址: https://help.aliyun.com/document_detail/122621.htm
MongoShake下载地址: https://github.com/alibaba/MongoShake/releases
本文采用:MongoDB版本 : 4.0.4 ,MongoShake版本:2.6.5
MongoDB版本建议4.x以上,MongoShake版本2.6以上(版本低支持不太友好)
2.MongoDB (主库,目标库) 安装(简说)
安装(主,目标)MongoDB,并在mongodb目录下:
创建data文件夹用于存放数据,创建logs文件用于存放文件
mkdir data
touch logs
3.MongoDB (主库) 配置
mongodb目录下创建mongodb.conf 配置文件
touch mongodb.conf
mongodb.conf 配置如下:
dbpath=/xxx/mongodb/data #主库的data路径
logpath=/xxx/mongodb/logs #主库的logs路径
logappend=true
port=27017
fork=true
bind_ip=0.0.0.0
replSet=rs0 #副本集 rs0 自己取的副本集名称
备注:同步数据不是直接目标主库直接获取,而是走副本集oplog,mongodb的集群模式
本文单库同步只需要主库开启,目标库不需要
主库配置副本集,如下:
进入bin目录下:
[root@xxxxxx mongodb]# ./mongo
或 (如果有多个mongodb在一台机器上,最好指定端口)
[root@xxxxxx mongodb]# ./mongo 127.0.0.1:27017
> conf=
{
"_id" : "rs0",
"members" : [
{ "_id" : 0, "host" : "127.0.0.1:27017" }
]
}
> rs.initiate(conf)
{
"ok" : 1,
"operationTime" : Timestamp(1542247326, 1),
"$clusterTime" : {
"clusterTime" : Timestamp(1542247326, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
}
rs0:SECONDARY>
初始化配置:conf
备注:单库同步集群队列中,只有自己,如需集群同步,例:rs.add("127.0.0.1:27018") 添加集群
主库已经配置完成!
可以启动了:./bin/mongod -f mongodb.conf
4.MongoDB (目标库) 配置
touch mongodb.conf
mongodb.conf 配置如下:
dbpath=/xxx/mongodb2/data #目标库的data路径
logpath=/xxx/mongodb2/logs #目标库的logs路径
logappend=false
port=27018
fork=true
bind_ip=0.0.0.0
目标库配置完成!
可以启动了:./bin/mongod -f mongodb.conf
5.MongoShake
重点配置(其他配置根据自己需要修改,如集群,分片,延时同步等)
下载解压MongoShake 编辑 collector.conf
vim collector.conf
#全量同步
sync_mode = all
#无密码 mongodb 单台同步
mongo_urls = mongodb://127.0.0.1:27017
#目的库地址(本文目标库)无密码
tunnel.address = mongodb://127.0.0.1:27018
配置完成
启动:./collector.linux -conf=collector.conf
windows端 collector.windows
监控状态查看另起窗口./mongoshake-stat --port=9100