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)
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章