需求
- DTS传输同步数据的需求,需要将mongodb里的数据更新、数据增加操作同步给FC函数
MongoDB中的Oplog(操作日志)是一个特殊的集合,用于记录数据库的所有操作。Oplog是MongoDB复制集中的一个重要组成部分,它允许从节点通过读取Oplog来实现与主节点的数据同步。所以要把单实例调整成复制集
mongodb改造
- 创建一个用于加密内部通信的 keyfile。你可以使用 openssl 工具来生成这个 keyfile。例如
openssl rand -base64 756 > /data/mongodb-keyfile
- 传输keyfile 到mongo容器里,并修改keyfile权限
docker cp /data/mongodb-keyfile mongodb:/data/mongodb-keyfile
docker exec -it mongodb bash
chown mongodb:mongodb mongodb-keyfile
chmod 400 mongodb-keyfile
- Mongodb 配置文件增加配置 replSet = single
[root@dev-test-lingowhale conf]# cat mongod.conf
# 数据库文件存储位置
dbpath = /data/db
# 开启oplog
replSet = single
# keyfile
# log文件存储位置
logpath = /data/log/mongod.log
# 使用追加的方式写日志
logappend = true
# 是否以守护进程方式运行
# fork = true
# 全部ip可以访问
bind_ip = 0.0.0.0
# 端口号
port = 27017
# 是否启用认证
auth = true
keyFile = /data/mongodb-keyfile
# 设置oplog的大小(MB)
oplogSize=2048
docker restart mongodb
- 使用mongo shell连接到MongoDB,并使用以下命令初始化复制集
rs.initiate()
single:PRIMARY> db['oplog.rs'].stats()
{
"ns" : "test.oplog.rs",
"size" : 0,
"count" : 0,
"storageSize" : 0,
"totalSize" : 0,
"nindexes" : 0,
"totalIndexSize" : 0,
"indexSizes" : {
},
"scaleFactor" : 1,
"ok" : 1,
"$clusterTime" : {
"clusterTime" : Timestamp(1715319432, 1),
"signature" : {
"hash" : BinData(0,"mQRqjZJmFolrAiK6Hz3xZfvazKA="),
"keyId" : NumberLong("7366889040387244037")
}
},
"operationTime" : Timestamp(1715319432, 1)
}