【问题标题】:Get replicationLag in mongo with pyMongo使用 pyMongo 在 mongodb 中获取复制滞后
【发布时间】:2018-05-17 18:31:41
【问题描述】:

我正在尝试使用 pymongo 从 python 获取 db.rs.printSlaveReplicationInfo,但没有得到任何正确的方法。 我尝试了以下方法,但没有任何帮助。

>>>from pymongo import MongoClient
>>>client = MongoClient()
>>>db = client.test_database
>>>db.rs.printSlaveReplicationInfo                 
Collection(Database(MongoClient([u'10.0.0.19:10006', u'10.0.0.68:10002']), u'xyz'), u'rs.printSlaveReplicationInfo')
db.rs.printSlaveReplicationInfo()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib64/python2.7/site-packages/pymongo/collection.py", line 2413, in __call__
    self.__name.split(".")[-1])
TypeError: 'Collection' object is not callable. If you meant to call the 'printSlaveReplicationInfo' method on a 'Collection' object it is failing because no such method exists.
>>> db.rs                            
Collection(Database(MongoClient([u'10.0.0.19:10006', u'10.0.0.68:10002']), u'xyz'), u'rs')

有人可以帮忙吗?或者怎么做?

提前致谢。

【问题讨论】:

    标签: python mongodb python-2.7 pymongo database-replication


    【解决方案1】:

    我找到了答案。这是完整的代码:

    (注意:您需要拥有管理员权限才能运行此命令。)

    uri = "mongodb://usernamen:password@host:port/admin"
    conn = pymongo.MongoClient(uri)
    db = conn['admin']
    db_stats = db.command({'replSetGetStatus'  :1})
    
    
    primary_optime = 0
    secondary_optime = 0
    
    for key in db_stats['members'] : 
        if key['stateStr'] == 'SECONDARY' :
            secondary_optime = key['optimeDate']
        if key['stateStr'] == 'PRIMARY' : 
            primary_optime =key['optimeDate']
    
    print 'primary_optime : ' + str(primary_optime)
    print 'secondary_optime : ' + str(secondary_optime)
    
    seconds_lag = (primary_optime - secondary_optime ).total_seconds()
    #total_seconds() userd to get the lag in seconds rather than datetime object
    print 'secondary_lag : ' + str(seconds_lag)
    

    optime 表示 mongo-node 有数据的日期。

    您可以在这里阅读更多信息:

    https://docs.mongodb.com/manual/reference/command/replSetGetStatus/

    【讨论】:

      猜你喜欢
      • 2021-05-15
      • 2022-12-16
      • 2019-03-25
      • 2017-04-27
      • 2020-10-20
      • 1970-01-01
      • 2019-09-05
      • 2020-09-04
      • 2011-12-05
      相关资源
      最近更新 更多