summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authorunknown <guilhem@mysql.com>2003-03-19 15:16:51 +0100
committerunknown <guilhem@mysql.com>2003-03-19 15:16:51 +0100
commit8f739cd674ad03cc19f92038bb4e29dd7995a82f (patch)
tree58a9dd1f5926c546e0a8ca0b21070e9aec361e61 /client
parentd5292ebfb668db3832ab8808ca5d594a3728de0b (diff)
downloadmariadb-git-8f739cd674ad03cc19f92038bb4e29dd7995a82f.tar.gz
Do not silently do RESET MASTER when one does 'mysqldump --master-data' ;
only do it if the user specifies --delete-master-logs (new option). Safer + fixes bug #159. client/client_priv.h: New option --delete-master-logs for mysqldump client/mysqldump.c: New option --delete-master-logs for mysqldump BitKeeper/etc/logging_ok: Logging to logging@openlogging.org accepted
Diffstat (limited to 'client')
-rw-r--r--client/client_priv.h3
-rw-r--r--client/mysqldump.c25
2 files changed, 19 insertions, 9 deletions
diff --git a/client/client_priv.h b/client/client_priv.h
index 56eaf311070..147670005f2 100644
--- a/client/client_priv.h
+++ b/client/client_priv.h
@@ -30,4 +30,5 @@ enum options { OPT_CHARSETS_DIR=256, OPT_DEFAULT_CHARSET,
OPT_LOW_PRIORITY, OPT_AUTO_REPAIR, OPT_COMPRESS,
OPT_DROP, OPT_LOCKS, OPT_KEYWORDS, OPT_DELAYED, OPT_OPTIMIZE,
OPT_FTB, OPT_LTB, OPT_ENC, OPT_O_ENC, OPT_ESC, OPT_TABLES,
- OPT_MASTER_DATA, OPT_AUTOCOMMIT, OPT_LOCAL_INFILE};
+ OPT_MASTER_DATA, OPT_AUTOCOMMIT, OPT_LOCAL_INFILE,
+ OPT_DELETE_MASTER_LOGS};
diff --git a/client/mysqldump.c b/client/mysqldump.c
index d7d54a13c57..34f01e1581b 100644
--- a/client/mysqldump.c
+++ b/client/mysqldump.c
@@ -73,7 +73,8 @@ static my_bool verbose=0,tFlag=0,cFlag=0,dFlag=0,quick=0, extended_insert = 0,
ignore=0,opt_drop=0,opt_keywords=0,opt_lock=0,opt_compress=0,
opt_delayed=0,create_options=0,opt_quoted=0,opt_databases=0,
opt_alldbs=0,opt_create_db=0,opt_first_slave=0,
- opt_autocommit=0,opt_master_data,opt_disable_keys=0,opt_xml=0;
+ opt_autocommit=0,opt_master_data,opt_disable_keys=0,opt_xml=0,
+ opt_delete_master_logs=0;
static MYSQL mysql_connection,*sock=0;
static char insert_pat[12 * 1024],*opt_password=0,*current_user=0,
*current_host=0,*path=0,*fields_terminated=0,
@@ -101,6 +102,7 @@ static struct option long_options[] =
{"debug", optional_argument, 0, '#'},
{"default-character-set", required_argument, 0, OPT_DEFAULT_CHARSET},
{"delayed-insert", no_argument, 0, OPT_DELAYED},
+ {"delete-master-logs", no_argument, 0, OPT_DELETE_MASTER_LOGS},
{"disable-keys", no_argument, 0, 'K'},
{"extended-insert", no_argument, 0, 'e'},
{"fields-terminated-by", required_argument, 0, (int) OPT_FTB},
@@ -206,9 +208,12 @@ static void usage(void)
--add-locks Add locks around insert statements.\n\
--allow-keywords Allow creation of column names that are keywords.\n\
--delayed-insert Insert rows with INSERT DELAYED.\n\
+ --delete-master-logs Issue RESET MASTER on the master just after taking\n\
+ the dump, and before unlocking tables.\n\
+ This will automatically enable --first-slave.\n\
--master-data This will cause the master position and filename to \n\
- be appended to your output. This will automagically \n\
- enable --first-slave.\n\
+ be appended to your output, before unlocking tables.\n\
+ This will automatically enable --first-slave.\n\
-F, --flush-logs Flush logs file in server before starting dump.\n\
-f, --force Continue even if we get an sql-error.\n\
-h, --host=... Connect to host.\n");
@@ -317,6 +322,10 @@ static int get_options(int *argc,char ***argv)
opt_master_data=1;
opt_first_slave=1;
break;
+ case OPT_DELETE_MASTER_LOGS:
+ opt_delete_master_logs=1;
+ opt_first_slave=1;
+ break;
case OPT_AUTOCOMMIT:
opt_autocommit=1;
break;
@@ -1489,6 +1498,11 @@ int main(int argc, char **argv)
if (opt_first_slave)
{
+ if (opt_delete_master_logs && mysql_query(sock, "FLUSH MASTER"))
+ {
+ my_printf_error(0, "Error: Couldn't execute 'FLUSH MASTER': %s",
+ MYF(0), mysql_error(sock));
+ }
if (opt_master_data)
{
if (mysql_query(sock, "SHOW MASTER STATUS") ||
@@ -1511,11 +1525,6 @@ int main(int argc, char **argv)
mysql_free_result(master);
}
}
- if (mysql_query(sock, "FLUSH MASTER"))
- {
- my_printf_error(0, "Error: Couldn't execute 'FLUSH MASTER': %s",
- MYF(0), mysql_error(sock));
- }
if (mysql_query(sock, "UNLOCK TABLES"))
{
my_printf_error(0, "Error: Couldn't execute 'UNLOCK TABLES': %s",