データベース13 - トランザクションと障害回復

51
データベース 第13回 トランザクションと障害回復 1 2015年7⽉2⽇(⽊) 7・8時限 担当:奥 健太

Upload: kenta-oku

Post on 08-Aug-2015

65 views

Category:

Education


0 download

TRANSCRIPT

データベース第13回

トランザクションと障害回復

1

2015年7⽉2⽇(⽊) 7・8時限担当:奥 健太

トランザクションとデータベース構造編回 ⽇付 テーマ12 6/25 トランザクションと同時実⾏制御13 7/2 トランザクションと障害回復14 7/9 データベース構造とインデックス

2

トランザクションとデータベース構造編での学習⽬標

3

トランザクションを理解する

データベースの同時実⾏制御の仕組みを理解する

データベースの障害回復⽅法を理解する

効率的なデータアクセスのためのデータベース構造およびインデックスを理解する

障害回復機能

4

vs.

復習

障害回復機能

5

座席予約DB

Y航空,10万⼈の座席予約データ紛失!

座席予約DB

座席予約DB

障害回復機能

6

ミラーリング

ミラーデータベース

ミラーデータベースにまったく同じデータが保存されているため,データ復旧が可能

障害回復機能回 ⽇付 テーマ12 6/25 トランザクションと同時実⾏制御13 7/2 トランザクションと障害回復14 7/9 データベース構造とインデックス

7

トランザクション,Durability(耐久性),障害回復について学ぶ

トランザクションのもつべき特性

障害回復⽅法

本⽇の講義で学ぶこと

8

トランザクションのもつべき特性

9

ACID特性

AtomicityConsistencyIsolationD

障害からDBを守れ

10

さまざまな障害

11

システム

データベース

ネットワーク

トランザクションアプリケーション

管理者

T1

READ xx = x - 1WRITE x

トランザクション障害

12

T1

READ xx = x - 1WRITE x

トランザクション⾃⾝の障害によりトランザクションが異常終了した場合に⽣じる障害

例;DB操作の失敗,参照データの不備,論理エラー

システム

データベース

ネットワーク

トランザクションアプリケーション

管理者

システム

データベース

ネットワーク

トランザクションアプリケーション

管理者

システム障害

13

ソフトウェアやハードウェア,ネットワークなどのトラブルによりシステムが停⽌する障害

T1

READ xx = x - 1WRITE x

システム

データベース

ネットワーク

トランザクションアプリケーション

管理者

媒体障害

14

データを格納している記憶媒体の故障により,データベースの⼀部または全部が破損してしまう障害

T1

READ xx = x - 1WRITE x

システム

データベース

ネットワーク

トランザクションアプリケーション

管理者

⼈的障害

15

データベース管理者や操作員などの⼈⼿による操作において⽣じる操作ミスによって発⽣する障害

T1

READ xx = x - 1WRITE x

DROP DATABASE ...

mysql stop

Durability(耐久性)を保証せよ

16

障害が発⽣したら,速やかに回復を

障害回復の基本的⽅法

17

データベースバックアップ

18

時間経過

2014/7/1 0:00

2014/7/2 0:00

定期的にデータベース内のすべての情報をコピーとして保存しておくこと

データベースダンプデータベースダンプ

データベースダンプ

number name class1 佐藤 B12 鈴⽊ B13 ⾼橋 D14 ⽥中 A1

DROP TABLE IF EXISTS `students`;

CREATE TABLE `students` (...);

INSERT INTO `students` VALUES (...);

...

ダンプ

復元

students

データベース内のすべての情報をコピーとして保存しておいたもの

ダンプファイル

データベースを復元するための⼀連のSQL

mysqldump -u user database > dump.sql

mysql -u user database < dump.sql復元ダンプ

MySQLのコマンド

データベースバックアップ

20

時間経過

2014/7/1 0:00

2014/7/1 22:15 ロールバック(UNDO)

データベースをバックアップした時点の状態に復元

障害発⽣!

データベースバックアップ

21

時間経過

2014/7/1 0:00

2014/7/1 22:15 ロールバック(UNDO)

データベースをバックアップした時点の状態に復元

失われた更新

障害発⽣!

失われた更新を取り戻せ

22

ロギング

23

すべてのデータベースの操作記録を保存しておくこと

時刻 トランザクション

操作 関係 タプル 列 旧値 新値

14:25 T1 START

14:28 T1 UPDATE 銀⾏ A 残⾼ 20 10

14:29 T2 START

14:30 T1 UPDATE 銀⾏ B 残⾼ 5 10

14:31 T1 COMMIT

14:33 T2 INSERT 銀⾏ C C, 0

14:34 T2 COMMIT

ログファイル

