DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(mysql.info) server-shutdown

Info Catalog (mysql.info) server-sql-mode (mysql.info) mysqld
 
 5.2.6 The MySQL Server Shutdown Process
 ---------------------------------------
 
 The server shutdown process takes place as 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 appears 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 statements check their state periodically and take
      longer to die. For additional information about thread
      termination, see  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), and 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 (starting
      from 5.0.5: unless `innodb_fast_shutdown' is 2), writes the
      current LSN to the tablespace, and terminates its own internal
      threads.
 
   6. The server exits.
 
Info Catalog (mysql.info) server-sql-mode (mysql.info) mysqld
automatically generated byinfo2html