LSN
特徴洗い出し
大きな値ほど最近のレコード
シーケンシャル
これを使ってデータベースを復旧させるためにはログチェーンが壊れていないことが前提
データベースが初めてバックアップされてから管理される
他にも復旧モデルが切り替えられたときというタイミングもある LSNはバックアップの最後から始まっている必要がある
バックアップのとり方で(データベース、部分、ファイル)ちょっと変わるみたい
復元する時点を追跡できる
最も古いログレコードのログシーケンス番号
再実行を開始する必要があるログレコードのログシーケンス番号
データベース全体の最新バックアップのログシーケンス番号
database_backup_lsnは、バックアップの開始時にトリガーされるチェックポイントの先頭です。 データベースがアイドル状態で、レプリケーションが構成されていないときにバックアップが実行された場合、このログシーケンス番号はfirst_lsnと同じになります。 それ以外の場合はnull
差分バックアップのベースLSN。シングルベースの差分バックアップの場合、differential_base_lsn以上のログシーケンス番号に関する変更が差分バックアップに含められます。マルチベースの差分バックアップの場合はNULLで、ベースLSNはファイルレベルで決定される必要があります。差分バックアップ以外の種類の場合は、常に NULL です。
とにかく最新のバックアップ一式を揃える場合、これでとれる?
1. 一番新しい完全バックアップを取得する
後で使うcheckpoint_lsn(完全)を取得する
完全と差分は必ずfirst_lsn = checkpoint_lsn?
checkpoint_lsn(完全)が一致するバックアップを取得する
完全バックアップがとられて以降すべての、差分バックアップ、トランザクションログバックアップが取得できるはず
2. 一番新しい差分バックアップを取得する
後で使うcheckpoint_lsn(差分)を取得する
3. checkpoint_lsn(差分)以上のトランザクションログバックアップを取得する
table:_
type first_lsn last_lsn checkpoint_lsn database_backup_lsn
完全 001... 001... 000...
ログ 001... 001...
... 001...
ログ 001...
... 001...
完全最新 002... 002... 001...
ログ 002... 002...
... 002...
ログ 002...
差分 456... 456... 002...
ログ 456... 002...
... 002...
ログ 002...
Copy Only 111... 111... 002...
ログ 111... 002...
... 002...
ログ 002...
差分最新 789... 789... 002...
ログ 789... 002...
... 002...
ログ 002...
... 002...
ログ最新 002...
(完全) 003... 003...
first_lsn last_lsn checkpoint_lsn database_backup_lsn
完全バックアップ
自分のfirst_lsn = 自分のcheckpoint_lsn = 次のログバックアップのcheck_point_lsn = 次に完全バックアップがくるまでのバックアップのdatabase_backup_lsn
差分バックアップ、完全バックアップ(Copy Only)
自分のfirst_lsn = 自分のcheckpoint_lsn = 次のログバックアップのcheck_point_lsn
参考
関連