Commit 74feebcd authored by Sergei Golubchik's avatar Sergei Golubchik

MDEV-5624 mysqldump --dump-slave option does not restart the replication if the dump has failed

parent ea0915dc
...@@ -160,6 +160,8 @@ static void dynstr_set_checked(DYNAMIC_STRING *str, const char *init_str); ...@@ -160,6 +160,8 @@ static void dynstr_set_checked(DYNAMIC_STRING *str, const char *init_str);
static void dynstr_append_mem_checked(DYNAMIC_STRING *str, const char *append, static void dynstr_append_mem_checked(DYNAMIC_STRING *str, const char *append,
uint length); uint length);
static void dynstr_realloc_checked(DYNAMIC_STRING *str, ulong additional_size); static void dynstr_realloc_checked(DYNAMIC_STRING *str, ulong additional_size);
static int do_start_slave_sql(MYSQL *mysql_con);
/* /*
Constant for detection of default value of default_charset. Constant for detection of default value of default_charset.
If default_charset is equal to mysql_universal_client_charset, then If default_charset is equal to mysql_universal_client_charset, then
...@@ -1494,6 +1496,8 @@ static void free_resources() ...@@ -1494,6 +1496,8 @@ static void free_resources()
static void maybe_exit(int error) static void maybe_exit(int error)
{ {
if (opt_slave_data)
do_start_slave_sql(mysql);
if (!first_error) if (!first_error)
first_error= error; first_error= error;
if (ignore_errors) if (ignore_errors)
...@@ -5646,10 +5650,6 @@ int main(int argc, char **argv) ...@@ -5646,10 +5650,6 @@ int main(int argc, char **argv)
dump_databases(argv); dump_databases(argv);
} }
/* if --dump-slave , start the slave sql thread */
if (opt_slave_data && do_start_slave_sql(mysql))
goto err;
/* add 'START SLAVE' to end of dump */ /* add 'START SLAVE' to end of dump */
if (opt_slave_apply && add_slave_statements()) if (opt_slave_apply && add_slave_statements())
goto err; goto err;
...@@ -5665,9 +5665,6 @@ int main(int argc, char **argv) ...@@ -5665,9 +5665,6 @@ int main(int argc, char **argv)
if (opt_delete_master_logs && purge_bin_logs_to(mysql, bin_log_name)) if (opt_delete_master_logs && purge_bin_logs_to(mysql, bin_log_name))
goto err; goto err;
#ifdef HAVE_SMEM
my_free(shared_memory_base_name);
#endif
/* /*
No reason to explicitely COMMIT the transaction, neither to explicitely No reason to explicitely COMMIT the transaction, neither to explicitely
UNLOCK TABLES: these will be automatically be done by the server when we UNLOCK TABLES: these will be automatically be done by the server when we
...@@ -5675,6 +5672,14 @@ int main(int argc, char **argv) ...@@ -5675,6 +5672,14 @@ int main(int argc, char **argv)
server. server.
*/ */
err: err:
/* if --dump-slave , start the slave sql thread */
if (opt_slave_data && do_start_slave_sql(mysql))
goto err;
#ifdef HAVE_SMEM
my_free(shared_memory_base_name);
#endif
dbDisconnect(current_host); dbDisconnect(current_host);
if (!path) if (!path)
write_footer(md_result_file); write_footer(md_result_file);
......
...@@ -11,4 +11,11 @@ START SLAVE; ...@@ -11,4 +11,11 @@ START SLAVE;
STOP SLAVE; STOP SLAVE;
CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_MYPORT, MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=BINLOG_START; CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_MYPORT, MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=BINLOG_START;
START SLAVE; START SLAVE;
slave start;
Warnings:
Note 1254 Slave is already running
CHANGE MASTER TO MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=BINLOG_START;
slave start;
Warnings:
Note 1254 Slave is already running
include/rpl_end.inc include/rpl_end.inc
...@@ -27,4 +27,13 @@ connection slave; ...@@ -27,4 +27,13 @@ connection slave;
# Execute mysqldump with --dump-slave ,--apply-slave-statements and --include-master-host-port # Execute mysqldump with --dump-slave ,--apply-slave-statements and --include-master-host-port
--exec $MYSQL_DUMP_SLAVE --compact --dump-slave --apply-slave-statements --include-master-host-port test --exec $MYSQL_DUMP_SLAVE --compact --dump-slave --apply-slave-statements --include-master-host-port test
#
# MDEV-5624 mysqldump --dump-slave option does not restart the replication if the dump has failed
#
slave start;
--replace_regex /MASTER_LOG_POS=[0-9]+/MASTER_LOG_POS=BINLOG_START/
--error 2
--exec $MYSQL_DUMP_SLAVE --compact --dump-slave no_such_db
slave start;
--source include/rpl_end.inc --source include/rpl_end.inc
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