function MainNodeForSlave()
{
global $DB;
$arMasters = array();
$cData = new CClusterDBNode;
$rsData = $cData->GetList(
array(//Order
"ID" => "ASC",
)
,array(//Filter
"=ROLE_ID" => array("MAIN", "MASTER"),
)
);
while($arData = $rsData->Fetch())
$arMasters[$arData["ID"]] = $arData;
foreach($arMasters as $node_id => $arNode)
{
if($node_id == 1)
$nodeDB = $DB;
else
$nodeDB = CDatabase::GetDBNodeConnection($node_id, true);
$arMasters[$node_id]["DB"] = $nodeDB;
}
$auto_increment_increment = count($arMasters)+1;
$bIncIsOK = true;
foreach($arMasters as $node_id => $arNode)
{
$inc = $this->GetServerVariable($arNode["DB"], "auto_increment_increment");
if($inc != $auto_increment_increment)
{
$bIncIsOK = false;
$result[$node_id."_auto_increment_increment"] = array(
"IS_OK" => CClusterDBNodeCheck::ERROR,
"MESSAGE" => GetMessage("CLU_AUTO_INCREMENT_INCREMENT_ERR_MSG", array("#node_id#" => $node_id, "#value#" => $auto_increment_increment, "#current#" => $inc)),
"WIZ_REC" => GetMessage("CLU_AUTO_INCREMENT_INCREMENT_WIZREC", array("#value#" => $auto_increment_increment)),
);
}
}
if($bIncIsOK)
{
$result["_auto_increment_increment"] = array(
"IS_OK" => CClusterDBNodeCheck::OK,
"MESSAGE" => GetMessage("CLU_AUTO_INCREMENT_INCREMENT_OK_MSG", array("#value#" => $auto_increment_increment)),
"WIZ_REC" => "",
);
}
$auto_increment_offset = array();
$bIncIsOK = true;
foreach($arMasters as $node_id => $arNode)
{
$offset = $this->GetServerVariable($arNode["DB"], "auto_increment_offset");
$mod = $offset % $auto_increment_increment;
if(array_key_exists($mod, $auto_increment_offset))
{
$bIncIsOK = false;
$result[$node_id."_auto_increment_offset"] = array(
"IS_OK" => CClusterDBNodeCheck::ERROR,
"MESSAGE" => GetMessage("CLU_AUTO_INCREMENT_OFFSET_ERR_MSG", array("#node_id#" => $node_id, "#current#" => $offset)),
"WIZ_REC" => GetMessage("CLU_AUTO_INCREMENT_OFFSET_WIZREC", array("#current#" => $offset)),
);
}
else
{
$auto_increment_offset[$mod] = $node_id;
}
}
if($bIncIsOK)
{
$result["_auto_increment_offset"] = array(
"IS_OK" => CClusterDBNodeCheck::OK,
"MESSAGE" => GetMessage("CLU_AUTO_INCREMENT_OFFSET_OK_MSG", array("#value#" => $auto_increment_increment)),
"WIZ_REC" => "",
);
}
$bRelayIsOK = true;
foreach($arMasters as $node_id => $arNode)
{
$relay_log = $this->GetServerVariable($arNode["DB"], "relay_log");
if($relay_log == '')
{
$bRelayIsOK = false;
$result[$node_id."_relay_log"] = array(
"IS_OK" => CClusterDBNodeCheck::ERROR,
"MESSAGE" => GetMessage("CLU_RELAY_LOG_ERR_MSG", array("#node_id#" => $node_id, "#relay-log#" => $relay_log)),
"WIZ_REC" => GetMessage("CLU_RELAY_LOG_WIZREC"),
);
}
}
if($bRelayIsOK)
{
$result["_relay_log"] = array(
"IS_OK" => CClusterDBNodeCheck::OK,
"MESSAGE" => GetMessage("CLU_RELAY_LOG_OK_MSG"),
"WIZ_REC" => "",
);
}
$bSlaveUpdatesIsOK = true;
foreach($arMasters as $node_id => $arNode)
{
$log_slave_updates = $this->GetServerVariable($arNode["DB"], "log_slave_updates");
if($log_slave_updates !== 'ON')
{
$bSlaveUpdatesIsOK = false;
$result[$node_id."_log_slave_updates"] = array(
"IS_OK" => CClusterDBNodeCheck::ERROR,
"MESSAGE" => GetMessage("CLU_LOG_SLAVE_UPDATES_MSG", array("#node_id#" => $node_id, "#log-slave-updates#" => $log_slave_updates)),
"WIZ_REC" => GetMessage("CLU_LOG_SLAVE_UPDATES_WIZREC", array("#value#" => 1)),
);
}
}
if($bSlaveUpdatesIsOK)
{
$result["_log_slave_updates"] = array(
"IS_OK" => CClusterDBNodeCheck::OK,
"MESSAGE" => GetMessage("CLU_LOG_SLAVE_UPDATES_OK_MSG"),
"WIZ_REC" => "",
);
}
return $result;
}