FLUSH [NO_WRITE_TO_BINLOG | LOCAL]
flush_option [, flush_option] ...
The FLUSH statement has several
variant forms that clear or reload various internal caches,
flush tables, or acquire locks. To execute
FLUSH, you must have the
RELOAD privilege.
By default, the server writes
FLUSH statements to the binary
log so that they replicate to replication slaves. To suppress
logging, specify the optional
NO_WRITE_TO_BINLOG keyword or its alias
LOCAL.
FLUSH LOGS,
FLUSH MASTER,
FLUSH SLAVE,
and FLUSH TABLES WITH
READ LOCK are not written to the binary log in any
case because they would cause problems if replicated to a
slave.
Sending a SIGHUP signal to the server causes
several flush operations to occur that are similar to various
forms of the FLUSH statement. See
Section 5.1.10, “Server Response to Signals”.
The FLUSH statement causes an
implicit commit. See Section 13.3.3, “Statements That Cause an Implicit Commit”.
The RESET statement is similar to
FLUSH. See
Section 13.7.6.6, “RESET Syntax”, for information about using the
RESET statement with replication.
flush_option can be any of the
following items:
DES_KEY_FILE
Reloads the DES keys from the file that was specified with
the --des-key-file option at
server startup time.
HOSTS
Empties the host cache. You should flush the host cache if
some of your hosts change IP address or if the error message
Host ' occurs. (See
Section C.5.2.6, “host_name' is
blockedHost '”.) When more than
host_name' is
blockedmax_connect_errors errors
occur successively for a given host while connecting to the
MySQL server, MySQL assumes that something is wrong and
blocks the host from further connection requests. Flushing
the host cache enables further connection attempts from the
host. The default value of
max_connect_errors is 10.
To avoid this error message, start the server with
max_connect_errors set to a
large value.
LOGS
Closes and reopens all log files. If binary logging is enabled, the sequence number of the binary log file is incremented by one relative to the previous file.
Prior to MySQL 5.1.51, if you flush the logs using
FLUSH LOGS
and mysqld is writing the error log to a
file (for example, if it was started with the
--log-error option), log file
renaming may occur, as described in
Section 5.2.2, “The Error Log”.
MASTER
Deletes all binary logs, resets the binary log index file
and creates a new binary log.
FLUSH
MASTER is deprecated in favor of
RESET MASTER.
FLUSH
MASTER is still accepted in MySQL 5.1
for backward compatibility, but is removed in MySQL 5.6. See
Section 13.4.1.2, “RESET MASTER Syntax”.
PRIVILEGES
Reloads the privileges from the grant tables in the
mysql database.
The server caches information in memory as a result of
GRANT,
CREATE USER,
CREATE SERVER, and
INSTALL PLUGIN statements.
This memory is not released by the corresponding
REVOKE,
DROP USER,
DROP SERVER, and
UNINSTALL PLUGIN statements,
so for a server that executes many instances of the
statements that cause caching, there will be an increase in
memory use. This cached memory can be freed with
FLUSH
PRIVILEGES.
QUERY CACHE
Defragment the query cache to better utilize its memory.
FLUSH QUERY
CACHE does not remove any queries from the cache,
unlike FLUSH
TABLES or RESET QUERY CACHE.
SLAVE
Resets all replication slave parameters, including relay log
files and replication position in the master's binary logs.
FLUSH SLAVE
is deprecated in favor of RESET
SLAVE.
FLUSH SLAVE
is still accepted in MySQL 5.1 for backward
compatibility, but is removed in MySQL 5.6. See
Section 13.4.2.5, “RESET SLAVE Syntax”.
STATUS
This option adds the current thread's session status
variable values to the global values and resets the session
values to zero. Some global variables may be reset to zero
as well. It also resets the counters for key caches (default
and named) to zero and sets
Max_used_connections to
the current number of open connections. This is something
you should use only when debugging a query. See
Section 1.7, “How to Report Bugs or Problems”.
TABLES
FLUSH
TABLES flushes tables, and, depending on the
variant used, acquires locks. The permitted syntax is
discussed later in this section.
USER_RESOURCES
Resets all per-hour user resources to zero. This enables
clients that have reached their hourly connection, query, or
update limits to resume activity immediately.
FLUSH
USER_RESOURCES does not apply to the limit on
maximum simultaneous connections. See
Section 6.3.4, “Setting Account Resource Limits”.
The mysqladmin utility provides a
command-line interface to some flush operations, using commands
such as flush-hosts,
flush-logs,
flush-privileges,
flush-status, and
flush-tables. See
Section 4.5.2, “mysqladmin — Client for Administering a MySQL Server”.
It is not possible to issue
FLUSH statements within stored
functions or triggers. However, you may use
FLUSH in stored procedures, so
long as these are not called from stored functions or
triggers. See Section E.1, “Restrictions on Stored Programs”.
FLUSH TABLES Syntax
FLUSH TABLES
has several forms, described following.
FLUSH TABLE is
a synonym for FLUSH
TABLES, except that TABLE does not
work with the WITH READ LOCK variant.
FLUSH TABLES
Closes all open tables, forces all tables in use to be
closed, and flushes the query cache.
FLUSH
TABLES also removes all query results from the
query cache, like the RESET QUERY CACHE
statement.
FLUSH TABLES
tbl_name [,
tbl_name] ...
With a list of one or more comma-separated table names, this
statement is like
FLUSH
TABLES with no names except that the server
flushes only the named tables. No error occurs if a named
table does not exist.
FLUSH TABLES WITH READ LOCK
Closes all open tables and locks all tables for all
databases with a global read lock. This is a very convenient
way to get backups if you have a file system such as Veritas
or ZFS that can take snapshots in time. Use
UNLOCK
TABLES to release the lock.
FLUSH TABLES WITH
READ LOCK acquires a global read lock and not
table locks, so it is not subject to the same behavior as
LOCK TABLES and
UNLOCK
TABLES with respect to table locking and implicit
commits:
UNLOCK
TABLES implicitly commits any active
transaction only if any tables currently have been
locked with LOCK TABLES.
The commit does not occur for
UNLOCK
TABLES following
FLUSH TABLES WITH
READ LOCK because the latter statement does
not acquire table locks.
Beginning a transaction causes table locks acquired with
LOCK TABLES to be
released, as though you had executed
UNLOCK
TABLES. Beginning a transaction does not
release a global read lock acquired with
FLUSH TABLES WITH
READ LOCK.
FLUSH TABLES WITH
READ LOCK does not prevent the server from
inserting rows into the log tables (see
Section 5.2.1, “Selecting General Query and Slow Query Log Output Destinations”).