さてみんな、またまた面白い話の時間がやってきたよ。冗談抜きで!自分のデータベースが大事な情報が詰まった本だと想像してみて。もしその本のページをうっかり破っちゃったり、ドラゴン(もしくはハードディスクが「今こそ壊れるタイミングだ!」って思っちゃったり)に燃やされたらどうなる?現実でもファンタジーでも、情報は消えちゃうよね。そんな時に助けてくれるのがバックアップ、つまりデータの「命綱」なんだ。
バックアップ、つまり簡単に言うとバックアップを作ることは、データを別のファイルや場所に保存しておいて、もしもの時に復元できるようにするプロセスだよ。
バックアップは「何かあった時」の保険みたいなもの。ハードやソフトの障害からデータを復元したり、うっかりDELETEをWHEREなしで実行しちゃった時のリカバリ、さらに開発環境から本番環境への移行にも使える。あと、古いデータを「念のため」や履歴用にアーカイブする時にもよく使うよ。バックアップがなかったら、いざという時に何も残らないかも。
データ損失のリスク
じゃあ、実際にどんな危険がデータを消しちゃうのか話そう。これ、マジで怖いから!データベース管理者なら誰でも冷や汗かくような例をいくつか挙げるね:
ハードウェア障害。 ハードディスクは壊れるし、USBはなくすし、サーバーは時々「永遠のバカンス」に出ちゃう。
ユーザーのミス。
たとえば開発者がうっかりこんなクエリを実行しちゃう時:
DELETE FROM 学生;
WHEREを使わずにね。おめでとう、全学生データが消えたよ!(データベースの学部長じゃなくてよかったね)
悪意ある攻撃。
ハッカーがシステムを攻撃して、データを暗号化したり消したりすることもある。
自然災害。
映画みたいだけど、地震や洪水でサーバーが壊れることもあるんだ。
そして、安心感ってやつは何度あっても困らない。一度バックアップをちゃんと設定しておけば、あとでドラゴンにデータを返してもらおうと必死になるよりずっとマシだよ。
バックアップの主な利用シナリオ
バックアップがなぜ必要か分かったところで、実際にどんな時に役立つのか見てみよう。
障害後のデータ復元
普通に作業してたら、突然全部落ちた――データベースもサーバーもネットも。障害発生!バックアップがなかったら、最後にデータを保存したのがいつだったか思い出すしかない。でもバックアップがあれば、すぐにシステムを復元できる。たいていは障害直前のデータコピーを使うよ。例えば:
- サーバー全体の障害。 バックアップからデータベース全体を復元する。
- 特定テーブルの破損。 必要なテーブルだけ復元する。
サーバー間のデータ移行
例えば、データベースを別のサーバーに移したい時――ハードをアップグレードしたり、新しいサーバーをセットアップしたり。そんな時もバックアップが大活躍。古いサーバーでコピーを作って、新しいサーバーで展開するだけ。
データベースのバックアップを作るコマンド例:
pg_dump -U postgres -d 大学 -f 大学_バックアップ.sql
このコマンドは大学データベースのバックアップファイルを作って、他のサーバーで復元できるようにするよ。
長期保存用のデータアーカイブ
たまに、後で分析したり履歴として残したいデータがあるよね。例えば、過去10年分の注文データを一番古いものからアーカイブして、メインのデータベースの容量を空けるとか。
こうすることで:
- メインのデータベースの動作が速くなる。
- いつか必要になるかもしれない大事な履歴データを保存できる。
バックアップが助けてくれたリアルな例
バックアップの大切さが分かるリアルな話をいくつか紹介するね:
ハッカー攻撃からの復旧。 ある会社がランサムウェアで全データを失ったことがあった。でも前日に取っておいたバックアップだけが救いだった。攻撃の被害は2時間のダウンだけで済んで、ビジネスは守られたよ。
開発者のミス。(開発者だってミスするんだよね?)ある学生が卒論データのテーブルを消しちゃった。でもバックアップがあったおかげで、10分で全部元通り!
今回はここまで。これでバックアップがなぜ必要か、どんなリスクを防げるのか、どれくらいの頻度で作ればいいのか分かったよね。次のレクチャーではバックアップの種類についてもっと詳しく解説するから、自分の目的に合った方法を選べるようになるよ。じゃあ、また次のレクチャーで!
GO TO FULL VERSION