[an error occurred while processing this directive]
■ 【ぷろじぇくと ぞうさん】 〜E-Bananaサーバ 構築日記〜

目次に戻る
1日目 2日目 3日目 4日目 5日目 6日目 7日目
8日目 9日目 10日目 11日目 12日目 13日目 14日目
15日目 16日目 17日目 18日目 19日目 20日目 21日目
22日目 23日目 24日目 25日目 26日目 27日目 28日目
29日目 30日目 31日目 32日目 33日目 34日目 35日目
36日目 37日目 38日目 39日目 40日目 41日目 42日目
43日目 44日目 45日目 46日目 47日目 48日目 49日目
50日目 51日目 52日目 53日目 54日目 55日目 56日目
57日目 58日目 59日目 60日目 61日目 62日目 63日目
64日目 65日目 66日目 67日目 68日目 69日目 70日目
71日目 72日目 73日目 74日目 75日目 76日目 77日目
78日目 79日目 80日目 81日目 82日目 83日目 84日目
85日目 86日目 87日目 88日目 89日目 90日目 91日目
92日目 93日目 94日目 95日目 96日目 97日目 98日目
99日目 100日目 101日目 102日目 103日目 104日目 105日目
106日目 107日目 108日目 109日目 110日目 111日目 112日目
113日目 114日目 115日目 116日目 117日目 118日目 119日目
120日目 121日目 122日目 123日目 124日目 125日目 126日目
127日目 128日目 129日目 130日目 131日目 132日目 133日目
134日目 135日目 136日目 137日目 138日目 139日目 140日目
141日目 142日目 143日目 144日目 145日目 146日目 147日目
148日目 149日目 150日目 151日目 152日目 153日目 154日目
155日目 156日目 157日目 158日目 159日目 160日目 161日目
162日目 163日目 164日目 165日目 166日目 167日目 168日目
169日目 170日目 171日目 172日目 173日目 174日目 175日目
176日目 177日目 178日目 179日目 180日目 181日目 182日目
183日目 184日目 185日目 186日目 187日目 188日目 189日目
190日目 191日目 192日目 193日目 194日目 195日目 196日目
197日目 198日目 199日目 200日目 201日目 202日目 203日目
204日目 205日目 206日目 207日目 208日目 209日目 210日目
211日目 212日目 213日目 214日目 215日目 216日目 217日目
218日目 219日目 220日目 221日目 222日目 223日目 224日目
225日目 226日目 227日目 228日目 229日目 230日目 231日目
232日目 233日目 234日目 235日目 236日目 237日目 238日目
239日目 240日目 241日目 242日目 243日目 244日目 245日目
246日目 247日目 248日目 249日目 250日目 251日目 252日目
253日目 254日目 255日目 256日目 257日目 258日目 259日目
260日目 261日目 262日目 263日目 264日目 265日目 266日目
267日目 268日目 269日目 270日目 271日目 272日目 273日目
274日目 275日目 276日目 277日目 278日目 279日目 280日目
281日目 282日目 283日目 284日目 285日目 286日目 287日目
288日目 289日目 290日目 291日目 292日目 293日目 294日目
295日目 296日目 297日目 298日目 299日目 300日目 301日目
302日目 303日目 304日目 305日目 306日目 307日目 308日目
309日目 310日目 311日目 312日目 313日目 314日目 315日目
316日目 317日目 318日目 319日目 320日目 321日目 322日目
323日目 324日目 325日目 326日目 327日目 328日目 329日目
330日目 331日目 332日目 333日目 334日目 335日目 336日目
337日目 338日目 339日目 340日目 341日目 342日目 343日目
344日目 345日目 346日目 347日目 348日目 349日目 350日目
351日目 352日目 353日目 354日目 355日目 356日目 357日目
358日目 359日目 360日目 361日目 362日目 363日目 364日目
第16日目:教えて('A`) 〜MySQLって何?(その3)〜

どうも、('A`)です。
今日は朝からちょっと大きなネットワーク障害が発生して復旧対応に大わらわの
状態でした。現在は正常に稼働しています。ご安心下さい。
こちらのページで今回の障害についてご報告差し上げておりますが、どの様な
「不具合」が発生したのか気になる方もいらっしゃると思いますので、解説します。

今朝の7時頃にデータセンターに設置されているスイッチの1つで何故か負荷が
急に高くなり、正常な応答動作がしづらい状況に陥りました。
そしてこれに付随して各スイッチが迂回経路を求めようとした際に問題のスイッチに
起因する「通信のループ現象」が発生し、構内のネットワーク全体がひっ迫した状態と
なりました。
PIEのネットワーク技術者チームはスイッチが物理的に壊れていない事を確認し
スパニングツリープロトコル(STP)の設定を調整した結果、午前8時30分に
構内ネットワークが正常化(復旧)しました。もう大丈夫です!

お客様への復旧連絡等の対応がようやく終わりましたので、やっと日記に取り掛かれます。
(それにしても('A`) が夜間監視の当番の日とかその翌朝ってこういう事が起きる頻度が
高いんですよ。気のせいかなあ・・・ちなみに今朝はこの障害が発生した為アメリカからの
モーニングコールで叩き起こされました。ちょっと眠たいです。)


さて、今日は昨日に引き続きphpMyAdminを使ったデータベース構築&データ登録のお話を
進めます。
昨日エース( ,_ノ` )y━・~~~から突っ込まれた「文字化け」の問題、そしてデータベースの
データのバックアップ&復元について重点的に説明します。


【文字化けの原因‥‥文字コードlatin1の悪戯】
昨日('A`)がデータ追加した際に「文字化け」が発生しましたが、これはMySQLシステムの
デフォルト文字コードが「latin1」(大まかにいえば英語)になっている為です。
今回使用したMySQLはFreeBSDのPorts(バイナリ形式)をpkg_addコマンドでインストール
したもので、その場合デフォルト文字コードがlatin1になります。
(ちなみにMySQLのバージョンは5.0.27です。)
MySQLの5.0.x系ではutf8(unicode)も文字コードとしてインストールされているので、
テーブル作成時の設定でキャラクタセットとして指定すると日本語も扱えます。

では具体的に文字化けを回避する為にどの様にテーブルを作ればよいか説明します。
まず昨日作ったテーブル「server_list」の設定内容を見てみます。

(図1)

図1の内容でテーブルを作成すると、MySQLでは各項目の文字コード(キャラクタセット)に
latin1を自動的に適用します。そしてphpMyAdmin側ではこのlatin1の文字コードに基づき
表示用の文字コードを図2の様に「latin1_swedish_cl」として適用します。
(なぜスウェーデンなんだろう・・・)
phpMyAdmin上でのテーブル構成の表示画面中では「照合順序」という項目がこれに
該当します。

(図2)

この状態で日本語の文字コードを入力すると、一覧表示の際に対応するコードが
見つからない為に「文字化け」した形で表示されます。
図3の様に鯖子J(''ー`)しの顔が「J('?`)?」の様に崩れて表示されます。

(図3)

それでは、どうすればいいか・・・テーブルを作成する時にテーブル全体又は項目の
文字コードを「utf8_unicode_cl」として適用すればOKです。
今回はテーブル全体に utf8_unicode_cl を適用する為、図4の様にテーブル全体の
「照合順序」のスクロールバーで選択し、「保存する」ボタンを押します。

(図4)

すると図5の様にテーブルの各項目の照合順序が「utf8_unicode_cl」となります。
またテーブルの文字コード(キャラクターセット)が utf8 となります。

(図5)

そこでこのテーブルに日本語を含むデータを追加してみると、図6の様に表示されます。
鯖子J(''ー`)し も root弟(´・ω・`) も文字化けする事無く表示されます。

(図6)


【もう1つのデータ入力方法‥‥インポート】
昨日はphpMyAdminのデータ追加画面からの入力方法について説明しました。
確かに入力はできるのですが、データ量が多いと「1件ずつ入力するのはきつい」と
思われる人もいるでしょう。そこで、もう一つの入力方法(インポート)を今から説明します。

まず入力するデータをEXCELやテキストエディタなどを使ってcsv形式で作成します。
(自分が使っているPC上に作って下さい。)
('A`)の場合には以下の内容のデータ(slist.csv)を作成しました。
banana205";"FreeBSD 6.2R";"206.223.151.30";"('A`)"
"banana260";"FreeBSD 6.2R";"206.223.147.160";"J( 'ー`)し"
"banana261";"FreeBSD 6.2R";"206.223.147.165";"(´・ω・`)"

それぞれの行はテーブルの1レコードに対応します。また1レコード中の各項目は
;(ゼミコロン)で区切り、各項目の実データは"(ダブルクォーテーション)で囲っています。
(但し1レコード目の1番目の項目については最初の"を外します。そうしないと
phpMyAdminからのインポートで内部的に作られるSQL文が正しく生成されないからです。)
あと改行コードは「LF」を選択して下さい。
csvファイルを作ったら、インポートします。
phpMyAdminの画面上に「インポート」と書かれた次のボタンを押します。

すると図7の画面が表示されます。

(図7)

ここで、「テキストファイルの場所」と書かれた欄の横にある「参照」ボタンを押すと
エクスプローラーのダイアログが表示されるので、先ほど作成したcsvファイルを選択します
次に、以下の内容を設定します。
 ・インポート済ファイルの書式 → 「CSV」を選択
 ・CSVオプション → 下記の内容を入力
              1) フィールド区切り記号 → ;
              2) フィールド囲み記号 → "
              3) フィールドのエスケープ記号 → \
              4) 行の終端記号 → \n
そして画面右下にある「実行する」ボタンをマウスでクリックします。

画面で入力した各種設定とcsvファイルの内容が正しければ、図8の画面に切り替わり
データが追加されます。
(実際登録されたデータを見る場合にはphpMyAdmin画面上の「表示」ボタンをクリック
します。すると図6の画面が表示されます。)

(図8)


【データのバックアップ‥‥エクスポート】
MySQLのデータベースが壊れたりデータが無くなったりしたらとても困りますよね。
(件数が多いとデータ入力も大変ですから。)
ではバックアップはどうすれば作れるのか。
ここではphpMyAdminのエクスポート機能について説明します。

皆さんの中にはバックアップを取得するのは「データ本体」だけで良いと考えている
方もいるかもしれませんが、データベースの場合には「テーブル定義」等も対象に
する必要があります。
エクスポートではSQL形式でファイルに出力する事で、「データ本体」と「テーブル定義」を
まとめて1ファイルに出してくれます。
しかもこのファイルを使ったインポートの事も考えてSQL文も埋め込まれた内容で
生成されます。

まずphpMyAdminの画面上に「エクスポート」と書かれた次のボタンを押します。

すると図9の画面が表示されます。

(図9)

ここで「SQLオプション」内の「データ」と囲まれた項目群から「完全なINSERT文を作成する」に
チェックを付けます。
次に画面下段の「ファイルで保存する」にチェックを付け、右下の「実行する」ボタンを
クリックします。

すると図10の画面の様にエクスポートされ出力されたファイルのダウンロードが
実行されますので、ローカルに保存します。

(図10)

今回エクスポートを実施し、ダウンロードされたファイル(server_list.sql)の内容は
以下の様になっています。

-- phpMyAdmin SQL Dump
-- version 2.7.0-pl2
-- http://www.phpmyadmin.net
--
-- ホスト: localhost:3306
-- 作成の時間: 2008 年 3 月 26 日 22:32
-- サーバーのバージョン: 5.0.27
-- PHP バージョン: 4.4.2
--
-- データベース: `jbana205`
--

-- --------------------------------------------------------

--
-- テーブルの構造 `server_list`
--

CREATE TABLE `server_list` (
`name` char(10) collate utf8_unicode_ci NOT NULL,
`os` char(12) collate utf8_unicode_ci NOT NULL,
`ip` char(15) collate utf8_unicode_ci NOT NULL,
`owner` char(10) collate utf8_unicode_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- テーブルのダンプデータ `server_list`
--

INSERT INTO `server_list` VALUES ('?banana205', FreeBSD 6.2R, 206.223.151.30, '(''A`)');
INSERT INTO `server_list` VALUES ('banana260', FreeBSD 6.2R, 206.223.147.160, 'J( ''ー`)し');
INSERT INTO `server_list` VALUES ('banana261', FreeBSD 6.2R, 206.223.147.165, '(´・ω・`)');

「テーブルの構造」の箇所がテーブルの定義部分を、「テーブルのダンプデータ」の箇所が
実データ部分を示しています。しかも昨日実行した様なSQL文の形式で作成されています。

・・・気づいたのですが、この内容でそのままインポートしようとしてもエラーになるなあ。
(ダンプデータのところの項目でフィールドが囲まれているものと囲まれていないものが
混在しています。)
なので、「テーブルのダンプデータ」を以下の内容にテキストエディタで修正します。
INSERT INTO `server_list` VALUES ('?banana205', 'FreeBSD 6.2R', '206.223.151.30', '(''A`)');
INSERT INTO `server_list` VALUES ('banana260', 'FreeBSD 6.2R', '206.223.147.160', 'J( ''ー`)し');
INSERT INTO `server_list` VALUES ('banana261', 'FreeBSD 6.2R', '206.223.147.165', '(´・ω・`)');

では実際にこのデータでテーブルが復元できるか試してみます。
まずは今データベースに存在しているテーブルを一旦削除します。
phpMyAdminの画面上に「削除」と書かれた次のボタンを押します。

すると図11の画面が表示され、削除の確認ダイアログが表示されます。

(図11)

ここで「OK」ボタンを押すとテーブルはサーバ上から削除され、無くなります。
では続けて先ほどダウンロードし修正した server_list.sql をインポートしてみます。
phpMyAdminの画面上の「インポート」ボタンを押します。
そして図12の画面が表示されたら「参照」ボタンで server_list.sql を指定して
「実行する」ボタンを押します。

(図12)

すると図13の画面に切り替わりました。これでテーブルの作成とデータの追加が
完了しました。

(図13)



( ,_ノ` )y━・~~~「どうですか?今日の日記は。。。」
('A`):「えーと、文字化け対応とバックアップの作り方&戻し方の基本説明は
    できたかなあ、と」
( ,_ノ` )y━・~~~「いいですねぇ。。。」
('A`):「じゃあ、もういいかな、アップしても。」
( ,_ノ` )y━・~~~「いいですよ。第一弾としては上出来です。」
('A`):「え・・・第一弾って?」
( ,_ノ` )y━・~~~「実はですね・・・T-BanaanサーバではphpMyAdminの最新版を
         インストールできるんですよ。今回説明で使ったバージョンは
         ちょっと古いですしね。
         今度は新バージョンを使っての説明があるといいですなあw」
('A`):「うわーん!!!」

何とかエース( ,_ノ` )y━・~~~にお願いしてMySQLの説明はこれで一旦終わりとなりました。
(ただ、もしかすると近日中に「第二弾」があるのかも・・・)
明日からは久しぶりにロードバランサーの方のお話に戻れるかと思います。
それでは、また

15日目に戻る。   17日目に続く。

目次に戻る
1日目 2日目 3日目 4日目 5日目 6日目 7日目
8日目 9日目 10日目 11日目 12日目 13日目 14日目
15日目 16日目 17日目 18日目 19日目 20日目 21日目
22日目 23日目 24日目 25日目 26日目 27日目 28日目
29日目 30日目 31日目 32日目 33日目 34日目 35日目
36日目 37日目 38日目 39日目 40日目 41日目 42日目
43日目 44日目 45日目 46日目 47日目 48日目 49日目
50日目 51日目 52日目 53日目 54日目 55日目 56日目
57日目 58日目 59日目 60日目 61日目 62日目 63日目
64日目 65日目 66日目 67日目 68日目 69日目 70日目
71日目 72日目 73日目 74日目 75日目 76日目 77日目
78日目 79日目 80日目 81日目 82日目 83日目 84日目
85日目 86日目 87日目 88日目 89日目 90日目 91日目
92日目 93日目 94日目 95日目 96日目 97日目 98日目
99日目 100日目 101日目 102日目 103日目 104日目 105日目
106日目 107日目 108日目 109日目 110日目 111日目 112日目
113日目 114日目 115日目 116日目 117日目 118日目 119日目
120日目 121日目 122日目 123日目 124日目 125日目 126日目
127日目 128日目 129日目 130日目 131日目 132日目 133日目
134日目 135日目 136日目 137日目 138日目 139日目 140日目
141日目 142日目 143日目 144日目 145日目 146日目 147日目
148日目 149日目 150日目 151日目 152日目 153日目 154日目
155日目 156日目 157日目 158日目 159日目 160日目 161日目
162日目 163日目 164日目 165日目 166日目 167日目 168日目
169日目 170日目 171日目 172日目 173日目 174日目 175日目
176日目 177日目 178日目 179日目 180日目 181日目 182日目
183日目 184日目 185日目 186日目 187日目 188日目 189日目
190日目 191日目 192日目 193日目 194日目 195日目 196日目
197日目 198日目 199日目 200日目 201日目 202日目 203日目
204日目 205日目 206日目 207日目 208日目 209日目 210日目
211日目 212日目 213日目 214日目 215日目 216日目 217日目
218日目 219日目 220日目 221日目 222日目 223日目 224日目
225日目 226日目 227日目 228日目 229日目 230日目 231日目
232日目 233日目 234日目 235日目 236日目 237日目 238日目
239日目 240日目 241日目 242日目 243日目 244日目 245日目
246日目 247日目 248日目 249日目 250日目 251日目 252日目
253日目 254日目 255日目 256日目 257日目 258日目 259日目
260日目 261日目 262日目 263日目 264日目 265日目 266日目
267日目 268日目 269日目 270日目 271日目 272日目 273日目
274日目 275日目 276日目 277日目 278日目 279日目 280日目
281日目 282日目 283日目 284日目 285日目 286日目 287日目
288日目 289日目 290日目 291日目 292日目 293日目 294日目
295日目 296日目 297日目 298日目 299日目 300日目 301日目
302日目 303日目 304日目 305日目 306日目 307日目 308日目
309日目 310日目 311日目 312日目 313日目 314日目 315日目
316日目 317日目 318日目 319日目 320日目 321日目 322日目
323日目 324日目 325日目 326日目 327日目 328日目 329日目
330日目 331日目 332日目 333日目 334日目 335日目 336日目
337日目 338日目 339日目 340日目 341日目 342日目 343日目
344日目 345日目 346日目 347日目 348日目 349日目 350日目
351日目 352日目 353日目 354日目 355日目 356日目 357日目
358日目 359日目 360日目 361日目 362日目 363日目 364日目

いま一番お得なページ! 解析
[an error occurred while processing this directive]