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