- Модуль: cluster
- Путь к файлу: ~/bitrix/modules/cluster/classes/mysql/dbnode_check.php
- Класс: CClusterDBNodeCheck
- Вызов: CClusterDBNodeCheck::MainNodeForReplication
function MainNodeForReplication($arMasterNode)
{
if($arMasterNode["ID"] == 1)
global $DB;
else
$DB = CDatabase::GetDBNodeConnection($arMasterNode["ID"], true);;
$result = array();
$server_id = $this->GetServerVariable($DB, "server_id");
$is_ok = $server_id > 0;
$result["server_id"] = array(
"IS_OK" => $is_ok? CClusterDBNodeCheck::OK: CClusterDBNodeCheck::ERROR,
"MESSAGE" => GetMessage("CLU_SERVER_ID_MSG", array("#server-id#" => $server_id)),
"WIZ_REC" => GetMessage("CLU_SERVER_ID_WIZREC"),
);
$log_bin = $this->GetServerVariable($DB, "log_bin");
$is_ok = $log_bin === "ON";
$result["log_bin"] = array(
"IS_OK" => $is_ok? CClusterDBNodeCheck::OK: CClusterDBNodeCheck::ERROR,
"MESSAGE" => GetMessage("CLU_LOG_BIN_MSG", array("#log-bin#" => $log_bin)),
"WIZ_REC" => GetMessage("CLU_LOG_BIN_WIZREC"),
);
$skip_networking = $this->GetServerVariable($DB, "skip_networking");
$is_ok = $skip_networking === "OFF";
$result["skip_networking"] = array(
"IS_OK" => $is_ok? CClusterDBNodeCheck::OK: CClusterDBNodeCheck::ERROR,
"MESSAGE" => GetMessage("CLU_SKIP_NETWORKING_MSG", array("#skip-networking#" => $skip_networking)),
"WIZ_REC" => GetMessage("CLU_SKIP_NETWORKING_WIZREC"),
);
$innodb_flush_log_at_trx_commit = $this->GetServerVariable($DB, "innodb_flush_log_at_trx_commit");
//if($innodb_flush_log_at_trx_commit !== '1')
{
$is_ok = $innodb_flush_log_at_trx_commit === '1';
$result["innodb_flush_log_at_trx_commit"] = array(
"IS_OK" => $is_ok? CClusterDBNodeCheck::OK: CClusterDBNodeCheck::WARNING,
"MESSAGE" => GetMessage("CLU_FLUSH_ON_COMMIT_MSG", array("#innodb_flush_log_at_trx_commit#" => $innodb_flush_log_at_trx_commit)),
"WIZ_REC" => "",
);
}
$sync_binlog = $this->GetServerVariable($DB, "sync_binlog");
$is_ok = $sync_binlog === '1';
$result["sync_binlog"] = array(
"IS_OK" => $is_ok? CClusterDBNodeCheck::OK: CClusterDBNodeCheck::WARNING,
"MESSAGE" => GetMessage("CLU_SYNC_BINLOG_MSG", array("#sync_binlog#" => $sync_binlog)),
"WIZ_REC" => "",
);
$DatabaseName = $DB->DBName;
$is_ok = false;
$rsBinLogs = $DB->Query("show master status", true, '', array("fixed_connection"=>true));
if(!$rsBinLogs)
{
$result["master_status"] = array(
"IS_OK" => CClusterDBNodeCheck::ERROR,
"MESSAGE" => GetMessage("CLU_MASTER_STATUS_MSG"),
"WIZ_REC" => GetMessage("CLU_MASTER_STATUS_WIZREC", array("#sql#" => "GRANT REPLICATION CLIENT on *.* to '".$DB->DBLogin."'@'%';")),
);
}
else
{
if($ar = $rsBinLogs->Fetch())
{
if($ar["Binlog_Do_DB"] === $DatabaseName)
$is_ok = true;
}
while($ar = $rsBinLogs->Fetch())
$is_ok = false;
$result["binlog_do_db"] = array(
"IS_OK" => $is_ok? CClusterDBNodeCheck::OK: CClusterDBNodeCheck::WARNING,
"MESSAGE" => GetMessage("CLU_SYNC_BINLOGDODB_MSG"),
"WIZ_REC" => GetMessage("CLU_SYNC_BINLOGDODB_WIZREC", array("#database#" => $DatabaseName)),
);
}
return $result;
}