mongodb数据库从库同步主库维护js脚本

脚本是日常维护使用js脚本。适用于集群数目很多,手工操作很麻烦费时,所以写了自动脚本,在每个集群自动运行即可。
功能描述:检查本机的状态(主,从),确保从机始终从主机同步数据。
适用范围:repli set 副本集模式
运行脚本:mongo路径/mongo 10.0.0.1:30000 syncfrom.js
syncfrom.js 如下
 1 /*
 2  * check rs.status, replSetSyncFrom to Primary
 3  * 
 4  * 20131216
 5  */
 6 function sleep(seconds) {
 7         this.date = Math.round(new Date().getTime()/1000);
 8         while(1) {
 9                 if(Math.round(new Date().getTime()/1000) - this.date >= seconds) break;
10         }
11         return true;
12 }
13 var status=rs.status();
14 print(status["myState"]);
15 var mystatus=status["myState"];
16 var syncingTo=status["syncingTo"];
17 print('syncto '+syncingTo);
18 members=status["members"];
19 if(mystatus==1)//primary
20 {
21         print('my status is primary... no need to replSetSyncFrom')
22 }
23 else if(mystatus==2)//secondary
24 {
25         print('my status is secondary...will start execute commmand "replSetSyncFrom" ')
26         for(var i=0;i<members.length;i++)
27         {
28                 if(members[i]["stateStr"]=="PRIMARY")
29                 {
30                         priname=members[i]["name"]
31                         print("primary: "+priname)
32                         if(syncingTo==priname)
33                         {
34                                 print("the host of SyncFrom is already Primary, no need to change")
35                         }
36                         else
37                         {
38                                 print("start command...replSetSyncFrom")        
39                                 db.adminCommand({replSetSyncFrom:priname}) 
40                                 sleep(5);
41                                 printjson(rs.status())
42                         }
43                 }
44         }
45 }
46 }

原文地址:https://www.cnblogs.com/mytech/p/3476394.html