リカバリ 東大生研 情報融合研究センタ 喜連川優.

Slides:



Advertisements
Similar presentations
九州工業大学 塩田裕司 光来健一.  仮想マシンは必要なときだけ動かす使い方が一般 的 ◦ 一台の計算機上に複数の計算機を仮想的に作成できる ◦ デスクトップ  異なる OS を使用するため作成 ◦ サーバ  最大負荷に合わせた数の仮想マシンを作成  長期間使わない仮想マシンも存在する VM.
Advertisements

4.ユーザー登録マニュアル              Version 年6月10日 国立情報学研究所.
第2回 プロセス管理 ジョブ、プロセスとは? プロセスの状態遷移 プロセス制御ブロック スケジューリング.
SQL Server Always On Technologies の概要
メモリコンシステンシモデル memory consistency model
計算機工学III オペレーティングシステム #14 ファイル: より進んだファイルシステム 2006/07/21 津邑 公暁
ライブ・ストレージマイグレーション 機構の開発とその評価
ファイルキャッシュを考慮したディスク監視のオフロード
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第6回 仮想記憶とページング ページング ページ取り出し方式 ページ置き換え方式 中間テスト(40分)
オペレーティングシステム 第10回 仮想記憶管理(1)
入 出 力 管 理 オペレーティングシステム 6/26/09.
プログラミング入門 電卓番外編 ~エクセルで関数表示~.
SAP システムにおける SQL Server 運用ノウハウ
テキストベースの会議における議論の効率化に関する研究
計算機システムⅡ 主記憶装置とALU,レジスタの制御
Accessによるデータベース(3) Ver /11.
DBバックアップあーんどリカバリ HN おいろん.
DBバックアップあーんどリカバリ HN おいろん.
WagbyR6.5 Update 12 PPT版 更新情報
第10回 ソート(1):単純なソートアルゴリズム
バージョン管理超入門 まだファイルコピーしてます?
第6章 トランザクション管理 6.1 トランザクションの概念 6.2 同時実行制御 6.3 障害回復.
構造化オーバーレイネットワークに適した 分散双方向連結リストDDLL
小型デバイスからのデータアクセス 情報処理系論 第5回.
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング システムプログラミング プロセス間通信(パイプ) 担当:青木義満
RDBMSについて 2年7組  小鹿 慎太郎.
INSERTを高速化したPostgreSQL
アプリケーション共有機能 〈参考〉 (図1) (図2)
並列分散プログラミング.
第7章 データベース管理システム 7.1 データベース管理システムの概要 7.2 データベースの格納方式 7.3 問合せ処理.
LogStructuredFileSystem Servey
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第3回 CPUの管理と例外処理 OSによるハードウェアの管理 CPUの構成、動作 CPUの管理 例外処理、割り込み処理 コンテキストスイッチ
第5回 CPUの役割と仕組み3 割り込み、パイプライン、並列処理
ML 演習 第 7 回 新井淳也、中村宇佑、前田俊行 2011/05/31.
マイクロソフト Access での SQL 演習 第1回 SQL問い合わせ(クエリ)
東京大学生産技術研究所 概念情報工学研究センタ 喜連川優
15.同時実行制御,トランザクション, データベースの回復
第8回入出力制御 デバイスコントローラ ポーリングと割込み 入出力の方式 PIO DMA 入出力のためのソフトウェア技法.
九州大学キャンパスクラウド 利用法 情報ネットワーク特論 講義資料.
大阪大学 大学院情報科学研究科 博士前期課程2年 宮原研究室 土居 聡
第2回.リレーショナルデータベース入門 SQL を用いたテーブルへの行の挿入 SQL 問い合わせの発行と評価結果の確認.
第2回.リレーショナルデータベース入門 SQL を用いたテーブルへの行の挿入 SQL 問い合わせの発行と評価結果の確認.
耐故障処理 Fault Tolerance 「分散計算の基礎」 12章 発表者 : 高橋 慧.
CCP Express 3.3 アップグレード ガイド
アルゴリズムとデータ構造勉強会 B+tree.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
コンパイラ 2012年11月15日
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
コンピュータの基本構成について 1E16M001-1 秋田梨紗 1E16M010-2 梅山桃香 1E16M013-3 大津智紗子
3.1 PowerPoint の概要 PowerPointを使ってできること
コンピュータ概論B ー ソフトウェアを中心に ー #02 システムソフトウェアと アプリケーションソフトウェア
Webコミュニティ概念を用いた Webマイニングについての研究 A study on Web Mining Based on Web Communities 清水 洋志.
未使用メモリに着目した 複数ホストにまたがる 仮想マシンの高速化
複数ホストにまたがって動作する仮想マシンの障害対策
第4回 メモリ管理 主記憶(メインメモリ)の管理 固定区画方式と可変区画方式 空き領域の管理 スワッピング.
ISO23950による分散検索の課題と その解決案に関する検討
Boostのスマートなポインタを使ってみる
全体ミーティング (5/23) 村田雅之.
SQL Server ベースの SAP システム における高可用性ソリューション
CO-Client Opeartion 1.1 利用履歴データベースの設計 (スキーマ バージョン 対応)
強制パススルー機構を用いた VMの安全な帯域外リモート管理
SMP/マルチコアに対応した 型付きアセンブリ言語
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
プログラムの一時停止時に 将来の実行情報を提供するデバッガ
IPmigrate:複数ホストに分割されたVMの マイグレーション手法
Inline 展開のアルゴリズム 長谷川啓
L4-Linux のメモリ管理における問題点とその解決策
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Presentation transcript:

