Journal - InterSystems

Caché Journal
について
インターシステムズジャパン(株)
サポ トスペシャリスト
サポートスペシャリスト
中橋 聖介
Agenda
• Journalの紹介
• Journalの基礎
• Journalの管理
• Journalの応用Tips
• Journalの紹介
• Journalの基礎
• Journalの管理
• Journalの応用Tips
お問い合わせ内容
Core
Journal
Installation
License
Startup
トランザクションログ
“クラッシュやハードウェア故障があったと
してもデータベース管理システムのACID特
性を保障するための操作履歴を指す”
(source: Wikipedia)
•
•
•
•
Oracle : REDO Log
SQL Server : Transaction Log
M SQL : Bi
MySQL
Binary LLog
Caché : Journal / CACHE.WIJ
Journal と CACHE.WIJ
CACHE.WIJ
CACHE.DAT
^xx
^xx
set ^x=1
Journal
set ^x=1
Journal (5W)
[誰が] システムプロセスが
[何を] Databaseの変更履歴を
[いつ] 変更されるたびに
[どこ] CACHE.DATとは別のファイルに
[なぜ] ① 障害時の整合性保証のため
[なぜ] ② Transaction処理のため
• Journalの紹介
• Journalの基礎
• Journalの管理
• Journalの応用Tips
Journalの中身
Journal
の中身
• GlobalのSET/KILLを記録
• Database名/Global名/Data値
• 更新前の値も記録
• SQL/Object経由の更新でも, 最終的に変更さ
れたGlobalだけが記録される
• テーブル名/クラス名は記録されない
• 中身はBinary
• 管理ポータル or ^JRNDUMP で閲覧
Rollback処理
Rollback
処理
• CachéにおけるTransactionは、Commit前か
ら更新データを格納する
• Rollback時に前の値に戻す
• 更新前のデータを記録したJournalをさかの
ぼることで, Rollback処理を行う
• Caché起動時にRollbackが走ることがある
Journal Restore
• 変更履歴を記録したJournalの再適用
(Journal Restore) でDBの複製が可能
• Backup Restore, Mirroring / Shadowing
• Journalの紹介
• Journalの基礎
• Journalの管理
• Journalの応用Tips
journal.log
• Journalの管理用ログファイル
• <cachedir>¥mgr¥journal.log
g j
g
• 2010.1以降導入
• Journal切替やRestore時にも使用される
Journal切替
Journal
切替
• 一定サイズに達すると切替 (初期値1GB)
• 毎日0時実行のタスクで切替
• 管理ポータル or ^JRNSWTCH による切替
• Caché Backup処理で切替
Journal削除
Journal
削除
• 毎日0時30分実行のタスクで削除
1ファイル 保存、そ
保存 そ
• 指定日数(初期値2)+ “1ファイル”
れより過去のJournalが削除
-3-3
-3
-2-2
-2
-1-1
-1
00
• 強制削除は do FPURGE^JRNUTIL(file)
• 指定fileを含めて削除
Journal有効
Journal
有効/
/無効
• Journal対象/非対象はDBごとの設定
• 非対象DBもTransaction中は強制Journal
• CACHETEMPとProcess Private Globalは (Transaction
中も) Journal非対象
• 該当プロセスのみJournal有効/無効
do DISABLE^%NOJRN / do ENABLE^%NOJRN
• システム全体のJournal有効/無効
do INT^JRNSTOP() / do INT^JRNSTART()
• Journalの紹介
• Journalの基礎
• Journalの管理
• Journalの応用Tips
Journal.Restore API
• Caché 2011.1以降, Restoreの自動化実現
他システムのJournal もOK
• “他システムのJournal”もOK
• JournalLog=-1 を指定する
• “指定DBの指定Globalのみ実行”もOK
• 従来の ^JRNRESTO もサポート継続
%SYS.Journal.
SYS.Journal.Record
Record API
• 簡単に扱うなら List クエリ
• 速度を追求したいなら NextAddress を使っ
て1レコードずつ確認
• Global名などで絞り込みOK
Journalプロファイル
Journal
プロファイル
• 管理ポータルより実行
Globalごとに、Journalに記録されているサ
Journalに記録されているサ
• Globalごとに
イズを計測 (単位: Byte)
• Global運用状況を知る手がかり
Transactionに絡む障害
Transaction
に絡む障害
• Transaction中プロセスがいる状態でCachéを
終了すると, 次回起動時Rollback処理が実行
される
• Journalをさかのぼるため起動に時間がかかる
• Performing Transaction Rollback
• Open Transaction中のJournalは削除対象外
象
• Journalが削除されない=Long Transactionを疑う
• ButtonsでOpen Transaction情報が取得できる
CACHETEMPの活用
CACHETEMP
の活用
• アプリの一時データなどJournalの必要がな
い更新は CACHETEMP or Process Private
Global を積極的に利用
• I/O減によるパフォーマンス向上, 容量削減
• Transaction中のエラー処理でRollbackを避け
たい処理で CACHETEMP を利用する
Journalとシステム凍結
Journal
とシステム凍結
• 現バージョンでは, Journal異常時もシステ
ムは動き続ける
• Journalの記録がないとDB整合性がとれないこ
とを理解する
• 一番多いエラーは肥大化に伴うDisk Full
• 2nd ディレクトリ設定を推奨
デ
定を推奨
• Journalの紹介
• Journalの基礎
• Journalの管理
• Journalの応用Tips
まとめ
まと
め
• JournalはDatabaseの変更履歴
• 履歴をうまく活用する
• 無駄なI/Oはなるべく省く
Caché Journal
について
インターシステムズジャパン(株)
サポ トスペシャリスト
サポートスペシャリスト
中橋 聖介