(mysql.info.gz) Server Shutdown
Info Catalog
(mysql.info.gz) Configuring MySQL
(mysql.info.gz) MySQL Database Administration
(mysql.info.gz) Security
5.3 The MySQL Server Shutdown Process
=====================================
The server shutdown process can be summarized like this:
1. The shutdown process is initiated
2. The server creates a shutdown thread if necessary
3. The server stops accepting new connections
4. The server terminates current activity
5. Storage engines are shut down or closed
6. The server exits
A more detailed description of the process follows:
1. The shutdown process is initiated.
Server shutdown can be initiated several ways. For example, a user
with the `SHUTDOWN' privilege can execute a `mysqladmin shutdown'
command. `mysqladmin' can be used on any platform supported by
MySQL. Other operating system-specific shutdown initiation methods
are possible as well: The server shuts down on Unix when it
receives a `SIGTERM' signal. A server running as a service on
Windows shuts down when the services manager tells it to.
2. The server creates a shutdown thread if necessary.
Depending on how shutdown was initiated, the server might create a
thread to handle the shutdown process. If shutdown was requested
by a client, a shutdown thread is created. If shutdown is the
result of receiving a `SIGTERM' signal, the signal thread might
handle shutdown itself, or it might create a separate thread to do
so. If the server tries to create a shutdown thread and cannot
(for example, if memory is exhausted), it issues a diagnostic
message that will appear in the error log:
Error: Can't create thread to kill server
3. The server stops accepting new connections.
To prevent new activity from being initiated during shutdown, the
server stops accepting new client connections. It does this by
closing the network connections to which it normally listens for
connections: the TCP/IP port, the Unix socket file, the Windows
named pipe, and shared memory on Windows.
4. The server terminates current activity.
For each thread that is associated with a client connection, the
connection to the client is broken and the thread is marked as
killed. Threads die when they notice that they are so marked.
Threads for idle connections die quickly. Threads that currently
are processing queries check their state periodically and take
longer to die. For additional information about thread
termination, see `KILL' KILL, in particular for the
instructions about killed `REPAIR TABLE' or `OPTIMIZE TABLE'
operations on `MyISAM' tables.
For threads that have an open transaction, the transaction is
rolled back. Note that if a thread is updating a
non-transactional table, an operation such as a multiple-row
`UPDATE' or `INSERT' may leave the table partially updated,
because the operation can terminate before completion.
If the server is a master replication server, threads associated
with currently connected slaves are treated like other client
threads. That is, each one is marked as killed and exits when it
next checks its state.
If the server is a slave replication server, the I/O and SQL
threads, if active, are stopped before client threads are marked
as killed. The SQL thread is allowed to finish its current
statement (to avoid causing replication problems) then stops. If
the SQL thread was in the middle of a transaction at this point,
the transaction is rolled back.
5. Storage engines are shut down or closed.
At this stage, the table cache is flushed and all open tables are
closed.
Each storage engine performs any actions necessary for tables that
it manages. For example, MyISAM flushes any pending index writes
for a table. InnoDB flushes its buffer pool to disk, writes the
current LSN to the tablespace, and terminates its own internal
threads.
6. The server exits.
Info Catalog
(mysql.info.gz) Configuring MySQL
(mysql.info.gz) MySQL Database Administration
(mysql.info.gz) Security
automatically generated byinfo2html