LinuxのコマンドラインからMySQLデータベースをバックアップする方法 - TechRepublic

LinuxのコマンドラインからMySQLデータベースをバックアップする方法 - TechRepublic

データセンターではLAMPスタックでUbuntu Serverが稼働しており、そのサーバー上でバックアップが必要なデータベース(または複数のデータベース)が稼働しています。バックアップを実現するためにインストールできるソフトウェアはいくつかありますが、問題発生の可能性を回避するためにサーバープラットフォームを必要最低限​​に抑えたい場合は、組み込みツールを使ってバックアップを実行するのが適切でしょう。MySQLの開発者がこの点に配慮してくれたのは素晴らしいことです。

サードパーティ製ソフトウェアをインストールせずにMySQLデータベースをバックアップする手順を詳しく説明します。(注:この手順は、MySQLがインストールされているLinuxディストリビューションであればどれでも同じです。)このスキルを身に付ければ、bashとcronを使って独自の自動バックアップスクリプトを作成できるようになります。

参照: データ バックアップ ポリシー (Tech Pro Research)

必要なもの

MySQLが起動し実行されている場合、必要なソフトウェアはすべて揃っています。このタスクを実行するには、対象のデータベースにアクセスする権限を持つMySQLユーザーのパスワードが必要です。

mysqldumpコマンド

最も重い処理を実行するコマンドはmysqldumpです。コマンドの構造は次のようになります。

mysqldump [options] [database_name] [backup_name]

手順は非常にシンプルです。例えば、productsというデータベースがあり、それを/mnt/backups/にマウントされた外付けドライブにバックアップしたいとします。ダンプ(バックアップ)を実行するための基本的なコマンドは以下のとおりです。

sudo mysqldump -p products > /mnt/backups/products.sql

いくつか問題があります。まず第一に、-pオプションを使用する必要があります。これは、mysqldump にMySQL ユーザーに関連付けられたパスワードを入力するように指示するものです。もしこれがうまくいかない場合は(設定によって異なります)、 mysqldump にどのユーザーがその権限を持っているかを指定するオプションを追加する必要があるかもしれません。例: USERは、データベースを操作する権限を持つ実際のユーザー(root など)です。

mysqldump -u USER -p products > /mnt/backups/products.sql

ユーザーがそのディレクトリへの書き込み権限を持っていない場合、別の問題が発生する可能性があります。その場合は、「Permission denied」エラーが表示されます。バックアップディレクトリの権限を開放するリスクを避けたい場合は、まずsudo suコマンドを実行してからmysqldumpコマンドを実行してください。注意:タスクが完了したら、exitコマンドでルートbashプロンプトを終了してください。

すべてのデータベースをバックアップする

すべてのデータベースをバックアップしたい場合は、次のように–all-databasesオプションを使用して実行できます。

mysqldump -u USER -p --all-databases > /mnt/backups/all_databases.sql

バックアップを圧縮する

データベースがかなり大きく、毎日手動でバックアップを実行する予定がある場合は、バックアップの圧縮を検討してください。これはMySQLの開発者が導入した機能の一つです。

上記と同じ例を、圧縮のみで実行してみましょう。これを実現するには、次のように-Cオプションを使用します( USER はデータベースを操作する権限を持つユーザー名です)。

mysqldump -u USER -p -C products > /mnt/backups/products.sql.tgz

上記のコマンドは、データベース バックアップの圧縮バージョンを定義されたファイル (この場合は products.sql.tgz) にダンプします。

続けてください

作業を続ける準備が整いました。今後の記事では、データベースのバックアッププロセスを自動化する方法と、バックアップからデータベースを復元する方法を説明します。手動でバックアップを実行したい場合は、これで必要な手順がすべて揃いました。

Tagged: