First Creation | 2005/02/22 |
---|---|
Last Update | 2007/04/30 |
ユーザレベルでもデータベースのバックアップは行っていた方がよいだろう。ということでバックアップ編。
まず、データの確認をしよう。
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)
このように、ちゃんと復活した。