sql >> データベース >  >> RDS >> Mysql

Crontab/Cronを使用してMySQLデータベースを自動的にチェックおよび最適化する

    MySQLは、非常に人気のある無料で強力なデータベースシステムです。ただし、優れたデータベースであっても、データベースに格納されているデータの継続的な更新や削除および挿入操作により、テーブルがオーバーヘッドで断片化される場合があります。また、データベースが破損する可能性もあります。したがって、データベースのヘルスチェックを実行し、MySQLサーバーを定期的に最適化することは重要なタスクです。

    データベース管理者がサーバーにログインするか、phpMyAdminを起動して、データベースを1つずつ、またはテーブルごとに手動で最適化する必要がある場合は、少し面倒です。 DB管理者は、単に仕事をするのを忘れたり、最適化の頻度をより少ない時間に設定したりすることがあります。 MySQLデータベースのすべてのテーブルは、ビジー状態のサーバーで少なくとも1日1回チェックすることをお勧めします。

    Linux / Unix / CentOS / FreeBSDのcrontab関数を使用して、MySQLプロセスの最適化を自動化することができます。 MySQLデータベースをチェックおよび最適化するためのcronジョブは、MySQLのインストールに付属するmysqlcheckクライアントユーティリティを使用して作成できます。 mysqlcheckクライアントは、MySQLデータベースのテーブルをチェック、修復、最適化、および分析できます。

    新しいcronジョブを作成するには、rootまたは他のユーザーとしてサーバーにログインし、crontabファイルを編集します(ほとんどのオペレーティングシステムでは、 crontab -e crontabファイルをデフォルトのテキストエディタで開きます)、次のテキスト行を追加します。 cPanelを使用しているユーザーの場合は、「cronジョブ」をクリックして、毎日、1時間ごと、およびその他の間隔でcrontabを設定できます。経験豊富なウェブマスターは、rc.hourly、rc.daily、またはその他のcronディレクトリにcrontabファイルを設定することもできます。すべてのデータベースへのアクセス権を持たないMySQLまたは通常のユーザーとしてログインする場合、以下の例のようにrootのユーザーIDとパスワードを指定しない限り、すべてのデータベースを最適化することはできません。

    0 1 * * * mysqlcheck -Aao --auto-repair -u root -p[password] > /dev/null

    上記のステートメントの構文は「mysqlcheck[options]–all-databases」に似ています。ここで、–all-databasesパラメーターはデフォルトのアクションであり、データベースが指定されていないため、省略できます。このコマンドはmysqlcheckクライアントを実行して、毎日午前1時にすべてのデータベースを自動的に分析および最適化します。 -pとrootのパスワードの間にスペースがないことに注意してください。実行時間を好みに合わせて変更したり、mysqlcheckコマンドのオプションを変更したりすることもできます。特定のデータベースまたはデータベースなしの特定のテーブルをチェックして最適化するだけの場合は、次の構文を使用します。

    mysqlcheck [options] db_name [tables]
    mysqlcheck [options] --databases DB1 [DB2 DB3...]

    上記のコマンドから–auto-repair switchを削除することをお勧めします。これは、テーブルの修復操作により、状況によってはデータが失われる可能性があるためです。原因による操作には、ファイルシステムエラーが含まれますが、これに限定されません。 MySQLデータベースの文字セットと照合を変更した場合は、–default-character-setオプションも使用する必要があります。利用可能なすべてのスイッチとオプションの詳細については、こちらをご覧ください。


    1. PL / SQLで関数を作成する方法は?

    2. SQLServer2017のトリガーイベントタイプの階層リスト

    3. 開発者向けの最高のデータベースソフトウェア(2022年版)

    4. SQLで一意の制約を削除するにはどうすればよいですか?