リカバリ 東大生研 情報融合研究センタ 喜連川優

リカバリの考え方 トランザクション障害からのリカバリとは障害時点に最も近いconsistentな状態へ復帰することを指す ログ:リカバリのための情報格納 カタストロフィーからの復帰 テープ上のバックアップからログを適応して(redo)障害直前の状態まで戻す アボート等からの回復 オンラインログを利用して、処理を元に戻す(undo)ことにより正常な状態へ戻す

更新手法 Deferred update Immediate update トランザクションがコミットするまで、更新情報をすぐにはディスクに反映しない手法。NO-UNDO/REDO 方式と呼ばれる。 Immediate update

Immediate Update コミット前にデータベースが更新される可能性がある。UNDO/REDO 手法と呼ばれる。 すべての更新をDBに反映した後にのみ、コミットするという手法を採用する場合には redoは不要となるため、UNDO/NO-REDO手法と呼ばれる。

性能上極めて重要なため、OSに制御を委ねるのではなく、DBMSが強制管理 OSとの関連が非常に強いのが実情 性能上極めて重要なため、OSに制御を委ねるのではなく、DBMSが強制管理 <disk page address, buffer location> pin, un-pin操作 更新技法 Inplace update 元の場所を更新(ログが必須) Shadowing   新しい場所に更新を保存

Write Ahead Log in-place updateをする場合には、リカバリのためにはログが不可欠であり、before imageがDB上で上書きされる前にログ上にBIを強制的に書き込む必要がある。この処理は write ahead loggingと呼ばれる。

通常のDBMSは steal/ no force steal/ no steal コミット前には更新をDBに書かない(no steal):deferredと同義 書き込みを許す。(steal) force/ no force コミット時にDBをすぐ更新(force) 更新しなくても良い(no force) 通常のDBMSは steal/ no force Stealにしないと巨大なバッファ空間が必要 No forceにすると、更新頻度の高いページを毎回ディスクに書き込む必要がなくなる。

チェックポイント DBMSのバッファの更新された全てのブロックを定期的にDBに吐き出す。 この時、ログ上に[checkpoint]なるレコードを記録 [checkpoint]以前の[commit,T]なるトランザクションに対しては障害発生時にredo不要。 チェックポイントの期間設定はどうする? ○分毎 あるいは ○個のトランザクションがコミットする毎

