First Creation 2005/02/22
Last Update 2007/04/30
Bloody Mary > Technical Notes > MySQL バックアップ編 1

MySQL バックアップ編 1

ユーザレベルでもデータベースのバックアップは行っていた方がよいだろう。ということでバックアップ編。

データベースのエクスポート

まず、データの確認をしよう。

mysql> SELECT * FROM cocktail;
+----+-------------+-----------+---------------------------------+
| id | name        | base      | source                          |
+----+-------------+-----------+---------------------------------+
|  1 | Bloody Mary | Vodka     | Vodka 45ml, some Tomato Juice   |
|  2 | Shandy Gaff | Beer      | Beer Beer 50%, Ginger ale 50%   |
|  3 | Mimosa      | Champagne | Champagne 50%, Orange Juice 50% |
|  4 | Gin Tonic   | Gin       | Gin 45ml, some Tonic Water      |
+----+-------------+-----------+---------------------------------+
4 rows in set (0.01 sec)

見ての通り、 4 つのデータが入っている。コレを、自分のホームディレクトリの bloody.sql にバックアップしてみる。エクスポートを行うには、対話式 MySQL から Quit する必要がある。

mysql> quit
Bye

次に、コマンドを打つ。mysqldump のパスは環境によって異なるので、適宜読み替えていただきたい。

% cd
% /usr/local/mysql/bin/mysqldump -u mary -pパスワード bloody > bloody.sql

-p の後に、スペースを入れないこと。

% less bloody.sql
-- MySQL dump 10.9
--
-- Host: localhost    Database: bloody
-- ------------------------------------------------------
-- Server version       4.1.21

/*!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 */;
/*!40101 SET NAMES utf8 */;
/*!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 `cocktail`
--

DROP TABLE IF EXISTS `cocktail`;
CREATE TABLE `cocktail` (
  `id` int(5) unsigned NOT NULL auto_increment,
  `name` varchar(20) NOT NULL default '',
  `base` varchar(20) default NULL,
  `source` varchar(100) NOT NULL default '',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;

--
-- Dumping data for table `cocktail`
--

LOCK TABLES `cocktail` WRITE;
/*!40000 ALTER TABLE `cocktail` DISABLE KEYS */;
INSERT INTO `cocktail` VALUES (1,'Bloody Mary','Vodka','Vodka 45ml, some Tomato Juice'),(2,'Shandy Gaff','Beer','Beer Be
er 50%, Ginger ale 50%'),(3,'Mimosa','Champagne','Champagne 50%, Orange Juice 50%'),(4,'Gin Tonic','Gin','Gin 45ml, some
 Tonic Water');
/*!40000 ALTER TABLE `cocktail` ENABLE KEYS */;
UNLOCK TABLES;

/*!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 */;

こんなカンジで、 bloody データベースのバックアップが取れる。

データベースのインポート

bloody.sql を利用して、データベースを復元しよう。下準備として、 bloody の DB を削除する。

% /usr/local/mysql/bin/mysql -u mary -p
Enter password:
mysql> SELECT * FROM cocktail;
+----+-------------+-----------+---------------------------------+
| id | name        | base      | source                          |
+----+-------------+-----------+---------------------------------+
|  1 | Bloody Mary | Vodka     | Vodka 45ml, some Tomato Juice   |
|  2 | Shandy Gaff | Beer      | Beer Beer 50%, Ginger ale 50%   |
|  3 | Mimosa      | Champagne | Champagne 50%, Orange Juice 50% |
|  4 | Gin Tonic   | Gin       | Gin 45ml, some Tonic Water      |
+----+-------------+-----------+---------------------------------+
4 rows in set (0.01 sec)

mysql> DROP DATABASE bloody;
Query OK, 1 row affected (0.51 sec)

mysql> SHOW DATABASES;
+----------+
| Database |
+----------+
| test     |
+----------+
1 row in set (0.00 sec)

mysql> quit;
Bye

データベースの削除ができた。リストアする前に、空のデータベースを作ってあげなければならない。

% /usr/local/mysql/bin/mysql -u mary -p
Enter password:

空のデータベースを作成したら、quit 。

mysql> CREATE DATABASE bloody;
Query OK, 1 row affected (0.02 sec)

mysql> quit;
Bye

さて、いよいよ復活の呪文を唱える。

% /usr/local/mysql/bin/mysql -u mary -pパスワード bloody < bloody.sql

%/usr/local/mysql/bin/mysql -u mary -p
Enter password:
mysql> USE bloody;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

mysql> show tables;
+------------------+
| Tables_in_bloody |
+------------------+
| cocktail         |
+------------------+
1 row in set (0.00 sec)

mysql> SELECT * FROM cocktail;
+----+-------------+-----------+---------------------------------+
| id | name        | base      | source                          |
+----+-------------+-----------+---------------------------------+
|  1 | Bloody Mary | Vodka     | Vodka 45ml, some Tomato Juice   |
|  2 | Shandy Gaff | Beer      | Beer Beer 50%, Ginger ale 50%   |
|  3 | Mimosa      | Champagne | Champagne 50%, Orange Juice 50% |
|  4 | Gin Tonic   | Gin       | Gin 45ml, some Tonic Water      |
+----+-------------+-----------+---------------------------------+
4 rows in set (0.01 sec)

このように、ちゃんと復活した。

戻る 上へ 通行止め