Fix change_master function

The change_master function did not stop slaves on all servers before
reconfiguring them.
This commit is contained in:
Markus Mäkelä 2018-03-08 12:38:51 +02:00
parent 548c51c50d
commit dc48b8af4e
No known key found for this signature in database
GPG Key ID: 72D48FCE664F7B19

View File

@ -257,36 +257,29 @@ int Mariadb_nodes::find_master()
int Mariadb_nodes::change_master(int NewMaster, int OldMaster) int Mariadb_nodes::change_master(int NewMaster, int OldMaster)
{ {
int i; for (int i = 0; i < N; i++)
//int OldMaster = FindMaster(); {
char log_file[256]; execute_query(nodes[i], "STOP SLAVE");
char log_pos[256]; }
char str[1024];
for (i = 0; i < N; i++)
{
if (i != OldMaster)
{
execute_query(nodes[i], (char *) "stop slave;");
}
}
execute_query(nodes[NewMaster], "STOP SLAVE");
execute_query(nodes[NewMaster], "RESET SLAVE ALL"); execute_query(nodes[NewMaster], "RESET SLAVE ALL");
execute_query(nodes[NewMaster], create_repl_user); execute_query(nodes[NewMaster], create_repl_user);
execute_query(nodes[OldMaster], "RESET MASTER");
execute_query(nodes[OldMaster], "reset master;"); char log_file[256];
char log_pos[256];
find_field(nodes[NewMaster], "show master status", "File", &log_file[0]); find_field(nodes[NewMaster], "show master status", "File", &log_file[0]);
find_field(nodes[NewMaster], "show master status", "Position", &log_pos[0]); find_field(nodes[NewMaster], "show master status", "Position", &log_pos[0]);
for (i = 0; i < N; i++) for (int i = 0; i < N; i++)
{ {
if (i != NewMaster) if (i != NewMaster)
{ {
char str[1024];
sprintf(str, setup_slave, IP[NewMaster], log_file, log_pos, port[NewMaster]); sprintf(str, setup_slave, IP[NewMaster], log_file, log_pos, port[NewMaster]);
execute_query(nodes[i], str); execute_query(nodes[i], str);
} }
} }
//for (i = 0; i < N; i++) {if (i != NewMaster) {execute_query(nodes[i], (char *) "start slave;"); }}
} }
int Mariadb_nodes::stop_node(int node) int Mariadb_nodes::stop_node(int node)