【MySQL】ダンプとリストア


ここではMySQLで、ダンプとリストアするコマンドを紹介しています。

ダンプとリストアするコマンド

ダンプするコマンド

mysqldumpコマンドを使うことで、データベースやテーブルを保存・バックアップすることが出来ます。

mysqldumpコマンドの基本的な使い方は次の通りです。

mysqldump -u ユーザ名 -p [データベース名] [-h ホスト名] [テーブル名1・・・] > ファイル名

実際に試してみると次のような結果になりました。

C:\wk>mysqldump -u user -p db1 > testdump.sql
Enter password: *****

次のようにテーブル名を指定することで、任意のテーブルのみダンプすることが可能です。

C:\wk>mysqldump -u user -p db1 tab1 > testdump2.sql
Enter password: *****

リストアするコマンド

リストアするときは、ダンプしたファイル名を使って、次のようにコマンドを入力します。

mysql -u ユーザ名 -p データベース名 < ファイル名

実際に試してみると次のような結果になりました。

C:\wk>mysql -u user -p db1 < testdump.sql
Enter password: *****

ダンプファイルの中身について

ダンプファイルとは、mysqldumpコマンドを使って、データベースやテーブルを保存・バックアップしたファイルのことです。

例えば次のようにdb1データベースのtab1テーブルをダンプします。

C:\wk>mysqldump -u user -p db1 tab1> tab1dump.sql
Enter password: *****

ダンプファイルには、次のようにテーブルの定義SQLが保存されていました。

--
-- Table structure for table `tab1`
--

DROP TABLE IF EXISTS `tab1`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `tab1` (
  `emp_id` varchar(10) DEFAULT NULL,
  `emp_name` varchar(100) DEFAULT NULL,
  `dept` varchar(10) DEFAULT NULL,
  `age` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

また、次のようにテーブルに登録されていたデータを復元させるためのSQLが保存されていました。

--
-- Dumping data for table `tab1`
--

LOCK TABLES `tab1` WRITE;
/*!40000 ALTER TABLE `tab1` DISABLE KEYS */;
INSERT INTO `tab1` VALUES ('00001','Suzuki','HR',28),('00002','Tanaka','SALES',25),('00003','Kizaki','SALES',35),('00004','Tanaka','DEV',45),('00005','Kizaki','DEV',55),('00006','Nakata','DEV',35);
/*!40000 ALTER TABLE `tab1` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;