joppot

コピペで絶対動く。説明を妥協しない

unix

mysqldumpを使ったmysqlのデータの復元(リストア)

投稿日:2014年2月20日 更新日:


ff

概要

みなさんこんにはcandleです。今回はmysqlのリストアを試してみましょう。

前回くらいに、様々なバックアップを試しましたが、それを問題なくリストア(復元)できなくては、意味ないのでそういった操作にもなれておきましょう。

前提

  1. mysqlサーバが使える
  2. unixコマンドが最低限使える

サンプルデータベースを用意する

 
前回の記事を読んでおり、サンプルデータベースが用意されていればこの項目は飛ばしてかまいません。

下のSQL文をコピーアンドペーストして実行すれば、btestデータベースが作成されます。

CREATE DATABASE IF NOT EXISTS `btest` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE `btest`;


CREATE TABLE `board` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(10) NOT NULL,
  `title` varchar(100) NOT NULL,
  `created` datetime NOT NULL,
  `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;

INSERT INTO `board` (`id`, `user_id`, `title`, `created`, `modified`) VALUES
(1, 2, 'SSL通信の必要性について', '2014-02-19 16:15:29', '2014-02-18 09:42:27'),
(2, 2, 'javascriptの圧縮', '2014-02-06 11:03:50', '2014-02-18 09:43:01'),
(3, 1, 'cssの書き方', '2014-02-12 19:07:13', '2014-02-18 09:44:01');


CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) NOT NULL,
  `age` int(10) NOT NULL,
  `created` datetime NOT NULL,
  `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;

INSERT INTO `users` (`id`, `name`, `age`, `created`, `modified`) VALUES
(1, 'alice', 10, '2014-02-18 05:29:13', '2014-02-18 09:40:22'),
(2, 'bob', 12, '2014-02-17 21:11:44', '2014-02-18 09:40:43'),
(3, 'tom', 15, '2014-02-17 04:37:07', '2014-02-18 09:41:18');

バックアップから任意のデータベースを復元する

例えば、このmysqldumpコマンドでbtestデータベースがバックアップされたとしましょう。

mysqldump -u root -p btest > alldata.sql

任意のデータベースをリストアする場合はdumpファイルの読み込みと一緒に、-Dオプションをつけます.

mysql -u root -p -D btest < alldata.sql

バックアップから任意のテーブルを復元する

例えば、このmysqldumpコマンドでbtestデータベースのusersテーブルがバックアップされたとしましょう。

mysqldump -u root -p btest users > usersdata.sql

そして、何らかの形で、usersテーブルが破損したり、消えたりしたら、このコマンドでリストアします。

mysql -u root -p -D btest < usersdata.sql

まとめ

今回試した方法はMysql全てのデータベースをバックアップとっているわけではないので、もしも、Mysql全てのデータが飛んだ場合は、復元がやや面倒になります。

ただ、小規模なサービスとかならこの方法でバックアップとリストアは平気でしょう。

スポンサードリンク

「為になったなぁ」と思ったら、シェアお願いします。

-unix
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

Macターミナルのカーソルの前のプロンプトに表示されている文字を消す

概要 みなさんこんにちはcanldeです。 ターミナルのプロンプトっていう言葉知っていますか? サイトによれば 「コンピューターにコマンドを入力する場所を表す画面上の表示。」 らしいです。私はこの言葉 …

Unixの画像処理ソフト「ImageMagick」をmacports経由でインストールする

概要 みなさんこんにちはcandleです。今回はImageMagickのインストールを行いましょう。 ImageMagicなのですが、これは画像を様々な要望に答えて処理してくれるソフトです。ターミナル …

MacにMacPortsを使ってmecabを入れる

概要 みなさんこんにちはcandleです。形態素解析エンジンmecabをmacに入れてみましょう。 mecabは日本語を分析し、名刺や形容詞などの種類に分けたりできる便利なソフトです。 よく使われる例 …

mysqlのデータベース、テーブル、データをmysqldumpを使用してバックアップする

概要 みなさんこんにちはcandleです。今回はmysqlのデータベースのバックアップを様々試します。 データベースのバックアップと言っても、テーブルのみとか構造のみとか、様々なオプションがあります。 …

mecabで文章を分かち書きする

概要 みなさんこんにちはcandleです。今回は「分かち書き」をしてみましょう。 分かち書きというのは文章を品詞毎に分ける事です。品詞とは名詞や動詞などのことです。 ちょっとみてみましょうか。 「私は …

  • English
  • 日本語

ベンチャー企業のCTOをやってます。大学時代にプログラミングを始め、javaから入門し、C++へて、PHPへと進み、会社ではRailsを使用。自動化が大好きなプログラマー