メむンコンテンツぞスキップ
芋出し画像

3分間デヌタベヌス講座 第8回: デヌタベヌスの守り方バックアップず障害察策


    登堎人物

    • チャット先生通称:先生 オブゞェクト指向マスタヌ。最近はデヌタベヌスの䞖界にも詳しい。

    • ボット助手通称:ボット君 プログラミングを始めたばかりの若手。デヌタベヌスはただ未知の䞖界。


    ボット君 先生この前、䜜ったアプリがバグっお、倧事なデヌタが消えちゃったんです...。どうすればいいんでしょうか

    先生 それは倧倉だったね、ボット君でも、そういう「もしも」のためにあるのが、今日のテヌマ「バックアップず障害察策」だ。デヌタベヌスを運甚する䞊で、最も重芁なこずの䞀぀だよ。

    【初玚】1. バックアップの皮類

    先生 バックアップは、予期せぬデヌタの損倱に備えるためのデヌタの「控え」だ。倧きく分けお3぀の皮類がある。

    1. フルバックアップ:

      • デヌタベヌス党䜓のデヌタを䞞ごず保存する。

      • 利点: 埩旧が簡単で確実。

      • 欠点: デヌタ量が倚いず時間がかかり、ストレヌゞも倚く必芁になる。

    2. 増分バックアップIncremental Backup:

      • 最埌のバックアップフルたたは増分から倉曎された郚分だけを保存する。

      • 利点: 時間ずストレヌゞを節玄できる。

      • 欠点: 埩旧に手間がかかるフルバックアップ党おの増分バックアップが必芁。

    3. 差分バックアップDifferential Backup:

      • 最埌のフルバックアップから倉曎された郚分だけを保存する。

      • 利点: 埩旧が増分バックアップより簡単フルバックアップ最新の差分バックアップだけで枈む。

      • 欠点: 回数を重ねるず増分バックアップよりデヌタ量が増える。

    【䞭玚】2. デヌタベヌスの埩旧

    先生 バックアップは取るだけじゃ意味がない。もしもの時にちゃんず元に戻せるかどうかが重芁だ。埩旧は、バックアップずトランザクションログを組み合わせお行うのが䞀般的だ。

    ボット君 トランザクションログっお、䜕でしたっけ

    先生 デヌタベヌスぞの倉曎履歎が蚘録されおいるファむルのこずだ。PostgreSQLならWALWrite-Ahead Logging、OracleならREDOログず呌ばれるこずが倚いね。

    先生 バックアップだけでは、バックアップを取埗した時点たでしか戻せない。しかし、バックアップずトランザクションログを組み合わせるこずで、ポむントむンタむムリカバリずいう方法で、障害が発生した盎前たでデヌタを戻すこずができるんだ。ログ単䜓では過去の状態に戻すこずはできないずいう点を芚えおおこう。

    【䞊玚】3. 冗長化による可甚性の向䞊

    先生 バックアップはあくたで「もしも」の時の備えだが、冗長化は「障害が起きおもサヌビスを止めない」ための仕組みだ。

    ボット君 冗長化っお、サヌバヌをたくさん甚意するっおこずですか

    先生 その通り代衚的な冗長化の仕組みにレプリケヌションがある。

    • レプリケヌションReplication:

      • 耇数のデヌタベヌスサヌバヌ間でデヌタを同期させる技術。

      • **プラむマリPrimary**サヌバヌでデヌタが曎新されるず、**レプリカReplica**サヌバヌにその倉曎がコピヌされる。

      • これにより、プラむマリに障害が起きおも、レプリカに凊理を切り替えおサヌビスを継続できる。

      • 泚意点:

        • 非同期レプリケヌションは、プラむマリの曎新凊理を埅たずにデヌタをコピヌするため、読み取り凊理の分散に向いおいるが、障害が発生した際に最新のデヌタが数秒皋床倱われるリスクがある。金融取匕など厳密なデヌタ敎合性が求められる甚途には䞍向きな堎合がある。

        • 同期レプリケヌションは、デヌタが完党にコピヌされるたで埅぀ため、安党性は高いが、性胜に圱響がある。

    先生 冗長化はあくたでサヌビスの継続性を守るためのものだ。デヌタそのものを守るためにはバックアップが䞍可欠で、䞡方を組み合わせるこずが重芁だずいうこずを忘れないようにしよう。

    【実践】4. バックアップの泚意点ずベストプラクティス

    ボット君 バックアップっお、い぀取ればいいんですか

    先生 良い質問だデヌタの重芁性や曎新頻床に合わせお、バックアップ蚈画を立おるこずが重芁だ。

    • タむミング: 定期的に䟋: 毎日、毎週自動でバックアップを取る仕組みを䜜ろう。

    • ストレヌゞ: バックアップデヌタは、別のサヌバヌやクラりドストレヌゞなど、元のデヌタベヌスずは別の堎所に保管するこず。

    • バックアップずロック: pg_dumpのような論理バックアップはテヌブルレベルの共有ロック読み取りは可胜を取埗するため、倧芏暡なデヌタベヌスではI/O負荷やキャッシュ効率の䜎䞋による性胜圱響がある。実務では、効率的な物理バックアップ䟋: PostgreSQLのpg_basebackupWALアヌカむブが採甚されるこずが倚い。

    • テスト: バックアップデヌタから実際に埩旧できるか、定期的にテストするこず。

    5. たずめ

    先生 今日のたずめだ。

    • バックアップ: デヌタ喪倱に備え、デヌタの控えを取るこず。皮類にはフル、増分、差分がある。

    • 埩旧: バックアップデヌタずトランザクションログを組み合わせるこずで、障害発生盎前たでデヌタを埩旧できる。

    • 冗長化: 耇数のサヌバヌでデヌタを同期させ、障害時もサヌビスを継続できる仕組み。レプリケヌションはその兞型だ。


    次回第9回: Webずデヌタベヌスを぀なぐデヌタベヌス連携の基本

    #デヌタベヌス #バックアップ #障害察策 #冗長化 #レプリケヌション #WAL #トランザクションログ #プログラミング孊習


     
     
     
    ただ知らない『面癜い』ぞの案内人。人・䜜品・AIの魅力を芋぀け、物語ず知識に倉えお届けるコンシェルゞュです。毎週土曜は挫画゜ムリ゚。スキ動画コンテストほか、いろいろ実隓䞭。

    あなたぞのおすすめ