mongoDB的复制集4----复制集监控(状态查看)

一、复制集状态查看

复制集状态查询命令
  ①.复制集状态查询:rs.status()
  ②.查看oplog状态: rs.printReplicationInfo()
  ③.查看复制延迟:  rs.printSlaveReplicationInfo()
  ④.查看服务状态详情:   db.serverStatus()

1).rs.status()
  self:只会出现在执行rs.status()命令的成员里
  uptime:从本节点 网络可达到当前所经历的时间
  lastHeartbeat:当前服务器最后一次收到其心中的时间
  Optime & optimeDate:命令发出时oplog所记录的操作时间戳
  pingMs: 网络延迟
  syncingTo: 复制源
  stateStr:
    可提供服务的状态:primary, secondary, arbiter
    即将提供服务的状态:startup, startup2, recovering
    不可提供服务状态:down,unknow,removed,rollback,fatal

2).rs.printReplicationInfo()
  log length start to end: 当oplog写满时可以理解为时间窗口
  oplog last event time: 最后一个操作发生的时间

3).rs.printSlaveReplicationInfo()
  复制进度:synedTo
  落后主库的时间:X secs(X hrs)behind the primary

4).db.serverStatus()
  可以使用如下命令查找需要用到的信息
  db.serverStatus.opcounterRepl
  db.serverStatus.repl

5).常用监控项目:
  QPS: 每秒查询数量
  I/O: 读写性能
  Memory: 内存使用
  Connections: 连接数
  Page Faults: 缺页中断
  Index hit: 索引命中率
  Bakground flush: 后台刷新
  Queue: 队列

二、复制集常用监控工具

1).mongostat
  -h, --host   主机名或 主机名:端口
  --port     端口号
  -u ,--uername  用户名(验证)
  -p ,--password   密码(验证)
  --authenticationDatabase   从哪个库进行验证
  --discover   发现集群某个其他节点

changwen@ubuntu:~$ mongostat -h 192.168.23.129:28001

changwen@ubuntu:~$ mongostat -h 192.168.23.129:28001  --discover

mongostat重点关注的字段
  getmore  大量的排序操作在进行
  faults   需要的数据不在内存中
  locked db  锁比例最高的库
  index miss  索引未命中
  qr|qw   读写产生队列,供求失衡
2).mongostop:与mongostat基本一样
  -h, --host   主机名或 主机名:端口
  --port     端口号
  -u ,--uername  用户名(验证)
  -p ,--password   密码(验证)
  --authenticationDatabase   从哪个库进行验证
3).mongosniff--复制集有抓包工具

changwen@ubuntu:/usr/local/mongoDB/bin$ sudo ./mongosniff --help
Usage: mongosniff [--help] [--forward host:port] [--objcheck] [--source (NET <interface> | (FILE | DIAGLOG) <filename>)] [<port0> <port1> ... ]
--help          Print this help message.
--forward       Forward all parsed request messages to mongod instance at 
                specified host:port
--source        Source of traffic to sniff, either a network interface or a
                file containing previously captured packets in pcap format,
                or a file containing output from mongod's --diaglog option.
                If no source is specified, mongosniff will attempt to sniff
                from one of the machine's network interfaces.
--objcheck      Log hex representation of invalid BSON documents and nothing
                else.  Spurious messages about invalid documents may result
                when there are dropped tcp packets.
<port0>...      These parameters are used to filter sniffing.  By default, 
                only port 27017 is sniffed.

changwen@ubuntu:/usr/local/mongoDB/bin$ ifconfig
ens33     Link encap:Ethernet  HWaddr 00:0c:29:d0:64:58  
          inet addr:192.168.23.129  Bcast:192.168.23.255  Mask:255.255.255.0
          inet6 addr: fe80::1381:709e:cfa6:5063/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:55356 errors:0 dropped:0 overruns:0 frame:0
          TX packets:14779 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:57578721 (57.5 MB)  TX bytes:909977 (909.9 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:15001 errors:0 dropped:0 overruns:0 frame:0
          TX packets:15001 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:958280 (958.2 KB)  TX bytes:958280 (958.2 KB)

changwen@ubuntu:/usr/local/mongoDB/bin$ sudo ./mongosniff --source NET lo port 28001
sniffing... 0 28001 
4).ZABBIX--抓包工具



  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python可以使用pymongo库实现MongoDB复制功能。可以使用MongoClient类和ReplicaSetClient类来连接复制,并使用replicaset_name属性来设置复制的名称。 ### 回答2: Python可以通过pymongo库来实现MongoDB复制功能。下面是实现MongoDB复制的大致步骤: 1. 安装pymongo库:可以使用pip命令在Python环境中安装pypongo库。 2. 导入pymongo库:在Python脚本中导入pymongo库,以便使用其中的类和方法。 3. 连接MongoDB服务器:使用pymongo.MongoClient类连接MongoDB服务器,在连接参数中指定复制的成员节点地址。 ```python from pymongo import MongoClient # 连接MongoDB服务器 client = MongoClient("mongodb://node1_mongodb:27017,node2_mongodb:27017,node3_mongodb:27017/?replicaSet=myReplicaSet") ``` 4. 选择数据库和合:指定要操作的数据库和合。 ```python # 选择数据库 db = client.mydb # 选择合 collection = db.mycol ``` 5. 进行读写操作:使用pymongo库的方法进行查询、插入、更新、删除等操作。 ```python # 查询操作 result = collection.find({"name": "John"}) # 插入操作 new_data = {"name": "Alice", "age": 25} result = collection.insert_one(new_data) # 更新操作 query = {"name": "Alice"} new_values = {"$set": {"age": 26}} result = collection.update_one(query, new_values) # 删除操作 query = {"age": {"$gte": 30}} result = collection.delete_many(query) ``` 在进行读写操作时,pymongo会自动将操作请求转发到复制中的主节点,并在主节点上执行操作。主节点会将操作结果同步到从节点,以保持数据的一致性。 以上就是使用Python实现MongoDB复制功能的基本步骤。实际应用中,还可以通过pymongo库提供的方法监控复制状态、设置读写偏好等。 ### 回答3: 要实现MongoDB复制功能,可以使用Python的pymongo库。 首先,使用pymongo库连接到MongoDB的主节点(Primary)。可以通过以下代码创建一个MongoDB连接对象: ```python from pymongo import MongoClient client = MongoClient('mongodb://主节点IP地址:端口号/') ``` 接下来,使用此连接对象获取MongoDB的admin数据库,并执行以下命令来启用复制功能: ```python admin_db = client.admin result = admin_db.command("replSetInitiate") ``` 此命令将初始化一个复制,并将主节点添加到复制中。执行成功后,result将返回一个包含复制配置的字典。 然后,使用此连接对象连接到MongoDB的副本节点(Secondary)。例如,要连接到名为replica的副本节点,可以使用以下代码: ```python secondary = MongoClient('mongodb://副本节点IP地址:端口号/', replicaset='复制名称')['数据库名称'] ``` 请注意,使用的副本节点的连接字符串中需提供`replicaset`参数,指定复制的名称。 从此连接对象执行的操作将自动路由到副本节点。 最后,可以使用以下代码检查MongoDB连接的节点角色(Role): ```python result = client.admin.command("replSetGetStatus") for member in result['members']: print('角色:', member['stateStr'], ' IP:', member['name']) ``` 这将输出复制的各节点角色和其对应的IP地址。 总结来说,通过使用pymongo库,Python可以轻松连接到MongoDB的主节点和副本节点,并实现复制功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值