mongodb单实例开启oplog

需求

  • 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
  • 重启mongodb
docker restart mongodb
  • 使用mongo shell连接到MongoDB,并使用以下命令初始化复制集
rs.initiate()
  • 登陆mongodb 查看oplog 是否已经开启
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)
}

posted @ 2024-05-10 13:47  lixinliang  阅读(259)  评论(0编辑  收藏  举报