ウェブサイト検索

MySQLデータベースをバックアップ(ダンプ)して復元する方法


この記事では、mysqldumpおよびmysqlコマンドを使用してMySQLデータベースをダンプし、復元する正しい方法を示します。

MySQLまたはMariaDBデータベースを使用している場合、バックアップとデータの復元方法を理解しておく必要があります。また、システム障害がアプリケーションやデータを損なった場合にデータを復元できるように、データベースの定期的なバックアップを保持する必要があります。

MySQLとMariaDBには、データベースを迅速かつ簡単にダンプおよび復元するために使用できるコマンドラインツールが含まれています。

例えば、mysqldumpツールはデータベースの内容をテキストファイルにエクスポートするために使用されます。同時に、mysqlクライアントアプリはテキストファイルからMySQL/MariaDBデータベースへデータをインポートするために使用できます。

MySQLデータベースをバックアップ(ダンプ)する方法

mysqldumpコマンドラインユーティリティは、データベースをSQLテキストファイルにエクスポートします。言い換えれば、MySQLデータベースのダンプを取得するために使用されます。

mysqldump コマンドの構文は以下の通りです:

mysqldump -u [username] -p [database_name] > [filename.sql]

どこ :

  • ユーザー名 はあなたのMySQL/MariaDBのユーザー名です。
  • -p このユーザーのパスワードを求めるプロンプト。
  • database_name はバックアップしたいデータベースの名前です。
  • filename.sql はバックアップを含むSQLダンプファイルへの完全なパスです。

バックアップ時にデータベースの手続き、関数、ビュー、およびイベントもダンプされることが重要であることを指摘する必要があります。

単一のMySQLデータベースをバックアップする方法

私たちはすでにmy_wordpressという名前のデータベースを作成したと仮定しましょう。もちろん、以下のコマンドでは、エクスポートしたいデータベースの名前に置き換えてください。

その後、文法に従って、mysqldump は現在の場所にバックアップファイルを作成します。

mysqldump -u root -p my_wordpress > my_wordpress_backup.sql

コマンドが実行されたら、MySQLのルートパスワードを入力してください。

これにより、my_wordpress_backup.sqlという名前のMySQLダンプファイルが作成され、テーブルを作成し、既存のデータベースにデータを復元するためのすべてのSQLステートメントが含まれます。エクスポートプロセス中にエラーが発生した場合、mysqldumpはそれらを画面に表示します。

このコマンドは視覚的な出力を生成しませんが、headコマンドを使ってmy_wordpress_backup.sqlの内容を確認し、それが正当なMySQLダンプファイルであるかどうかをチェックできます。

head -n 5 my_wordpress_backup.sql
-- MariaDB dump 10.19  Distrib 10.5.9-MariaDB, for Linux (x86_64)
-- Host: localhost    Database: my_wordpress
 
-- Server version    10.3.27-MariaDB-0+deb10u1

複数のMySQLデータベースをバックアップする方法

複数のMySQLデータベースを1つのコマンドでバックアップするには、バックアップしたいデータベースのリストの後に--databasesオプションを使用する必要があります。さらに、結果ファイルをお好きな場所に置くこともできます。

以下のコマンドを実行して、my_wordpressとftpusersという2つのデータベースのMySQLダンプファイルmy_backup.sqlを/home/backupsディレクトリに作成してください。

mysqldump -u root -p --databases my_wordpress ftpusers > /home/backups/my_backup.sql 

すべてのMySQLデータベースを一度にバックアップする方法

--all-databasesオプションを使用して、すべてのMySQLデータベースをバックアップします:

mysqldump -u root -p --all-databases > all_db_backup.sql

圧縮されたMySQLデータベースバックアップの作成方法

データベースのサイズが巨大な場合、出力を圧縮するのは良いアイデアです。そのためには、出力をgzipコマンドにパイプし、以下に示すようにファイルにリダイレクトします:

mysqldump -u root -p my_wordpress | gzip > my_wordpress_backup.sql.gz

MySQLダンプファイルからMySQLデータベースを復元する

mysqldumpで作成されたバックアップを復元するには、mysqlコマンドを使用する必要があります。

mysql -u [username] -p [database_name] < [filename.sql]

どこ

  • ユーザー名 はあなたのMySQL/MariaDBのユーザー名です。
  • -p このユーザーのパスワードを入力してください。
  • database_name は、復元したいデータベースの名前です。
  • filename.sql はバックアップを含むSQLダンプファイルへのフルパスです。

単一のMySQLデータベースを復元する

特定のデータベースのMySQLダンプファイルからすべてのテーブルを復元できます。

復元は以下のコマンドで行われます。再度、パスワードの入力を求められるユーザーを指定し、my_wordpress_backup.sqlファイルをデータベースmy_wordpressに渡しています。

mysql -u root -p my_wordpress < my_wordpress_backup.sql

これが完了すると、データベースは実行中のMySQLインスタンスで利用可能になります。インポートしたMySQLダンプファイルはまだ存在するので、この時点で安全に保存するか、もはや必要でない場合は削除しても構いません。

すべてのMySQLデータベースを復元する

MySQLダンプファイルから別のMySQLサーバーに任意のMySQLサーバーのすべてのデータベースを復元できます。

mysql -u root -p < all_db_backup.sql

結論

これで、上記の手順に従ってデータベースファイルの定期的なバックアップを取得し、必要に応じてデータを復元できるようになります。

このチュートリアルは、新しいサーバーに移行したいときにも適用されます。古いサーバーのデータベースをバックアップし、MySQLダンプファイルを新しいサーバーにアップロードします。

次に、新しいサーバーに宛先データベースを作成し、その後、新しいデータベースでアップロードされたMySQLダンプファイルを実行します。また、古いMySQLサーバーから新しいサーバーにユーザーと権限も再作成する必要があります。

より詳細な情報については、公式ドキュメントへのリンクをご覧ください。ご質問やフィードバックがあれば、コメントを残してください。

関連記事: