Java MongoDB自动故障切换第二次不工作
我正在使用MongoDBJava MongoDB自动故障切换第二次不工作,java,mongodb,grails,Java,Mongodb,Grails,我正在使用MongoDB编译“org.grails.plugins:MongoDB:3.0.1”。目前,只有在我杀死MongoDB主实例时,自动故障切换才第一次起作用。在这种情况下,辅助设备成为主设备,应用程序能够读取数据。但是,当我再次扼杀新当选的初选和先前被扼杀的初选时,现在已经结束了。这意味着我又有了一次初选。在这种情况下,第二次故障切换无法通过MongoDB驱动程序进行。它抛出MongoServerSelectionException。我已经5天多没找到解决办法了。下面是我的java代码
编译“org.grails.plugins:MongoDB:3.0.1”
。目前,只有在我杀死MongoDB主实例时,自动故障切换才第一次起作用。在这种情况下,辅助设备成为主设备,应用程序能够读取数据。但是,当我再次扼杀新当选的初选和先前被扼杀的初选时,现在已经结束了。这意味着我又有了一次初选。在这种情况下,第二次故障切换无法通过MongoDB驱动程序进行。它抛出MongoServerSelectionException
。我已经5天多没找到解决办法了。下面是我的java代码
static{
FileInputStream fis=null;
try {
/**** Get database ****/
// if database doesn't exists, MongoDB will create it for you
fis=new FileInputStream(GRMConstants.MONGODB_PROPERTY_FILE);
properties=new Properties();
properties.load(fis);
String[] host=properties.getProperty("MONGODB_SERVER_ADDRESS").split(",");
List<ServerAddress> server= new ArrayList<ServerAddress>();
for(int i=0;i<host.length;i++){
server.add(new ServerAddress(host[i],Integer.valueOf(properties.getProperty("MONGODB_PORT"))));
}
mongo = new MongoClient(server);
databaseName=properties.getProperty("MONGO_DATABASE");
//get database
database=mongo.getDB(databaseName);
} catch (UnknownHostException ex) {
log.error("UnknownHostException in MongoDBUtil while initilizing MongoDb server ...",ex);
} catch (MongoException ex) {
log.error("MongoException in MongoDBUtil while initilizing MongoDb server ...",ex);
} catch (IOException e) {
log.error("IOException in MongoDBUtil while initilizing MongoDb server ...",e);
} catch (Exception e) {
log.error("Exception in MongoDBUtil while initilizing MongoDb server ...",e);
} finally {
if(fis != null) {
try {
fis.close();
} catch (IOException e) {
log.error("Exception in MongoDBUtil while closing the input stream...", e);
}
}
}
}
静态{
FileInputStream fis=null;
试一试{
/****获取数据库****/
//若数据库不存在,MongoDB将为您创建它
fis=新文件输入流(GRMConstants.MONGODB_属性_文件);
属性=新属性();
属性。负载(fis);
String[]host=properties.getProperty(“MONGODB_服务器_地址”).split(“,”);
列表服务器=新建ArrayList();
对于(int i=0;i您有多少个节点?哪个mongodb版本?您的mongodb主机配置是什么样子的?我有三个节点。一个主节点、一个辅助节点和一个仲裁节点。我有mongodb 2.6,我的配置是mongodb_服务器_地址=192.168.121.56192.168.121.58 mongodb_端口=27017
。此外,我在杀死时注意到了错误实例需要来自集合“mongoReplica”的副本集成员,但从集合“null”中找到了一个副本集成员。正在从群集的客户端视图中删除grm2:27017
。谢谢