定期的なバックアップの実行は、あらゆる種類のデータにとって不可欠な手順です。このチュートリアルは、MySQL データベースのバックアップと復元に最もよく使用されるツールのいくつかについて学習するのに役立ちます。
まず、SSH 接続を介してサーバーに接続する必要があります。まだ行っていない場合は、ガイドに従って SSH で安全に接続することをお勧めします。ローカル サーバーの場合は、次のポイントに進み、サーバーのターミナルを開くことができます。
mysqldump を使用
Mysqldump は、すべての MySQL インストールで常に使用できるアプリケーションであり、データの完全なダンプをテキスト形式で実行できます。
コマンド構文は次のとおりです:
$ mysqldump -u [username] -p [database] > backup.sql
このコマンドを実行すると、backup.sql ファイルに示されている完全なデータベース バックアップが見つかります。
バックアップを復元するには、次のように MySQL クライアントを使用します:
$ mysql -u [username] -p [database] < backup.sql
データベースのサイズによっては、これらのバックアップ ファイルがかなりのサイズに達し、転送やコピーが困難になる場合があります。データベース バックアップのサイズを最適化するには、gzip を使用してファイルを圧縮します。
$ mysqldump -u [username] -p [database] | gzip > backup.sql.gz
必要に応じて、以下を使用してファイル名に現在の日付を自動的に追加することもできます:
$ mysqldump -u [username] -p [database] | gzip > backup_$(date +%F.%H%M%S).sql.gz
復元するには、代わりに次の構文を使用してください:
$ mysql -u [username] -p [database] < backup.sql
mysqldump に関する注意:
データベースのダンプおよびバックアップ中、mysqldump はテーブル間のデータの一貫性を保証しないことに注意してください。バックアップ中に書き込み操作が発生した場合、取得されたバックアップは部分的または破損している可能性があります。
この問題を防ぐために、アプリケーションによって提供される特定のオプションがあります:
--lock-all-tables:すべてのデータベースのすべてのテーブルに対するすべての書き込み操作をブロックします
- lock-tables:このオプションは、代わりに読み取り専用モードでバックアップされるデータベース テーブルを設定します。
選択するオプションは、複数のデータベースに関連するデータがあるかどうかによって異なります。ほとんどの場合、 --lock-tables は個々のデータベースのデータ整合性を保証する理想的なソリューションです。
crontab による mysqldump の自動化
バックアップを定期的に行うには、プログラミングによってシステムの crontab にバックアップを追加するだけです (たとえば、1 日 1 回)。まず、crontab を開始して開きます:
$ sudo crontab -e
ファイルの最後に次の行を追加します:
00 23 * * * mysqldump -u [username] -p [database] | gzip > /home/utente/backup.sql.gz
ファイルを保存すると、システムはユーザー ディレクトリ内で 1 日 1 回 (午後 11 時) にバックアップを作成し、以前のバックアップを毎日上書きします。
automysqlbackup を使用
手動でバックアップをエクスポートして mysqldump を使用することに加えて、業界で最も人気のあるユーティリティの 1 つである automysqlbackup を利用できます。
最初に apt-get でパッケージをインストールする必要があります:
$ sudo apt-get install automysqlbackup
インストールの完了後、automysqlbackup は /var/lib/automysqlbackup ディレクトリで毎日のバックアップを実行します。以下を起動して、手動でバックアップを開始することもできます:
$ sudo automysqlbackup
完了したら、ディレクトリの内容を一覧表示するだけで現在のバックアップを確認できます:
$ ls -R /var/lib/automysqlbackup/
/var/lib/automysqlbackup/:
daily monthly weekly
/var/lib/automysqlbackup/daily:
exampledb information_schema performance_schema test wordpress
/var/lib/automysqlbackup/daily/exampledb:
exampledb_2019-08-03_06h48m.Sunday.sql.gz
...
すべてが正常に機能していれば、上記のように拡張子が .sql.gz の一連のファイルが表示されます。
作成された最新のバックアップを定期的にチェックし、それらがすべて正常に機能することを確認することをお勧めします。
automysqlbackup のカスタマイズ
automysqlbackup のバックアップ頻度またはデータベースへのアクセスに必要なアクセス データを変更するには、/etc/default/automysqlbackup の構成ファイルを変更します。
設定の一部は次のとおりです:
USERNAME:データベースへのログインに使用するユーザー名
PASSWORD:データベースのパスワード
DBHOST:IP アドレスまたはホスト名
DBNAMES:バックアップするデータベースの名前
BACKUPDIR:バックアップを保存するディレクトリ
必要な設定を変更したら、ファイルを保存して変更を適用します。