チェックポイントの取得 トランザクションの実行を一時的にサスペンド 更新された主記憶上のバッファをDBへ強制的に反映 [checkpoint]の書き込み トランザクションの再開 追加情報:アクティブトランザクションのリスト、それぞれに対して、最初と最後のログレコードの場所も書き込んでおくと、UNDOが容易。 Fuzzy checkpointing [checkpoint]レコードを書き、DBに書きながら通常トランザクションを実行。書き込み終了以前には前の[checkpoint]を利用。完了すると当該[checkpoint]に切り替え。

ロールバック データベースを更新し、コミット前に障害が発生したらロールバックが必要。 undo logを利用 例 例  T3が最初に起動され、*でBを更新 T2が**時点でその値を参照し、更に更新、また、T2は下の**でもDを更新。 従ってT3をロールバックすると、その更新を参照したT2も同時にロールバックする必要がある。 通常はcascade rollbackをすることはまづない。プロトコルをstrictにしている為。 ログにreadを入れているが、これはcascade rollbackの必要性を判断する為のものであり、strictにすればこのエントリも不要。

Deferred Update時のリカバリ Deferred Update protocol: トランザクションはコミットポイントに至るまでデータベースを変更出来ない。 トランザクションは全ての更新をログに書きそれをディスクに強制書き込みするまではコミットポイントに至らない 一般的にはトランザクションが短い実行時間で、更新対象数が少ない場合にのみ適応可能。それ以外はバッファ溢れが生ずる。 WALと同じこと。 NO UNDO/REDO プロトコル

同時実行制御とリカバリ (単一ユーザ) 最近のチェックポイント以降、コミットしたトランザクションのリスト 及び、アクティブトランザクションのリスト(この場合高々一つ)を利用 コミットしたトランザクションwrite操作をログから抽出し、記載された順にREDOを施す。その後再投入 ここでREDOとは[write_item,T,X,new_value]なるエントリに対して、new_valueをXに設定すること。 REDO= idempotent リカバリ最中にシステムがダウンしても回復可能

T1のwriteのみREDO T2は 未コミット

マルチユーザ環境 同時実行制御とリカバリは強い関連が有り一体化することが多い。一般的には並列性を上げようとすると、その分だけリカバリが複雑になることが多い。 Strict Two Phase Locking:コミット時点までロックを開放しない。 前述同様に最近のチェックポイント以降、コミットしたトランザクションリストとアクティブトランザクションリストを利用 ログに記載された順でコミットしたトランザクションのみそのWRITE操作をREDO。アクティブでコミット前のトランザクションを再投入

例 t1:チェックポイント T1はコミット済み T3,T4は 未コミット t2 :システムダウン T2とT3はコミット、T4とT5はまだ。  t1:チェックポイント  T1はコミット済み  T3,T4は 未コミット  t2 :システムダウン  T2とT3はコミット、T4とT5はまだ。  T1のREDO不要 チェックポイント前  T2とT3のREDO必要、チェックポイントの後でコミットしている。  T4とT5は REDO不要

リカバリの効率化 REDOを昔から現在にむかって適応するのではなく、時間を遡って適用する。REDONEリストを作成し、既にREDOしていたら、無視する。(どうせ上書きしているので) マルチユーザのリカバリの例

UNDO/REDO Recovery based on Immediate Updates 最近のチェックポイント以降のコミットしたトランザクションのリスト(コミットリスト)とアクティブトランザクションのリストを利用 アクティブトランザクションのwrite操作をUNDOする。 UNDOとは[write_item, T,X,oldvalue,newvalue] なるログエントリに関して、Xの値をoldvalueに設定。UNDO操作はログに書き込まれた順序と逆の順序で行う。 コミットしたトランザクションに関しては前述のようにREDO操作を行う。

Shadow Paging トランザクション実行開始時にcurrentからshadowにページへのポインタをコピー、それをディスクへ格納。ディレクトリはメモリ常駐 前の状態をshadow pageとしてshadow directoryに保持 トランザクションはcurrent directoryの指すページを操作 コミット時にはshadowを破棄 アボート時にはcurrentを破棄 問題 Currentからshadowへのディレクトリ移動をATOMICに実行することが前提 ディスク上でのデータページが動くため最適化困難 GC