PURGE { BINARY | MASTER } LOGS
    { TO 'log_name' | BEFORE datetime_expr }
The binary log is a set of files that contain information about data modifications made by the MySQL server. The log consists of a set of binary log files, plus an index file.
        The PURGE BINARY LOGS statement
        deletes all the binary log files listed in the log index file
        prior to the specified log file name or date. The log files also
        are removed from the list recorded in the index file, so that
        the given log file becomes the first.
      
        This statement has no effect if the
        --log-bin option has not been
        enabled.
      
Examples:
PURGE BINARY LOGS TO 'mysql-bin.010'; PURGE BINARY LOGS BEFORE '2008-04-02 22:46:26';
        The BEFORE variant's
        datetime_expr argument should
        evaluate to a DATETIME value (a
        value in 'YYYY-MM-DD hh:mm:ss' format).
        BINARY and MASTER are
        synonyms.
      
This statement is safe to run while slaves are replicating. You do not need to stop them. If you have an active slave that currently is reading one of the logs you are trying to delete, this statement does nothing and fails with an error. However, if a slave is dormant and you happen to purge one of the logs it has yet to read, the slave will be unable to replicate after it comes up.
To safely purge logs, follow this procedure:
            On each slave server, use SHOW SLAVE
            STATUS to check which log it is reading.
          
            Obtain a listing of the binary logs on the master server
            with SHOW BINARY LOGS.
          
Determine the earliest log among all the slaves. This is the target log. If all the slaves are up to date, this is the last log on the list.
Make a backup of all the logs you are about to delete. (This step is optional, but always advisable.)
Purge all logs up to but not including the target log.
        You can also set the
        expire_logs_days system
        variable to expire binary log files automatically after a given
        number of days (see Section 5.1.4, “Server System Variables”).
        If you are using replication, you should set the variable no
        lower than the maximum number of days your slaves might lag
        behind the master.
      
        Prior to MySQL 5.1.24, PURGE BINARY LOGS TO
        and PURGE BINARY LOGS BEFORE did not behave
        in the same way (and neither one behaved correctly) when binary
        log files listed in the .index file had
        been removed from the system by some other means (such as using
        rm on Linux). Beginning with MySQL 5.1.24, both variants of the
        statement fail with an error in such cases. (Bug#18199, Bug#18453) You can handle such errors by editing the
        .index file (which is a simple text file)
        manually and insuring that it lists only the binary log files
        that are actually present, then running again the
        PURGE BINARY LOGS statement that
        failed.
      


User Comments
Add your own comment.