From ec42413db8f591d40e47308bd29168776cfc734b Mon Sep 17 00:00:00 2001 From: counterpoint Date: Wed, 13 May 2015 08:57:32 +0100 Subject: [PATCH] Initial changes to implement test before creating maxscale_schema. --- server/modules/monitor/mysqlmon/mysql_mon.c | 41 ++++++++++++--------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/server/modules/monitor/mysqlmon/mysql_mon.c b/server/modules/monitor/mysqlmon/mysql_mon.c index c3f332d18..e5e5db637 100644 --- a/server/modules/monitor/mysqlmon/mysql_mon.c +++ b/server/modules/monitor/mysqlmon/mysql_mon.c @@ -1441,27 +1441,34 @@ static void set_master_heartbeat(MYSQL_MONITOR *handle, MONITOR_SERVERS *databas } /* create the maxscale_schema database */ - if (mysql_query(database->con, "CREATE DATABASE IF NOT EXISTS maxscale_schema")) - { - MXS_ERROR("[mysql_mon]: Error creating maxscale_schema database in Master server" - ": %s", mysql_error(database->con)); - + if (mysql_query(database->con, "SELECT table_name FROM information_schema.tables WHERE table_schema = 'maxscale_schema' AND table_name = 'replication_heartbeat'")) { + MXS_ERROR( "[mysql_mon]: Error checking for replication_heartbeat in Master server" + ": %s", mysql_error(database->con)); database->server->rlag = -1; } - - /* create repl_heartbeat table in maxscale_schema database */ - if (mysql_query(database->con, "CREATE TABLE IF NOT EXISTS " - "maxscale_schema.replication_heartbeat " - "(maxscale_id INT NOT NULL, " - "master_server_id INT NOT NULL, " - "master_timestamp INT UNSIGNED NOT NULL, " - "PRIMARY KEY ( master_server_id, maxscale_id ) ) " - "ENGINE=MYISAM DEFAULT CHARSET=latin1")) + + if (0 == mysql_num_rows(mysql_store_result(database->con))) { - MXS_ERROR("[mysql_mon]: Error creating maxscale_schema.replication_heartbeat " - "table in Master server: %s", mysql_error(database->con)); + if (mysql_query(database->con, "CREATE DATABASE IF NOT EXISTS maxscale_schema")) { + MXS_ERROR( "[mysql_mon]: Error creating maxscale_schema database in Master server" + ": %s", mysql_error(database->con)); + database->server->rlag = -1; + } - database->server->rlag = -1; + /* create repl_heartbeat table in maxscale_schema database */ + if (mysql_query(database->con, "CREATE TABLE IF NOT EXISTS " + "maxscale_schema.replication_heartbeat " + "(maxscale_id INT NOT NULL, " + "master_server_id INT NOT NULL, " + "master_timestamp INT UNSIGNED NOT NULL, " + "PRIMARY KEY ( master_server_id, maxscale_id ) ) " + "ENGINE=MYISAM DEFAULT CHARSET=latin1")) + { + MXS_ERROR("[mysql_mon]: Error creating maxscale_schema.replication_heartbeat " + "table in Master server: %s", mysql_error(database->con)); + + database->server->rlag = -1; + } } /* auto purge old values after 48 hours*/