HOWTO · MySQL

Mysqldump Gzip を使用して、MySQL データベースの圧縮ファイルを作成する

このチュートリアルでは、mysqldump gzip と crontab を使用して、MySQL データベースの圧縮バックアップファイルを作成する方法について説明します。

このページの内容

このチュートリアルでは、crontab を使用する場合と使用しない場合の mysqldump gzip を使用して、指定した MySQL データベースの圧縮バックアップを作成する方法について説明します。

mysqldump gzip を使用して、MySQL データベースの圧縮ファイルを作成する

mysqldumpgzip は Linux オペレーティングシステムユーティリティです。mysqldump は、データベースのバックアップを取るために使用されます。

バックアップを圧縮ファイルとして現在のディレクトリに保存できる場合は、次のように gzip を使用します。

コード 1 の例:

-- Syntax: mysqldump -u username -ppassword db_name | gzip > dumpfilename.sql.gz
mysqldump -u root -p test | gzip > dump_test_db.sql.gz

次に、ls コマンドを使用して、圧縮ファイルが作成されたことを確認します。データがさまざまなファイルを通過し、最後のファイルに保存される別の例を見てみましょう。

コード例 2:

-- Syntax: mysqldump -u username -ppassword db_name | gzip > file1.gz > file2.gz
mysqldump -u root -p test | gzip > file1.gz > file2.gz > file3.gz

出力:

$> ls -l
-rw-r--r--  1 root  root     0 14:35 21 May file1.gz
-rw-r--r--  1 root  root     0 14:35 21 May file2.gz
-rw-r--r--  1 root  root   453 14:35 21 May file3.gz

この例では、mysqldump が実行され、生成された出力はパイプ(|)記号を使用してリダイレクトされます。次に、パイプは標準出力を標準入力として gzip コマンドに送信します。

> は、最後のファイル名が見つかるまでデータリダイレクトを継続する出力リダイレクト演算子であり、これはデータが保存されるファイルになります。

上記の出力を参照してください。最後のファイルは file3 で、サイズ 453 のデータが含まれていますが、file1file2 のサイズは 0 です。gzip のさまざまなパラメータとその使用法に関する詳細ガイドは次のとおりです。

crontab を使用して圧縮バックアップを自動化することもできます。次のセクションでそれを学びましょう。

crontab を使用して圧縮バックアップを自動化する

cron ジョブを作成して、データベースの圧縮バックアップを作成する手順を自動化します。この場合、cron ジョブは、割り当てた特定の時間に mysqldump コマンドを実行します。

cron ジョブを介して MySQL データベースの自動圧縮バックアップを設定する手順に従う必要があります。

ステップ 1:ユーザーのホームディレクトリに .my.cnf ファイルを作成します。

sudo nano ~/.my.cnf

以下のように正確なテキストを書いてください。

[client]
user = db_username
password = db_password

db_usernamedb_password を自分の資格情報で更新することを忘れないでください。たとえば、ユーザー名は root で、パスワードは 12345 です。

サンプルコード:

[client]
user = root
password = 12345

完了したら、ファイルを保存して終了します。

手順 2:資格情報ファイルの権限を制限します。このようにして、指定されたユーザーがアクセスできるようになります。

$ chmod 600 ~/.my.cnf

ステップ 3:次に、すべてのバックアップを 1 か所に保存するディレクトリを作成します。

$ mkdir ~/database_backups

ステップ 4:今すぐ crontab ファイルを開きます。

$ crontab -e

開いたばかりの crontab ファイルに次のジョブを書き込みます。毎日午前 3 時にデータベース圧縮バックアップを作成します。

次のジョブでは、ユーザー名は root、データベース名は testdatabase_backups フォルダーにはすべてのバックアップが保存されます。

$ 0 3* * * /usr/bin/mysqldump -u root test | gzip > /home/root/database_backups/test-$(date +\%Y\%m\%d).gz