ログ(ジャーナル)記録⽇時トランザクションIDログレコードの種類

– トランザクション開始,INSERT,DELETE,UPDATE,正常終了,異常終了など

ビフォアイメージ(更新前ログ,旧値)– データベースを更新(登録,削除も含む)

する前の情報アフタイメージ(更新後ログ,新値)

– データベースを更新した後の情報 24

ロールフォワード

25

時間経過

2014/7/1 0:00

2014/7/1 22:15

バックアップ時点まで復元後,ログを基に更新

ロールフォワード(REDO)

ログ

ログを書き出すタイミング

26

(1) トランザクションの開始

(3) トランザクションの終了

(2) データベースの実更新データベースの実更新後?

ログ 途中で障害が発⽣すると,ログが中途半端になる

トランザクションの終了後?ログ 途中で障害が発⽣すると,

ログが中途半端になる

データベースの実更新前?途中で障害が発⽣しても,ログは残る

ログ

2015.07.02修正

WAL (Write Ahead Log) プロトコル(ログ先書きプロトコル)

27

データベースを実更新する以前にログを格納する⽅法

(1) トランザクションの開始

(3) トランザクションの終了(2) データベースの実更新

データベースの実更新前?途中で障害が発⽣しても,ログは残る

ログ

2015.07.02修正

WALプロトコルの例

28

T1

STARTUPDATE(A, 10)UPDATE(B, 10)COMMIT

主記憶 2次記憶

A 20B 5

データ⽤バッファ

ログ⽤バッファ

A 20B 5

トランザクション

... ...

ログファイル

データベース(1) 更新要求

2015.07.02追加

WALプロトコルの例

29

T1

STARTUPDATE(A, 10)UPDATE(B, 10)COMMIT

主記憶 2次記憶

A 10B 5

データ⽤バッファ

ログ⽤バッファ

A 20B 5

トランザクション

...T1, A, 20, 10

...

ログファイル

データベース(2) メモリに更新内容とログを記録(2) メモリに更新内容とログを記録

2015.07.02追加

WALプロトコルの例

30

T1

STARTUPDATE(A, 10)UPDATE(B, 10)COMMIT

主記憶 2次記憶

A 10B 5

データ⽤バッファ

ログ⽤バッファ

A 20B 5

トランザクション

...T1, A, 20, 10

...T1, A, 20, 10

ログファイル

データベース

(3) ログを先に2次記憶に書出し

2015.07.02追加

WALプロトコルの例

31

T1

STARTUPDATE(A, 10)UPDATE(B, 10)COMMIT

主記憶 2次記憶

A 10B 5

データ⽤バッファ

ログ⽤バッファ

A 10B 5

トランザクション

...T1, A, 20, 10

...T1, A, 20, 10

ログファイル

データベース(4) ログの書出し後にデータベースを実更新

2015.07.02追加

Durability(耐久性)

32

トランザクションが正常終了したとき,トランザクションが更新した結果は,どのような障害があってもデータベース内で永久に保障されていなければならない性質

トランザクションのもつべき特性

33

ACID特性

AtomicityConsistencyIsolationDurability

ロールバックとロールフォワード

34

ロールバック(UNDO)– 現在のデータベースの状態から時間的に遡って,過去のあ

る時点のデータベースの状態に復旧する⽅法– 巻き戻すためにログの中のビフォアイメージが使⽤される

ロールフォワード(REDO)– 事前に保存していたデータベースダンプを磁気ディスクに

移し,その後,ログのアフタイメージを適⽤することで,障害のあった直前の状態に復旧させる⽅法

トランザクション障害時の対応

35

T1

READ xx = x - 1WRITE x

システム

データベース

ネットワーク

トランザクションアプリケーション

管理者 障害発⽣時のトランザクションにロールバックを適⽤

システム

データベース

ネットワーク

トランザクションアプリケーション

管理者

システム障害時の対応

36

T1

READ xx = x - 1WRITE x

障害発⽣時のトランザクションにロールバックを適⽤ コミット済みであるが,記憶媒体への書込みが未完了

のトランザクションにはロールフォワードを適⽤

システム

データベース

ネットワーク

トランザクションアプリケーション

管理者

媒体障害時の対応

37

T1

READ xx = x - 1WRITE x

バックアップ時点の状態までデータベースを復旧した後,バックアップ以降で障害発⽣までにコミット済みのトランザクションにロールフォワードを適⽤

システム

データベース

ネットワーク

トランザクションアプリケーション

管理者

⼈的障害時の対応

38

T1

READ xx = x - 1WRITE x

DROP DATABASE ...

mysql stop

障害の内容に応じて,ロールバックとロールフォワードを適⽤

障害の種類と障害回復⽅式の関係

