Databases Reference
In-Depth Information
The Binary Log
An update log contains all the information needed to re-create any changes to the da-
tabase since the server was started or the logs were flushed; this feature allows you to
always have an up-to-date backup of your database. You can keep a list of every SQL
query that changes data on the server by passing the log-bin option to the MySQL
server ( mysqld_safe , mysqld-nt.exe , or mysqld ).
If no preferred name and directory is specified for the logfile, the server will use the file
< hostname>-bin in the MySQL data directory. Individual logfiles will have the exten-
sions .000001 , .000002 , and so on; any extensions you specify to the log-bin option
are ignored. For example, on a machine with the hostname eden , the binary logfiles are
typically named eden-bin.000001 , eden-bin.000002 , and so on. It's also common to see
the word mysql used in place of the hostname. The update log is saved in a compact
binary format; prior to MySQL version 5.0, the log-update option would save an update
log in text format. However, the text format is deprecated and is treated the same as
log-bin in MySQL 5.0 and later.
When the server is shut down, it ensures that all modifications to data have been written
( flushed ) to the binary log. The next time the server is started, it opens a new logfile
alongside the old one with an incremented number in the extension. For example, the
current binary logfile might be called eden-bin.000012 ; after the server is restarted, it
creates the new logfile eden-bin.000013 to log all modifications to the database since
the restart. The logs can be manually flushed at any time using the FLUSH LOGS command
in the monitor, or the mysqladmin flush-logs command from the command line.
You can view the SQL statements in the binary log by using the msqlbinlog command
and specifying the full path to the binary logfile. For example, if on this system the
MySQL data directory is /usr/lib/mysql/data , you can view the contents of the binary
logfile eden-bin.000002 by typing:
# mysqlbinlog /usr/lib/mysql/data/eden-bin.000002
You'll need to have the necessary permissions to access the MySQL data directory and
to read the binary logfile on your host system. You might see something like this when
you open a logfile:
...
use music;
SET TIMESTAMP=1151221361;
SET @@session.foreign_key_checks=0, @@session.unique_checks=0;
SET @@session.sql_mode=524288;
/*!\C utf8 */;
SET @@session.character_set_client=33,@@session.collation_connection=33,
@@session.collation_server=8;
DROP TABLE IF EXISTS `artist`;
# at 30551
#060625 17:42:41 server id 1 end_log_pos 30794 Query thread_id=168
exec_time=0 error_code=0
SET TIMESTAMP=1151221361;
 
Search WWH ::




Custom Search