MySQLで単一テーブルをバックアップする方法【mysqldumpの使い方を解説】
MySQLデータベースから特定のテーブルだけをバックアップしたい場合、標準で付属しているダンプユーティリティ「mysqldump」を使うのが最も確実で一般的な方法です。
なお、古いMySQL(バージョン5.0およびそれ以前)ではBACKUP TABLEステートメントによるテーブルバックアップも可能でしたが、この構文はすでに廃止されており、現行バージョンでは利用できません。本記事では、mysqldumpを使って単一テーブルのバックアップファイル(.sql形式)を作成する具体的な手順を解説します。
ステップ1:コマンドプロンプトを起動する
まず、ショートカットキーでコマンドプロンプト(cmd)を開きます。「Windowsキー + R」を押して「ファイル名を指定して実行」を表示しましょう。
windowskey+R;

実行すると、コマンドプロンプトの画面が開きます。

ステップ2:MySQLのbinフォルダへ移動する
mysqldumpはMySQLのインストール先にある「bin」ディレクトリに格納されています。今回の環境では、以下の場所にあります。
C:\Program Files\MySQL\MySQL Server 8.0\bin
cdコマンドで上記のパスに移動し、「bin」フォルダに入りましょう。

ステップ3:mysqldumpコマンドでバックアップを実行する
「bin」フォルダに移動したら、次のコマンドを実行します。
C:\Program Files\MySQL\MySQL Server 8.0\bin>mysqldump -u Manish -p business student > E:\student.sql
Enter password: ***********
各オプションの意味は以下の通りです。
-u Manish:接続するMySQLユーザー名を指定します。-p:実行後にパスワードの入力を求められます。business:バックアップ対象のデータベース名です。student:バックアップするテーブル名です。テーブル名を省略するとデータベース全体がダンプされます。> E:\student.sql:出力先となるバックアップファイルの保存場所を指定します。
実行結果:生成されたダンプファイルの中身
コマンドが正常に完了すると、指定した場所にstudentテーブルのバックアップファイルが出力されます。ファイルには次のようなSQL文が含まれています。
-- MySQL dump 10.13 Distrib 8.0.12, for Win64 (x86_64)
--
-- Host: localhost Database: business
-- ------------------------------------------------------
-- Server version 8.0.12
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
SET NAMES utf8mb4 ;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `student`
--
DROP TABLE IF EXISTS `student`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
SET character_set_client = utf8mb4 ;
CREATE TABLE `student` (
`id` int(11) DEFAULT NULL,
`Name` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
KEY `NameStuIndex` (`Name`),
KEY `idIndex` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `student`
--
LOCK TABLES `student` WRITE;
/*!40000 ALTER TABLE `student` DISABLE KEYS */;
INSERT into `student` VALUES (1,'John'),(2,'Bob');
/*!40000 ALTER TABLE `student` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2018-10-03 10:30:58
ダンプファイルには、テーブルを再作成するためのCREATE TABLE文や、データを復元するためのINSERT文がすべて含まれています。そのため、テーブル構造とデータの両方を完全な状態で復元することが可能です。
補足:バックアップしたテーブルを復元する方法
作成したバックアップファイルからテーブルを戻したい場合は、mysqlクライアントにリダイレクトでファイルを読み込ませます。
mysql -u Manish -p business < E:\student.sql
これで、Eドライブに保存しておいたstudentテーブルのバックアップを、いつでも元のデータベースへ復元できます。大切なデータを守るために、重要なテーブルについてはmysqldumpを使った定期バックアップを習慣づけておくことをおすすめします。
-
MySQLデータベースのバックアップ方法を徹底解説!phpMyAdmin・mysqldump・Cronジョブ・WordPressプラグインの使い方
MySQLはリレーショナルデータベース管理システム(RDBMS)の一つです。データベースへの命令を処理し、複数のデータベースを同時に管理することができます。 例えば、新しいデータベースを作成したい場合や、既存のデータベースにデータを追加したい場合は、MySQLサーバーに対してメッセージを送り、追加したいデータとその保存先を指定します。 ビジネスの規模が小さくても大きくても、データは欠かせない重要な資産です。貴重な情報を破損・盗難・災害などの被害から守るためには、MySQLデータベースのバックアップが不可欠です。この記事では、その具体的な方法をいくつかご紹介します。 phpMyAdminを使っ
-
MySQL Workbenchを使ったMySQLデータベースのバックアップ方法を徹底解説
MySQL Workbenchでデータベースをバックアップする手順MySQLデータベースのバックアップを作成するには、まずMySQL Workbenchをインストールする必要があります。以下の公式リンクから、お使いの環境に合ったインストーラーをダウンロードしてインストールしてください。https://dev.mysql.com/downloads/windows/installer/8.0.html1. MySQL Workbenchを起動し「Data Export」を選択インストールが正常に完了したら、MySQL Workbenchを開きます。画面上部のメニューから「Data Export(