mysqlcheck offers an efficient way to perform maintenance of tables and databases in MySQL. It can check tables, repair them if found corrupt, optimize them and perform combined operations of checking, repairing, and optimizing altogether.
mysqlcheck command-line utility in MySQL is intended to be used when the mysqld server is running. It can execute CHECK TABLE, REPAIR TABLE, ANALYZE TABLE and OPTIMIZE TABLE statements in the most convenient way for the user.
What is mysqlcheck Client?
mysqlcheck is a table maintenance program to check, repair, optimize, or analyze multiple tables from the command line. It works with InnoDB, MyISAM, and ARCHIVE tables and provides three levels of checking:
- Table-specific
- Database-specific
- All databases
mysqlcheck table client for MySQL consists of four SQL statements to perform the table maintenance action:
- CHECK TABLE,
- REPAIR TABLE,
- ANALYZE TABLE, and
- OPTIMIZE TABLE
While performing table repair or analysis, it is important to bear in mind that table maintenance operations like mysqlcheck can become time-consuming processes especially when you have a large number of entries in your tables.
If you use the –databases or –all-databases option to process all tables in one or more databases, a mysqlcheck call might take you a long time to complete.
Note: For performing mysqlcheck operation, you must run the mysqld server. This means that you do not have to stop the server to perform table maintenance. mysqlcheck is different from myisamchk and aria_chk utilities that don’t require the server to be running.
mysqlcheck Command
There are three ways to use mysqlcheck command-line tool:
./client/mysqlcheck [OPTIONS] database [tables]
./client/mysqlcheck [OPTIONS] --databases DB1 [DB2 DB3...]
./client/mysqlcheck [OPTIONS] --all-databases
- The
mysqlcheck
command is a MySQL utility used to check, repair, and optimize database tables.
- The first command format,
./client/mysqlcheck [OPTIONS] database [tables]
, checks specified tables within a given database for errors and can also repair them.
- The second command,
./client/mysqlcheck [OPTIONS] --databases DB1 [DB2 DB3...]
, checks all tables in one or more specified databases.
- The third command,
./client/mysqlcheck [OPTIONS] --all-databases
, checks all tables in all databases on the MySQL server.
- Options can include various parameters to customize the checks, such as specifying the type of checks to perform or including only certain types of errors.
Using mysqlcheck for MySQL Database Tables
Important Note: Before we proceed with table check, repair, or analysis operations, it’s best advised to create a backup of your table(s), for some circumstances might lead to a potential data loss.
As a result, we’ve split this tutorial into four sections for your convenience:
Part 1: Creating a MySQL Database Back-Up
To create a backup of all your existing MySQL databases, follow these steps:
Step 1: Log in to your MySQL server using Secure Shell (SSH).
Step 2: Stop MySQL server using the appropriate command based on your Linux distribution:
For CentOS and Fedora, type:
service mysqld stop
For Debian and Ubuntu, type:
service mysql stop
Step 3: Input the following command to copy all of your databases to a directory name based on the current time.
cp -rfv /var/lib/mysql /var/lib/mysql$(date +%s)
Step 4: Restart MySQL server with the command appropriate for your Linux distribution:
For CentOS and Fedora, type:
service mysqld start
For Debian and Ubuntu, type:
service mysql start
Part 2: Running mysqlcheck Command
To use the mysqlcheck table command and check tables, follow these steps:
Step 1: As an administrator, change your directory to MySQL Data Directory.
cd /var/lib/mysql
Step 2: Now type in the mysqlcheck command to check for an existing table in a database. In our example, we are checking for a table called “email” under the database “customers”.
$ mysqlcheck -c customers email
customers.email OK
- The command
$ mysqlcheck -c customers email
is used to check the integrity of a specific table in a MySQL database.
- The
-c
option indicates that you want to perform a check on the specified table.
customers
is the name of the database, and email
is the name of the table being checked.
- The command verifies the structure and data integrity of the
email
table within the customers
database.
- If any errors are found, they will be reported in the command line output for further action.
Notice our result. If a table passes the check, mysqlcheck displays OK for the table.
Not only this, mysqlcheck command can be used to CHECK (-c, -m, -C), REPAIR (-r), ANALYZE (-a), or OPTIMIZE (-o) table within your databases. The -c, -r, -a, and -o options work exclusively.
Some of the options (like -e (–extended) or -q (–quick)) can also be used at the same time but not all options are supported by all storage engines.
Running mysqlcheck to Analyze a Table in MySQL Database
As an example, the following command analyzes the “email” table within our “customers” database:
$ mysqlcheck -a customers email
customers.email OK
- The command
$ mysqlcheck -a customers email
is used to analyze a specific table in a MySQL database.
- The
-a
option stands for “analyze,” which helps optimize the table’s performance by gathering statistics.
customers
is the name of the database, while email
is the name of the table being analyzed.
- The output
customers.email OK
indicates that the analysis was successful, and no issues were found in the email
table.
- This command helps ensure that the table is functioning efficiently and can improve query performance.
Running mysqlcheck to Repair Tables in a MySQL Database
The following command repairs all tables in the “customers” and “leads” databases:
$ mysqlcheck -r --databases customers leads
Note: If you see a note stating: The storage engine for the table doesn’t support repair it means that you are doing REPAIR on an InnoDB.
Running mysqlcheck to Optimize Tables in a MySQL Database
The following mysqlcheck database command optimizes all tables in all your MySQL databases.
$ mysqlcheck -o --all-databases
For user reference, this is a table showcasing the most used options for the mysqlcheck database command.
Option | Description |
-c, –check | Check the tables for errors |
-a, –analyze | Analyze the tables |
-o, –optimize | Optimize the tables |
-r, –repair | Perform a repair that can fix almost anything except unique keys that are not unique |
–auto-repair | If a checked table is corrupted, automatically fix it |
-A, –all-databases | Check all tables in all databases. This is the same as –databases with all databases selected |
-B, –databases | Process all tables in the named databases. With this option, all name arguments are regarded as database names, not as table names |
–tables | Overrides the –databases or -B option such that all name arguments following the option are regarded as table names |
-g, –check-upgrade | Check tables for version-dependent changes. It may be used with –auto-repair to correct tables requiring version-dependent updates |
–compress | Compress all information sent between client and server |
–debug-info | Print debugging information, memory, and CPU statistics when the program exits |
-e, -–extended | Check and repair tables |
-q, –quick | The fastest method of checking |
-?, –help | Display a help message and exit |
A more extensive list of other mysqlcheck database command options can be found on this page.
Likewise, these mysqlcheck table/database options can be combined together to perform a joint operation. Have a look at how this can be performed in the following section.
Part 3: Using mysqlcheck in Compound Commands
The mysqlcheck command-line utility can be extended for giving compound commands. For instance, let’s assume a case where there is a need to repair and optimize the “email” table from our previously stated “customer” database.
mysqlcheck table command options like -c (check), -r (repair), -a (analyze), and -o (optimize) options work exclusively and can be used concurrently in the same mysqlcheck command.
Running mysqlcheck to Optimize and Repair Tables in a MySQL Database
The following mysqlcheck command checks, optimizes, and auto-repairs all corrupted tables in the “customer” database. The auto repair option automatically fixes a checked table if found corrupted.
$ mysqlcheck --auto-repair -o customers
And the following mysqlcheck command optimizes and auto-repairs all tables in all your MySQL databases.
$ mysqlcheck --auto-repair -o --all-databases
Part 4: mysqlcheck Command Modifications
The command mysqlcheck can be altered, changing its default behavior from checking tables (–check) to repairing or optimizing tables. This can be done by changing the binary “check” and replacing it with “repair”, or “analyze”, or “optimize”.
These are the commands you get after substitution:
Command | Meaning |
mysqlrepair | The default option is –repair |
mysqlanalyze | The default option is –analyze |
mysqloptimize | The default option is –optimize |
All these commands when invoked would perform the same operation as mysqlcheck -[option] when used.
If you would like to learn about MySQL database export command-line utility, see our blog on MySQL Export Database Command Line: 3 Easy Methods. If you would like to know more about MySQL Analytics tools, visit our other informative blog here- MySQL Analytics Tools: A Quick Guide.
Conclusion
mysqlcheck table/database commands are ideal for automated optimizations of MySQL databases and tables.
The more your database expands and the number of tables increases, the more likely it is that your tables/databases will encounter mistakes from time to time. In those circumstances, mysqlcheck can be a lifesaver.
Managing growing databases and the number of associated processes like business analytics isn’t an easy job. We find numerous business teams trapped and trying to figure out how to examine their data in a timely and efficient manner.
Sign Up for a 14-day free trial and experience the feature-rich Hevo suite first hand. You can also check Hevo’s pricing plans on this page.
Frequently Asked Questions
1. When to use MySQLCheck?
mysqlcheck is a command-line utility used for checking, repairing, optimizing, and analyzing MySQL tables.
2. How to use the MySQLCheck command?
mysqlcheck [options] [database_name [table_name …]]
3. What does MySQL check do?
Ensures table integrity, fixes issues, optimizes performance, and updates index statistics.
Divyansh is a Marketing Research Analyst at Hevo who specializes in data analysis. He is a BITS Pilani Alumnus and has collaborated with thought leaders in the data industry to write articles on diverse data-related topics, such as data integration and infrastructure. The contributions he makes through his content are instrumental in advancing the data industry.