утилита для обслуживания таблиц MyISAM (MyISAM table-maintenance utility)
Описание (Description)
The myisamchk
utility gets information about your database tables
or checks, repairs, or optimizes them. myisamchk
works with
MyISAM tables (tables that have .MYD and .MYI files for storing
data and indexes).
The use of myisamchk
with partitioned tables is not supported.
Caution
It is best to make a backup of a table before performing a
table repair operation; under some circumstances the
operation might cause data loss. Possible causes include but
are not limited to file system errors.
Invoke myisamchk
like this:
shell> myisamchk [
options]
tbl_name ...
The options specify what you want myisamchk
to do. They are
described in the following sections. You can also get a list of
options by invoking myisamchk --help
.
With no options, myisamchk
simply checks your table as the
default operation. To get more information or to tell myisamchk
to take corrective action, specify options as described in the
following discussion.
tbl_name is the database table you want to check or repair. If
you run myisamchk
somewhere other than in the database directory,
you must specify the path to the database directory, because
myisamchk
has no idea where the database is located. In fact,
myisamchk
does not actually care whether the files you are
working on are located in a database directory. You can copy the
files that correspond to a database table into some other
location and perform recovery operations on them there.
You can name several tables on the myisamchk
command line if you
wish. You can also specify a table by naming its index file (the
file with the .MYI suffix). This allows you to specify all tables
in a directory by using the pattern *.MYI. For example, if you
are in a database directory, you can check all the MyISAM tables
in that directory like this:
shell> myisamchk *.MYI
If you are not in the database directory, you can check all the
tables there by specifying the path to the directory:
shell> myisamchk
/path/to/database_dir/*.MYI
You can even check all tables in all databases by specifying a
wildcard with the path to the MariaDB data directory:
shell> myisamchk
/path/to/datadir/*/*.MYI
The recommended way to quickly check all MyISAM tables is:
shell> myisamchk --silent --fast
/path/to/datadir/*/*.MYI
If you want to check all MyISAM tables and repair any that are
corrupted, you can use the following command:
shell> myisamchk --silent --force --fast --update-state \
--key_buffer_size=64M --sort_buffer_size=64M \
--read_buffer_size=1M --write_buffer_size=1M \
/path/to/datadir/*/*.MYI
This command assumes that you have more than 64MB free. For more
information about memory allocation with myisamchk
, see the
section called 'MYISAMCHK MEMORY USAGE'.
Important
You must ensure that no other program is using the tables
while you are running myisamchk
. The most effective means of
doing so is to shut down the MariaDB server while running
myisamchk
, or to lock all tables that myisamchk
is being used
on.
Otherwise, when you run myisamchk
, it may display the
following error message:
warning: clients are using or haven´t closed the table properly
This means that you are trying to check a table that has been
updated by another program (such as the mysqld
server) that
hasn´t yet closed the file or that has died without closing
the file properly, which can sometimes lead to the corruption
of one or more MyISAM tables.
If mysqld
is running, you must force it to flush any table
modifications that are still buffered in memory by using
FLUSH TABLES. You should then ensure that no one is using the
tables while you are running myisamchk
However, the easiest way to avoid this problem is to use
CHECK TABLE instead of myisamchk
to check tables.
myisamchk
supports the following options, which can be specified
on the command line or in the [myisamchk] option file group.