Commit 77c7d697 authored by unknown's avatar unknown

Bug#35157: mysqldump should use FLUSH TABLES NO_WRITE_TO_BINLOG \

	when --master-data is used

When using the --master-data option with mysqldump, mysqldump uses 
a FLUSH TABLES command.  However, this statement got replicated to 
the slave(s), which caused the slave(s) to block unnecessarily while
the FLUSH tables command completed.

Now, if the master-data option is set to one of the two "on" modes,
then use the "LOCAL" qualifier to ensure that it's not replicated.


client/mysqldump.c:
  If master_data is set to one of the two modes, then insert "LOCAL"
  to the command to FLUSH TABLES so that the slaves aren't told to 
  flush also.
mysql-test/r/mysqldump.result:
  Output of mysqldump changed.
parent 269ebe54
...@@ -4326,7 +4326,10 @@ static int do_flush_tables_read_lock(MYSQL *mysql_con) ...@@ -4326,7 +4326,10 @@ static int do_flush_tables_read_lock(MYSQL *mysql_con)
update starts between the two FLUSHes, we have that bad stall. update starts between the two FLUSHes, we have that bad stall.
*/ */
return return
( mysql_query_with_error_report(mysql_con, 0, "FLUSH TABLES") || ( mysql_query_with_error_report(mysql_con, 0,
((opt_master_data != 0) ?
"FLUSH /*!40101 LOCAL */ TABLES" :
"FLUSH TABLES")) ||
mysql_query_with_error_report(mysql_con, 0, mysql_query_with_error_report(mysql_con, 0,
"FLUSH TABLES WITH READ LOCK") ); "FLUSH TABLES WITH READ LOCK") );
} }
......
...@@ -3565,8 +3565,8 @@ use test; ...@@ -3565,8 +3565,8 @@ use test;
create user mysqltest_1@localhost; create user mysqltest_1@localhost;
create table t1(a int, b varchar(34)); create table t1(a int, b varchar(34));
reset master; reset master;
mysqldump: Couldn't execute 'FLUSH TABLES': Access denied; you need the RELOAD privilege for this operation (1227) mysqldump: Couldn't execute 'FLUSH /*!40101 LOCAL */ TABLES': Access denied; you need the RELOAD privilege for this operation (1227)
mysqldump: Couldn't execute 'FLUSH TABLES': Access denied; you need the RELOAD privilege for this operation (1227) mysqldump: Couldn't execute 'FLUSH /*!40101 LOCAL */ TABLES': Access denied; you need the RELOAD privilege for this operation (1227)
grant RELOAD on *.* to mysqltest_1@localhost; grant RELOAD on *.* to mysqltest_1@localhost;
mysqldump: Couldn't execute 'SHOW MASTER STATUS': Access denied; you need the SUPER,REPLICATION CLIENT privilege for this operation (1227) mysqldump: Couldn't execute 'SHOW MASTER STATUS': Access denied; you need the SUPER,REPLICATION CLIENT privilege for this operation (1227)
mysqldump: Couldn't execute 'SHOW MASTER STATUS': Access denied; you need the SUPER,REPLICATION CLIENT privilege for this operation (1227) mysqldump: Couldn't execute 'SHOW MASTER STATUS': Access denied; you need the SUPER,REPLICATION CLIENT privilege for this operation (1227)
......
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