mysqlcheck

You are viewing an old version of this article. View the current version here.

mysqlcheck is a maintenance tool that allows you to check, repair, analyze and optimize multiple tables at once from the command line.

Usage: ./client/mysqlcheck [OPTIONS] database [tables]
OR     ./client/mysqlcheck [OPTIONS] --databases DB1 [DB2 DB3...]
OR     ./client/mysqlcheck [OPTIONS] --all-databases

mysqlcheck can be used to CHECK (-c, -m, -C), REPAIR (-r), ANALYZE (-a), or OPTIMIZE (-o) tables. Some of the options (like -e or -q) can be used at the same time. Not all options are supported by all storage engines.

The options -c, -r, -a, and -o are exclusive to each other, which means that the last option will be used, if several was specified.

The option --check will be used by default, if none was specified. You can change the default behavior by making a symbolic link, or copying this file somewhere with another name, the alternatives are:

mysqlrepairThe default option will be -r (--repair)
mysqlanalyzeThe default option will be -a (--analyze)
mysqloptimizeThe default option will be -o (--optimize)

The following groups are read from the my.cnf files: [mysqlcheck] and [client].

The following options to handle option files may be given as the first argument:

--print-defaultsPrint the program argument list and exit.
--no-defaultsDon't read default options from any option file.
--defaults-file=#Only read default options from the given file #.
--defaults-extra-file=#Read this file after the global files are read.

Main arguments are:

-A, --all-databasesCheck all the databases. This is the same as --databases with all databases selected.
-a, --analyzeAnalyze given tables.
-1, --all-in-1Instead of issuing one query for each table, use one query per database, naming all tables in the database in a comma-separated list.
--auto-repairIf a checked table is corrupted, automatically fix it. Repairing will be done after all tables have been checked, if corrupted ones were found.
--character-sets-dir=nameDirectory for character set files.
-c, --checkCheck table for errors.
-C, --check-only-changedCheck only tables that have changed since last check or haven't been closed properly.
-g, --check-upgradeCheck tables for version-dependent changes. May be used with --auto-repair to correct tables requiring version-dependent updates. Used when upgrading
--compressUse compression in server/client protocol.
-B, --databasesCheck several databases. Note the difference in usage; in this case no tables are given. All name arguments are regarded as database names.
-#, --debug[=name]Output debug log. Often this is 'd:t:o,filename'.
--debug-checkCheck memory and open file usage at exit.
--debug-infoPrint some debug info at exit.
--default-character-set=nameSet the default character set.
-F, --fastCheck only tables that haven't been closed properly.
--fix-db-namesFix database names. Used when upgrading
--fix-table-namesFix table names. Used when upgrading
-f, --forceContinue even if we get an SQL error.
-e, --extendedIf you are using this option with --check, it will ensure that the table is 100 percent consistent, but will take a long time. If you are using this option with --repair, it will force using old slow repair with keycache method, instead of much faster repair by sorting.
-?, --helpDisplay this help message and exit.
-h, --host=nameConnect to host.
-m, --medium-checkFaster than extended-check, but only finds 99.99 percent of all errors. Should be good enough for most cases.
--write-binlogLog ANALYZE, OPTIMIZE and REPAIR TABLE commands. Enabled by default; use --skip-write-binlog when commands should not be sent to replication slaves.
-o, --optimizeOptimize table.
-p, --password[=name]Password to use when connecting to server. If password is not given, it's solicited on the tty.
-P, --port=#Port number to use for connection or 0 for default to, in order of preference, my.cnf, $MYSQL_TCP_PORT, /etc/services, built-in default (3306).
--protocol=nameThe protocol to use for connection (tcp, socket, pipe, memory).
-q, --quickIf you are using this option with CHECK TABLE, it prevents the check from scanning the rows to check for wrong links. This is the fastest check. If you are using this option with REPAIR TABLE, it will try to repair only the index tree. This is the fastest repair method for a table.
-r, --repairCan fix almost anything except unique keys that aren't unique.
-s, --silentPrint only error messages.
-S, --socket=nameThe socket file to use for connection.
--sslEnable SSL for connection (automatically enabled with other flags). Disable with --skip-ssl.
--ssl-ca=nameCA file in PEM format (check OpenSSL docs, implies --ssl).
--ssl-capath=nameCA directory (check OpenSSL docs, implies --ssl).
--ssl-cert=nameX509 cert in PEM format (implies --ssl).
--ssl-cipher=nameSSL cipher to use (implies --ssl).
--ssl-key=nameX509 key in PEM format (implies --ssl).
--ssl-verify-server-certVerify server's "Common Name" in its cert against hostname used when connecting. This option is disabled by default.
--tablesOverrides option --databases (-B).
--use-frmWhen used with REPAIR, get table structure from .frm file, so the table can be repaired even if .MYI header is corrupted.
-u, --user=nameUser for login if not current user.
-v, --verbosePrint info about the various stages. You can give this option several times to get even more information.
-V, --versionOutput version information and exit.

To see the default values for the options and also to see the arguments you get from configuration files you can do:

./client/mysqlcheck --print-defaults
./client/mysqlcheck --help

When running mysqlcheck with --auto-repair (as done by mysql_upgrade), mysqlcheck will first check all tables and then in a separate phase repair those that failed the check.

mysqlcheck --all-databases will ignore the MySQL internal log tables 'general_log' and 'slow_log' as these can't be checked, repaired or optimized.

Comments

Comments loading...
Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.