sql/mysqld.cc

    fixed auto set of server id
sql/sql_repl.cc
    do not allow slave to replicate if master id was not supplied
sql/sql_repl.h
    fix for server_id
parent 0dd9ec5a
......@@ -188,6 +188,8 @@ I_List<i_string> replicate_do_db, replicate_ignore_db;
I_List<i_string> binlog_do_db, binlog_ignore_db;
uint32 server_id = 0; // server id for replication
bool server_id_supplied = 0; // if we guessed server_id , we need to know
// about it
uint mysql_port;
uint test_flags, select_errors=0, dropping_tables=0,ha_open_options=0;
uint volatile thread_count=0, thread_running=0, kill_cached_threads=0,
......@@ -1497,8 +1499,22 @@ int main(int argc, char **argv)
open_log(&mysql_update_log, glob_hostname, opt_update_logname, "",
LOG_NEW);
if (!server_id)
server_id= !master_host ? 1 : 2;
if (opt_bin_log && !server_id)
{
server_id= !master_host ? 1 : 2;
switch(server_id)
{
case 1:
sql_print_error("Warning: one should set \
server_id to a non-0 value if log-bin is enabled. Will log updates to \
binary log, but will not accept connections from slaves");
break;
default:
sql_print_error("Warning: one should set server_id to a non-0 value\
if master_host is set. The server will not act as a slave");
break;
}
}
if (opt_bin_log)
{
if (!opt_bin_logname)
......@@ -3181,6 +3197,7 @@ static void get_options(int argc,char **argv)
}
case OPT_SERVER_ID:
server_id = atoi(optarg);
server_id_supplied = 1;
break;
case OPT_DELAY_KEY_WRITE:
ha_open_options|=HA_OPEN_DELAY_KEY_WRITE;
......
......@@ -243,7 +243,12 @@ void mysql_binlog_send(THD* thd, char* log_ident, ulong pos, ushort flags)
errmsg = "Binary log is not open";
goto err;
}
if(!server_id_supplied)
{
errmsg = "Misconfigured master - server id was not set";
goto err;
}
if (log_ident[0])
mysql_bin_log.make_log_name(search_file_name, log_ident);
else
......@@ -498,7 +503,7 @@ int start_slave(THD* thd , bool net_report)
return 1;
pthread_mutex_lock(&LOCK_slave);
if(!slave_running)
if(glob_mi.inited && glob_mi.host)
if(glob_mi.inited && glob_mi.host && server_id_supplied)
{
pthread_t hThread;
if(pthread_create(&hThread, &connection_attrib, handle_slave, 0))
......@@ -507,7 +512,8 @@ int start_slave(THD* thd , bool net_report)
}
}
else
err = "Master host not set or master info not initialized";
err = "Master host not set, master info not initialized, or server id \
not configured";
else
err = "Slave already running";
......
......@@ -5,6 +5,8 @@
extern char* master_host;
extern my_string opt_bin_logname, master_info_file;
extern uint32 server_id;
extern bool server_id_supplied;
extern I_List<i_string> binlog_do_db, binlog_ignore_db;
int start_slave(THD* thd = 0, bool net_report = 1);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment