• Модуль: cluster
  • Путь к файлу: ~/bitrix/modules/cluster/classes/mysql/dbnode_check.php
  • Класс: CClusterDBNodeCheck
  • Вызов: CClusterDBNodeCheck::SlaveNodeForReplication
function SlaveNodeForReplication($nodeDB)
{
	global $DB;

	$result = array();

	$main_server_id = intval($this->GetServerVariable($DB, "server_id"));
	$node_server_id = intval($this->GetServerVariable($nodeDB, "server_id"));
	$is_ok =  $node_server_id > 0 && $main_server_id != $node_server_id;
	if($is_ok)
	{
		$rsNodes = CClusterDBNode::GetList(array(), array(
			"=SERVER_ID" => $node_server_id,
			"!=MASTER_ID" => false,
		));
		$is_ok2 = !is_array($rsNodes->Fetch());
	}
	else
	{
		$is_ok2 = true;
	}

	$result["server_id"] = array(
		"IS_OK" => $is_ok && $is_ok2? CClusterDBNodeCheck::OK: CClusterDBNodeCheck::ERROR,
		"MESSAGE" => GetMessage("CLU_SERVER_ID_MSG", array("#server-id#" => $node_server_id)),
		"WIZ_REC" => ($is_ok? "": GetMessage("CLU_SERVER_ID_WIZREC1"))." "
			.($is_ok2? "": GetMessage("CLU_SERVER_ID_WIZREC2"))." "
			.GetMessage("CLU_SERVER_ID_WIZREC")
		,
	);

	$master_max_allowed_packet = $this->GetServerVariable($DB, "max_allowed_packet");
	$slave_max_allowed_packet = $this->GetServerVariable($nodeDB, "max_allowed_packet");
	$is_ok = $slave_max_allowed_packet >= $master_max_allowed_packet;
	$result["max_allowed_packet"] = array(
		"IS_OK" => $is_ok? CClusterDBNodeCheck::OK: CClusterDBNodeCheck::WARNING,
		"MESSAGE" => GetMessage("CLU_MAX_ALLOWED_PACKET_MSG"),
		"WIZ_REC" => GetMessage("CLU_MAX_ALLOWED_PACKET_WIZREC"),
	);

	$master_version = $this->GetServerVariable($DB, "version");
	$slave_version = $this->GetServerVariable($nodeDB, "version");
	$is_ok = version_compare($master_version, $slave_version) <= 0;
	$result["slave_version"] = array(
		"IS_OK" => $is_ok? CClusterDBNodeCheck::OK: CClusterDBNodeCheck::ERROR,
		"MESSAGE" => GetMessage("CLU_VERSION_MSG", array(
			"#slave-version#" => $slave_version,
			"#master-version#" => $master_version,
		)),
		"WIZ_REC" => GetMessage("CLU_VERSION_WIZREC"),
	);

	$relay_log = $this->GetServerVariable($nodeDB, "relay_log");
	$is_ok = $relay_log <> '';
	$result["relay_log"] = array(
		"IS_OK" => $is_ok? CClusterDBNodeCheck::OK: CClusterDBNodeCheck::WARNING,
		"MESSAGE" => GetMessage("CLU_SLAVE_RELAY_LOG_MSG"),
		"WIZ_REC" => GetMessage("CLU_RELAY_LOG_WIZREC"),
	);

	return $result;
}