スポンサードリンク

MySQL データベースをバックアップ・復元する方法。

データベースを使っていると何らかのトラブルが原因で、これまでに蓄えたデータを失う可能性もあります。数十件くらいなら再度入力できますが、数千、数万件のレコード数になると大変な作業になります。しかも元のデータがない場合はもう不可能です。

そんな時のためにMySQLにはデータベースをバックアップ・復元(リストア)する機能があります。

コンピュータのハードディスクは消耗品ですので、いつかは壊れることを前提に考えて、定期的にバックアップしておけば、いざという時に復元できるので安心です。

データベースをバックアップ・復元するには、その権限を持ったユーザーで行ないます。「root」でも「pgtop」でもOKです。

今回はMySQLの接続、終了を繰り返します。手順がこれまでと違いますので気を付けてください。接続するユーザーは「pgtop」とします。


【1】MySQLを開始します。

1.コマンドプロンプトを起動します。
2.「net start mysql」と入力し、「Enterキー」を押します。

mysql-245.gif

*まだ接続はしません。


【2】データベースのバックアップを行ないます。

1.以下のように入力し、「Enterキー」を押します。
mysqldump -u pgtop -p SampleDB040 > "C:\mysql\data\sampledb040\backup.sql"

2.パスワードを求められるので「12345」入力し、「Enterキー」を押します。

mysql-246.gif

バックアップはこれだけで完了です。簡単ですね。


【3】指定した場所にバックアップされているか確認してみましょう。
*「\」はWindowsではエンマークのことです。

C:\mysql\data\sampledb040
mysql-243.gif

バックアップファイルをTeraPadで開いた様子
mysql-244.gif

バックアップファイルの中身は複数のSQL文だということがわかります。


【4】次はMySQLに接続します。

1.「mysql -u pgtop -p -b」と入力し、「Enterキー」を押します。
2.パスワードを求められるので「12345」入力し、「Enterキー」を押します。

mysql-239.gif

*「-b」オプションを付けて起動するとビープ音が出なくなります。


【5】以下のSQL文を入力し、使用するデータベースを選択します。

USE SampleDB040;
mysql-116.gif


【6】以下のSQL文を入力し、データベース内にあるテーブルを確認します。

SHOW TABLES;
mysql-233.gif

2つのテーブルがありますが、これから削除します。


【7】以下のSQL文を入力して実行し、データベース内にあるテーブルを削除します。

DROP TABLE T01Prefecture;
DROP TABLE T00Area;

mysql-234.gif


【8】もう一度データベース内にあるテーブルを確認すると、データベースは空です。

SHOW TABLES;
mysql-235.gif


【9】いったんMySQLを終了します。

mysql-236.gif


ここからは復元(リストア)を行なう手順です。

【10】指定する場所「C:\mysql\data\sampledb040」にバックアップするファイル「backup.sql」があることを確認します。

mysql-237.gif

*「\」はWindowsではエンマークのことです。


【11】データベースの復元を行ないます。

1.以下のように入力し、「Enterキー」を押します。
mysql -u pgtop -p SampleDB040 < "C:\mysql\data\sampledb040\backup.sql"

2.パスワードを求められるので「12345」入力し、「Enterキー」を押します。

mysql-238.gif

これでデータベースの復元が完了しました。


【12】確認のためMySQLに接続します。

1.「mysql -u pgtop -p -b」と入力し、「Enterキー」を押します。
2.パスワードを求められるので「12345」入力し、「Enterキー」を押します。

mysql-239.gif


【13】以下のSQL文を入力し、使用するデータベースを選択します。

USE SampleDB040;
mysql-116.gif


【14】以下のSQL文を入力し、データベース内にあるテーブルを確認します。

SHOW TABLES;
mysql-240.gif


テーブルが元に戻っています。テーブルの中身はどうでしょうか?

【15】以下のSQL文を入力し、テーブルのデータを確認します。

SELECT * FROM T01Prefecture;
mysql-242.gif

SELECT * FROM T00Area;
mysql-241.gif

テーブルの中身も元に戻っていますね。


【16】以下の図を参考にMySQLを終了・停止します。

1.「exit」と入力し、「Enterキー」を押します。
2.「net stop mysql」と入力し、「Enterキー」を押します。

mysql-87.gif


【17】コマンドプロンプトは閉じてください。


【解説】

(1)バックアップについて
mysqldump -u pgtop -p SampleDB040 > "C:\mysql\data\sampledb040\backup.sql"

ファイルの拡張子は「.sql」でなくてもかまいません。

パスを省いてファイル名だけ指定すると、Cドライブの直下にバックアップされます。
例 mysqldump -u pgtop -p SampleDB040 > "backup.sql"


(2)復元について
mysql -u pgtop -p SampleDB040 < "C:\mysql\data\sampledb040\backup.sql"

「backup.sql」の中身はSQL文です。つまりこのコマンドはSQL文をバッチ処理しているだけですので、復元以外にも使えます。

*復元するにはデータベースは作成済みでなければならないため、テーブルは削除しましたがデータベースは削除しませんでした。


(3)「backup.sql」の中身
前半はほとんどコメントなのでSQL文の部分だけ説明します。

・既にテーブルが存在する場合は削除します。
DROP TABLE IF EXISTS `t00area`;
*「`」は半角で「SHIFTキー+@」です。書かなくても大丈夫です。

・テーブルを作成しています。
CREATE TABLE `t00area` (
`AREA_CD` int(3) NOT NULL default '0',
`AREA_NAME` varchar(10) default NULL,
PRIMARY KEY (`AREA_CD`)
) ENGINE=InnoDB DEFAULT CHARSET=sjis;

*「ENGINE=InnoDB」はデータベースのタイプ、「DEFAULT CHARSET=sjis;」は文字コードですが、書かなくてもデフォルトで設定されます。


・テーブルをロックしてデータを追加します。
LOCK TABLES `t00area` WRITE;
/*!40000 ALTER TABLE `t00area` DISABLE KEYS */;
INSERT INTO `t00area` VALUES (1,'北海道・東北'),(2,'関東'),(3,'信越・北陸'),(4,'東海'),(5,'近畿'),(6,'中国'),(7,'四国'),(8,'九州・沖縄');
/*!40000 ALTER TABLE `t00area` ENABLE KEYS */;
UNLOCK TABLES;


T01Prefectureについても上記と同様です。


スポンサードリンク






MySQL初心者入門講座TOPへ