合服修改

jieling
grimm 2024-04-26 14:04:52 +08:00
parent 7386e1e671
commit 33759072fa
3 changed files with 16 additions and 8 deletions

View File

@ -7,6 +7,7 @@ proccessname=$3 # 进程名称
mongourl=$4 # MongoDB地址
redisIp=$5 # Redis IP
redisPwd=$6 # Redis 密码
mongoadmin=%7 # mongo后缀
# 停止游戏进程
ansible "$gameip" -m shell -a "supervisorctl stop $proccessname"
@ -18,7 +19,7 @@ fi
# 清除MongoDB数据
tempFile="/data/jieling/gm/config/script/clearMongo.js"
mongo "mongodb://${mongourl}/jieling_${serverid}?authSource=admin" "$tempFile"
mongo "mongodb://${mongourl}/jieling_${serverid}?${mongoadmin}" "$tempFile"
if [ $? -ne 0 ]; then
echo "清除MongoDB数据失败退出脚本。"
exit 1

View File

@ -101,8 +101,8 @@ public class HeFuManager {
dealIpPort(masterId, salveList);
// 合服记录入库
addHeFuInfo(masterId, salveList);
// 重启服务器
AutoServerManager.rebootServer(String.valueOf(masterId));
// 不用重启服务器
// AutoServerManager.rebootServer(String.valueOf(masterId));
// 更新合服缓存
setHefuMap();
}catch (Exception e){
@ -131,6 +131,7 @@ public class HeFuManager {
// 预防二次合服,删除之前得合服记录
CHefuInfo hefu = hefuDao.findHefuByServerID(masterId);
if (hefu != null){
cloneSet.addAll(hefu.getSlaveServerIds());
hefuDao.removeHefuInfo(hefu);
}
for (Integer id : salveList) {
@ -243,20 +244,22 @@ public class HeFuManager {
* @throws Exception
*/
private static void dealIpPort(int masterSID, Set<Integer> slaveId) throws Exception {
ServerInfo masterServer = serverInfoDao.getServerInfo(String.valueOf(masterSID));
for (Integer slave : slaveId) {
CHefuInfo hefuInfo = hefuDao.findHefuByServerID(slave);
if (hefuInfo != null){
// 旧主服也需要改ip端口
upsertServerIpAndPort(masterServer, hefuInfo.getMasterServerId());
for (Integer serverId : hefuInfo.getSlaveServerIds()) {
upsertServerIpAndPort(masterSID, serverId);
upsertServerIpAndPort(masterServer, serverId);
}
}else {
upsertServerIpAndPort(masterSID, slave);
upsertServerIpAndPort(masterServer, slave);
}
}
}
public static void upsertServerIpAndPort(int masterSID, int slaveSID) throws Exception {
ServerInfo masterServer = serverInfoDao.getServerInfo(String.valueOf(masterSID));
public static void upsertServerIpAndPort(ServerInfo masterServer, int slaveSID) throws Exception {
ServerInfo slaveServer = serverInfoDao.getServerInfo(String.valueOf(slaveSID));
slaveServer.setIp(masterServer.getIp());
slaveServer.setPort(masterServer.getPort());

View File

@ -40,6 +40,10 @@ public class AutoServerManager {
String[] split = gameMongodb.split("/");
return split[2];
}
public static String getGameMongoAdmin() {
String[] split = gameMongodb.split("\\?");
return split[1];
}
@Value("${spring.data.gameMongodb.uri}")
public void setGameMongodb(String gameMongodb) {
AutoServerManager.gameMongodb = gameMongodb;
@ -326,7 +330,7 @@ public class AutoServerManager {
String space = " ";
String command = "bash" + space + path + space + serverInfo.getIp() + space + serverInfo.getServer_id() + space + serverInfo.getCoreName()
+ space + getGameMongodb() + space + getRedisHost() + space + getRedisPwd();
+ space + getGameMongodb() + space + getRedisHost() + space + getRedisPwd() + space + getGameMongoAdmin();
LOGGER.info("清库命令:{}", command);
Process exec = null;