MySQL 5.6 Reference Manual Including MySQL NDB Cluster 7.3-7.4 Reference Guide
The redo log is a disk-based data structure used during crash recovery to correct data written by incomplete transactions. During normal operations, the redo log encodes requests to change table data that result from SQL statements or low-level API calls. Modifications that did not finish updating the data files before an unexpected shutdown are replayed automatically during initialization, and before the connections are accepted. For information about the role of the redo log in crash recovery, see Section 14.18.2, “InnoDB Recovery”.
By default, the redo log is physically represented on disk by two
files named ib_logfile0
and
ib_logfile1
. MySQL writes to the redo log
files in a circular fashion. Data in the redo log is encoded in
terms of records affected; this data is collectively referred to
as redo. The passage of data through the redo log is represented
by an ever-increasing LSN value.
For related information, see Redo Log File Configuration, and Section 8.5.4, “Optimizing InnoDB Redo Logging”.
To change the number or size of InnoDB
redo log files in MySQL
5.6.7 or earlier, perform the following steps:
If innodb_fast_shutdown
is
set to 2, set
innodb_fast_shutdown
to 1:
mysql> SET GLOBAL innodb_fast_shutdown = 1;
After ensuring that
innodb_fast_shutdown
is not
set to 2, stop the MySQL server and make sure that it shuts
down without errors (to ensure that there is no information
for outstanding transactions in the log).
Copy the old log files into a safe place in case something went wrong during the shutdown and you need them to recover the tablespace.
Delete the old log files from the log file directory.
Edit my.cnf
to change the log file
configuration.
Start the MySQL server again. mysqld sees
that no InnoDB
log files exist
at startup and creates new ones.
The innodb_fast_shutdown
setting is no longer relevant when changing the number or the
size of InnoDB
log files. Additionally, you
are no longer required to remove old log files, although you may
still want to copy the old log files to a safe place, as a
backup. To change the number or size of
InnoDB
log files, perform the following
steps:
Stop the MySQL server and make sure that it shuts down without errors.
Edit my.cnf
to change the log file
configuration. To change the log file size, configure
innodb_log_file_size
. To
increase the number of log files, configure
innodb_log_files_in_group
.
Start the MySQL server again.
If InnoDB
detects that the
innodb_log_file_size
differs
from the redo log file size, it writes a log checkpoint, closes
and removes the old log files, creates new log files at the
requested size, and opens the new log files.
InnoDB
, like any other
ACID-compliant database engine,
flushes the redo log of a
transaction before it is committed. InnoDB
uses group commit
functionality to group multiple such flush requests together to
avoid one flush for each commit. With group commit,
InnoDB
issues a single write to the log file
to perform the commit action for multiple user transactions that
commit at about the same time, significantly improving
throughput.
For more information about performance of
COMMIT
and other transactional operations,
see Section 8.5.2, “Optimizing InnoDB Transaction Management”.