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ターミナルのウィンドタイトルとタブ名を変更する

概要 みなさんこんにちはcandleです。 ターミナルのウィンドタイトルとタブ名を変更する企画をやっていきたいと思います。 ウィンドタイトルというのは何処かというと下の画像の部分になります。タブ名もそ …

最高に見やすいターミナルのフォントを選ぶ

概要 みなさんこんにちはcandleです。 今回は最高に見やすいターミナルのフォントと題し、解説していきたいと思います。 フォントを選ぶことは人生を選ぶくらい大事なことなのはお分かりだと思います。 プ …

grepコマンドを使って正規表現を色々試してみるその1

概要 みなさんこんにちはcandleです。今回からgrepコマンドを使って正規表現を色々試してみます。 正規表現って、使えると便利ですが、それを勉強して使いこなせている人って少ないと思います。この機会 …

Git diffで新規作成したファイル情報を表示させる

概要 みなさんこんにちはcandleです。今回はgitのdiffを使ってどの様なファイルが作成されたか確認する方法を紹介します。 gitのdiffは一般にファイルの差分を表示させたりするために使うもの …

Macportsのインストール

みなさんこんにちはcandleです。パッケージ管理ツールであるMacPortsのインストールと環境構築です。 前提 1、Xcodeがインストールされている MacPortsをインストールする前に、Ma …

  • English
  • 日本語

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