39

障害の種類 ロールバック

ロールフォワード

トランザクション障害 ○ ―システム障害 ○ ○媒体障害 ― ○⼈的障害 ○ ○

データベースへの更新内容の反映

T1

コミット

T2

コミット

コミットT3

コミットT4

T5

コミット

主記憶 データベースへの更新は主記憶上で⾏われる

T5

コミット

コミットT4

障害発⽣

データベースへの更新内容の反映

T1

コミット

T2

コミット

コミットT3

主記憶

定期的に2次記憶(ハードディスク)に反映させる必要がある

主記憶上のデータも消去される

チェックポイント

T1

コミット

T2

コミット

コミットT3

コミットT4

T5

コミット

障害発⽣

主記憶上のデータを強制的に2次記憶に反映させる

チェックポイント

チェックポイントを⽤いた障害回復⽅法

T1

コミット

T2

コミット

コミットT3

コミットT4

T5

コミット

障害発⽣

チェックポイント

ロールフォワードロールフォワード

ロールバックロールバック

チェックポイントを⽤いた障害回復⽅法

T1

コミット

T2

コミット

コミットT3

コミットT4

T5

コミット

障害発⽣

チェックポイント

チェックポイント時点でコミット済みであるので,回復処理は不要

チェックポイントを⽤いた障害回復⽅法

T1

コミット

T2

コミット

コミットT3

コミットT4

T5

コミット

障害発⽣

チェックポイント

障害発⽣前にコミット済みであるので,チェックポイント以降の操作をロールフォワード障害発⽣前にコミット済みであるので,チェックポイント以降の操作をロールフォワード

チェックポイントを⽤いた障害回復⽅法

T1

コミット

T2

コミット

コミットT3

コミットT4

T5

コミット

障害発⽣

チェックポイント

障害発⽣時に実⾏中であるので,ロールバック障害発⽣時に実⾏中であるので,ロールバック

トランザクションのもつべき特性

47

ACID特性

AtomicityConsistencyIsolationDurability

トランザクションのもつべき特性

障害回復⽅法

まとめ

48

まとめ

49

ACID特性Durability(耐久性):障害からDBを守れ

データベースバックアップロギング,WALプロトコルロールバックとロールフォワードチェックポイント

本⽇学習したキーワード〜トランザクションとデータベース構造編〜

50

2相ロッキング 縮退相 ハッシュ関数ACID特性 順次編成ファイル ハッシュ結合Atomicity(原⼦性) 障害回復 ハッシュの衝突B+⽊インデックス 除算法 バランス⽊B⽊インデックス ⼈的障害 ビフォアイメージConsistency(整合性) 成⻑相 ファイルDurability(耐久性) ダーティリード ファントムリードIsolation(隔離性) ダンプファイル フィールドWALプロトコル チェックポイント マージ結合アフタイメージ 中間ノード 待合せグラフ⼊れ⼦結合 直接編成ファイル リーフノードインデックス 直列化可能性 両⽴性⾏列インデックスによる結合 データ部 ルートノードインデックスファイル データベースダンプ レコード基数変換法 データベースバックアップ ロールバック共有ロック デッドロック ロールフォワード更新の喪失 同時実⾏制御 ロギングコミット トランザクション ログ(ジャーナル)索引部 トランザクション障害 ログファイル索引編成ファイル ノンリピータブルリード ロッキング⾃乗・中央法 媒体障害 ロックシステム障害 排他ロックシノニム ハッシュインデックス

これまでに学習したキーワード〜トランザクションとデータベース構造編〜

51

2相ロッキング 縮退相 ハッシュ関数ACID特性 順次編成ファイル ハッシュ結合Atomicity(原⼦性) 障害回復 ハッシュの衝突B+⽊インデックス 除算法 バランス⽊B⽊インデックス ⼈的障害 ビフォアイメージConsistency(整合性) 成⻑相 ファイルDurability(耐久性) ダーティリード ファントムリードIsolation(隔離性) ダンプファイル フィールドWALプロトコル チェックポイント マージ結合アフタイメージ 中間ノード 待合せグラフ⼊れ⼦結合 直接編成ファイル リーフノードインデックス 直列化可能性 両⽴性⾏列インデックスによる結合 データ部 ルートノードインデックスファイル データベースダンプ レコード基数変換法 データベースバックアップ ロールバック共有ロック デッドロック ロールフォワード更新の喪失 同時実⾏制御 ロギングコミット トランザクション ログ(ジャーナル)索引部 トランザクション障害 ログファイル索引編成ファイル ノンリピータブルリード ロッキング⾃乗・中央法 媒体障害 ロックシステム障害 排他ロックシノニム ハッシュインデックス