# mariadb-check

## NAME



           mariadb-check - a table maintenance program (mariadb-check is now
           a symlink to mariadb-check)
    


## SYNOPSIS



    
           **mariadb-check [**_options_**] [**_db_name_ **[**_tbl_name_ **...]]**
    


## DESCRIPTION



           The **mariadb-check** client performs table maintenance: It checks,
           repairs, optimizes, or analyzes tables.
    
           Each table is locked and therefore unavailable to other sessions
           while it is being processed, although for check operations, the
           table is locked with a READ lock only. Table maintenance
           operations can be time-consuming, particularly for large tables.
           If you use the **--databases** or **--all-databases** option to process
           all tables in one or more databases, an invocation of **mariadb-**
           **check** might take a long time. (This is also true for **mariadb-**
           **upgrade** because that program invokes **mariadb-check** to check all
           tables and repair them if necessary.)
    
           **mariadb-check** is similar in function to **myisamchk** , but works
           differently. The main operational difference is that **mariadb-check**
           must be used when the **mariadbd** server is running, whereas
           **myisamchk** should be used when it is not. The benefit of using
           **mariadb-check** is that you do not have to stop the server to
           perform table maintenance.
    
           **mariadb-check** uses the SQL statements CHECK TABLE, REPAIR TABLE,
           ANALYZE TABLE, and OPTIMIZE TABLE in a convenient way for the
           user. It determines which statements to use for the operation you
           want to perform, and then sends the statements to the server to be
           executed.
    
           The MyISAM storage engine supports all four maintenance
           operations, so **mariadb-check** can be used to perform any of them on
           MyISAM tables. Other storage engines do not necessarily support
           all operations. In such cases, an error message is displayed. For
           example, if test.t is a MEMORY table, an attempt to check it
           produces this result:
    
               shell> **mariadb-check test t**
               test.t
               note     : The storage engine for the table doesn't support check
    
           If **mariadb-check** is unable to repair a table, see the MariaDB
           Knowledge Base for manual table repair strategies. This will be
           the case, for example, for InnoDB tables, which can be checked
           with CHECK TABLE, but not repaired with REPAIR TABLE.
    
           The use of **mariadb-check** 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.
    
           There are three general ways to invoke **mariadb-check** :
    
               shell> **mariadb-check [**_options_**]**_db_name_ **[**_tbl_name_ **...]**
               shell> **mariadb-check [**_options_**] --databases** _db_name_ **...**
               shell> **mariadb-check [**_options_**] --all-databases**
    
           If you do not name any tables following _db_name_ or if you use the
           **--databases** or **--all-databases** option, entire databases are
           checked.
    
           **mariadb-check** has a special feature compared to other client
           programs. The default behavior of checking tables (**--check**) can be
           changed by renaming the binary. If you want to have a tool that
           repairs tables by default, you should just make a copy of **mariadb-**
           **check** named **mariadb-repair** , or make a symbolic link to **mariadb-**
           **check** named **mariadb-repair**. If you invoke **mariadb-repair** , it
           repairs tables.
    
           The following names can be used to change **mariadb-check** default
           behavior.
           ┌────────────────┬───────────────────────┐
           │ **mariadb-repair** │ The default option is │
           │                │ **--repair** │
           ├────────────────┼───────────────────────┤
           │ **mysqlanalyze** │ The default option is │
           │                │ **--analyze** │
           ├────────────────┼───────────────────────┤
           │ **mysqloptimize** │ The default option is │
           │                │ **--optimize** │
           └────────────────┴───────────────────────┘
    
           **mariadb-check** supports the following options, which can be
           specified on the command line or in the [mariadb-check] and
           [client] option file groups.  The **-c** , **-r** , **-a** and **-o** options are
           exclusive to each other.
    
           •   **--help** , **-?**
    
               Display a help message and exit.
    
           •   **--all-databases** , **-A**
    
               Check all tables in all databases. This is the same as using
               the **--databases** option and naming all the databases on the
               command line.
    
           •   **--all-in-1** , **-1**
    
               Instead of issuing a statement for each table, execute a
               single statement for each database that names all the tables
               from that database to be processed.
    
           •   **--analyze** , **-a**
    
               Analyze the tables.
    
           •   **--auto-repair**
    
               If a checked table is corrupted, automatically fix it. Any
               necessary repairs are done after all tables have been checked.
    
           •   **--character-sets-dir=**_path_
    
               The directory where character sets are installed.
    
           •   **--check** , **-c**
    
               Check the tables for errors. This is the default operation.
    
           •   **--check-only-changed** , **-C**
    
               Check only tables that have changed since the last check or
               that have not been closed properly.
    
           •   **--check-upgrade** , **-g**
    
               Invoke CHECK TABLE with the FOR UPGRADE option to check tables
               for incompatibilities with the current version of the server.
               This option automatically enables the **--fix-db-names** and
               **--fix-table-names** options.
    
           •   **--compress**
    
               Compress all information sent between the client and the
               server if both support compression.
    
           •   **--databases** , **-B**
    
               Process all tables in the named databases. Normally, **mariadb-**
               **check** treats the first name argument on the command line as a
               database name and following names as table names. With this
               option, it treats all name arguments as database names.
    
           •   **--debug[=**_debug_options_**]** , **-# [**_debug_options_**]**
    
               Write a debugging log. A typical _debug_options_ string is
               'd:t:o,_file_name_ '. The default is 'd:t:o'.
    
           •   **--debug-check**
    
               Print some debugging information when the program exits.
    
           •   **--debug-info**
    
               Print debugging information and memory and CPU usage
               statistics when the program exits.
    
           •   **--default-auth=**_name_
    
               Default authentication client-side plugin to use.
    
           •   **--default-character-set=**_charset_name_
    
               Use _charset_name_ as the default character set.
    
           •   **--defaults-extra-file=**_filename_
    
               Set _filename_ as the file to read default options from after
               the global defaults files has been read.  Must be given as
               first option.
    
           •   **--defaults-file=**_filename_
    
               Set _filename_ as the file to read default options from,
               override global defaults files.  Must be given as first
               option.
    
           •   **--extended** , **-e**
    
               If you are using this option to check tables, it ensures that
               they are 100% consistent but takes a long time.
    
               If you are using this option to repair tables, it will force
               using the old, slow, repair with keycache method, instead of
               the much faster repair by sorting.
    
           •   **--fast** , **-F**
    
               Check only tables that have not been closed properly.
    
           •   **--fix-db-names**
    
               Convert database names to the format used since MySQL 5.1.
               Only database names that contain special characters are
               affected.
    
           •   **--fix-table-names**
    
               Convert table names (including views) to the format used since
               MySQL 5.1. Only table names that contain special characters
               are affected.
    
           •   **--flush** ,
    
               Flush each table after check. This is useful if you don't want
               to have the checked tables take up space in the caches after
               the check.
    
           •   **--force** , **-f**
    
               Continue even if an SQL error occurs.
    
           •   **--host=**_host_name_ , **-h** _host_name_
    
               Connect to the MariaDB server on the given host.
    
           •   **--medium-check** , **-m**
    
               Do a check that is faster than an **--extended** operation. This
               finds only 99.99% of all errors, which should be good enough
               in most cases.
    
           •   **--no-defaults**
    
               Do not read default options from any option file. This must be
               given as the first argument.
    
           •   **--optimize** , **-o**
    
               Optimize the tables.
    
           •   **--password[=**_password_**]** , **-p[**_password_**]**
    
               The password to use when connecting to the server. If you use
               the short option form (**-p**), you _cannot_ have a space between
               the option and the password. If you omit the _password_ value
               following the **--password** or **-p** option on the command line,
               **mariadb-check** prompts for one.
    
               Specifying a password on the command line should be considered
               insecure. You can use an option file to avoid giving the
               password on the command line.
    
           •   **--persistent** , **-Z**
    
               Used with ANALYZE TABLE to append the option PERSISTENT FOR
               ALL.
    
           •   **--pipe** , **-W**
    
               On Windows, connect to the server via a named pipe. This
               option applies only if the server supports named-pipe
               connections.
    
           •   **--plugin-dir=**_name_
    
                Directory for client-side plugins.
    
           •   **--port=**_port_num_ , **-P** _port_num_
    
               The TCP/IP port number to use for the connection.  Forces
               --protocol=tcp when specified on the command line without
               other connection properties.
    
           •   **--print-defaults**
    
               Print the program argument list and exit.  This must be given
               as the first argument.
    
           •   **--process-tables**
    
               Perform the requested operation on tables. Defaults to on; use
               **--skip-process-tables** to disable.
    
           •   **--process-views=**_val_
    
               Perform the requested operation (only CHECK VIEW or REPAIR
               VIEW). Possible values are NO, YES (correct the checksum, if
               necessary, add the mariadb-version field), UPGRADE_FROM_MYSQL
               (same as YES and toggle the algorithm MERGE<->TEMPTABLE.
    
           •   **--protocol={TCP|SOCKET|PIPE|MEMORY}**
    
               The connection protocol to use for connecting to the server.
               It is useful when the other connection parameters normally
               would cause a protocol to be used other than the one you want.
    
           •   **--quick** , **-q**
    
               If you are using this option to check tables, it prevents the
               check from scanning the rows to check for incorrect links.
               This is the fastest check method.
    
               If you are using this option to repair tables, it tries to
               repair only the index tree. This is the fastest repair method.
    
           •   **--repair** , **-r**
    
               Perform a repair that can fix almost anything except unique
               keys that are not unique.
    
           •   **--silent** , **-s**
    
               Silent mode. Print only error messages.
    
           •   **--skip-database=**_db_name_
    
               Don't process the database (case-sensitive) specified as
               argument.
    
           •   **--socket=**_path_ , **-S** _path_
    
               For connections to localhost, the Unix socket file to use, or,
               on Windows, the name of the named pipe to use.  Forces
               --protocol=socket when specified on the command line without
               other connection properties; on Windows, forces
               --protocol=pipe.
    
           •   **--ssl**
    
               Enable SSL for connection (automatically enabled with other
               flags). Disable with **--skip-ssl**.
    
           •   **--ssl-ca=**_name_
    
               CA file in PEM format (check OpenSSL docs, implies **--ssl**).
    
           •   **--ssl-capath=**_name_
    
               CA directory (check OpenSSL docs, implies **--ssl**).
    
           •   **--ssl-cert=**_name_
    
               X509 cert in PEM format (check OpenSSL docs, implies **--ssl**).
    
           •   **--ssl-cipher=**_name_
    
               SSL cipher to use (check OpenSSL docs, implies **--ssl**).
    
           •   **--ssl-key=**_name_
    
               X509 key in PEM format (check OpenSSL docs, implies **--ssl**).
    
           •   **--ssl-crl=**_name_
    
               Certificate revocation list (check OpenSSL docs, implies
               **--ssl**).
    
           •   **--ssl-crlpath=**_name_
    
               Certificate revocation list path (check OpenSSL docs, implies
               **--ssl**).
    
           •   **--ssl-verify-server-cert**
    
               Verify server's "Common Name" in its cert against hostname
               used when connecting. This option is disabled by default.
    
           •   **--tables**
    
               Override the **--databases** or **-B** option. All name arguments
               following the option are regarded as table names.
    
           •   **--use-frm**
    
               For repair operations on MyISAM tables, get the table
               structure from the .frm file so that the table can be repaired
               even if the .MYI header is corrupted.
    
           •   **--user=**_user_name_ , **-u** _user_name_
    
               The MariaDB user name to use when connecting to the server.
    
           •   **--verbose** , **-v**
    
               Verbose mode. Print information about the various stages of
               program operation.  Using one **--verbose** option will give you
               more information about what mariadb-check is doing.
    
               Using two **--verbose** options will also give you connection
               information.
    
               Using it 3 times will print out all CHECK, RENAME and ALTER
               TABLE during the check phase.
    
           •   **--version** , **-V**
    
               Display version information and exit.
    
           •   **--write-binlog**
    
               This option is enabled by default, so that ANALYZE TABLE,
               OPTIMIZE TABLE, and REPAIR TABLE statements generated by
               **mariadb-check** are written to the binary log. Use
               **--skip-write-binlog** to cause NO_WRITE_TO_BINLOG to be added to
               the statements so that they are not logged. Use the
               **--skip-write-binlog** when these statements should not be sent
               to replication slaves or run when using the binary logs for
               recovery from backup.
    


* * *