Added master server id to mysql 5.1 monitoring.

This commit is contained in:
Markus Makela
2015-07-01 16:07:27 +03:00
parent 8a0b399896
commit 2b0f0b89ab

View File

@ -319,7 +319,7 @@ static inline bool connect_to_db(MONITOR* mon,MONITOR_SERVERS *database)
0) != NULL);
}
inline void monitor_mysql100_db(MONITOR_SERVERS* database)
static inline void monitor_mysql100_db(MONITOR_SERVERS* database)
{
bool isslave = false;
MYSQL_RES* result;
@ -395,7 +395,7 @@ inline void monitor_mysql100_db(MONITOR_SERVERS* database)
}
}
inline void monitor_mysql55_db(MONITOR_SERVERS* database)
static inline void monitor_mysql55_db(MONITOR_SERVERS* database)
{
bool isslave = false;
MYSQL_RES* result;
@ -461,7 +461,7 @@ inline void monitor_mysql55_db(MONITOR_SERVERS* database)
}
}
inline void monitor_mysql51_db(MONITOR_SERVERS* database)
static inline void monitor_mysql51_db(MONITOR_SERVERS* database)
{
bool isslave = false;
MYSQL_RES* result;
@ -515,13 +515,13 @@ inline void monitor_mysql51_db(MONITOR_SERVERS* database)
static MONITOR_SERVERS *build_mysql51_replication_tree(MONITOR *mon)
{
MONITOR_SERVERS* database = mon->databases;
MONITOR_SERVERS* ptr;
while(database)
{
bool ismaster = false;
MYSQL_RES* result;
MYSQL_ROW row;
unsigned long *slaves;
int nslaves = 0;
if(database->con)
{
@ -540,12 +540,13 @@ static MONITOR_SERVERS *build_mysql51_replication_tree(MONITOR *mon)
if(mysql_num_rows(result) > 0)
{
ismaster = true;
while ((row = mysql_fetch_row(result)))
while (nslaves < MONITOR_MAX_NUM_SLAVES && (row = mysql_fetch_row(result)))
{
/* get Slave_IO_Running and Slave_SQL_Running values*/
database->server->slaves[nslaves] = atol(row[0]);
nslaves++;
}
database->server->slaves[nslaves] = 0;
}
mysql_free_result(result);
@ -560,6 +561,32 @@ static MONITOR_SERVERS *build_mysql51_replication_tree(MONITOR *mon)
}
database = database->next;
}
database = mon->databases;
/** */
while(database)
{
ptr = mon->databases;
while(ptr)
{
for(int i = 0;ptr->server->slaves[i];i++)
{
if(ptr->server->slaves[i] == database->server->node_id)
{
database->server->master_id = ptr->server->node_id;
break;
}
}
ptr = ptr->next;
}
if(database->server->master_id <= 0)
{
monitor_set_pending_status(database, SERVER_SLAVE_OF_EXTERNAL_MASTER);
}
database = database->next;
}
}
/**
* Monitor an individual server
@ -575,14 +602,12 @@ monitorDatabase(MONITOR *mon, MONITOR_SERVERS *database)
MYSQL_RES *result;
int isslave = 0;
char *uname = mon->user;
char *passwd = mon->password;
unsigned long int server_version = 0;
char *server_string;
if (database->server->monuser != NULL)
{
uname = database->server->monuser;
passwd = database->server->monpw;
}
if (uname == NULL)