データベースのバックアップと復元戦略
信頼性の高いバックアップでデータを保護します。PostgreSQLとMySQLのデータベースをダンプ・復元し、cronでバックアップを自動化し、ディスク障害や操作ミスに備えてポイントインタイムリカバリを理解します。
「データベースのバックアップと復元戦略」はCoddyKit上の無料Linux Server Deployment & SSH Masteryレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLinux Server Deployment & SSH Mastery学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Linux Server Deployment & SSH Masteryコースには全4レッスンが含まれています。
バックアップもセキュリティの一部
データベースをインストールし、アクセスを制限し、接続を保護しました。しかし、セキュリティを強化したサーバーでも、ディスク障害、誤って実行したDROP TABLE、ランサムウェアに対しては脆弱です。
バックアップは最後の防衛線です。データベースの安全性は、直近のテスト済みバックアップの安全性にかかっています。
論理バックアップと物理バックアップ
大きく分けて、次の2つの方法があります。
- 論理 — SQL文やデータをエクスポートします(例:
pg_dump、mysqldump)。移植性があり、人間が読みやすい一方、リストアには時間がかかります。 - 物理 — 生のデータファイルをコピーします。巨大なデータベースでは高速ですが、サーバーのバージョンに依存します。
多くの環境では、まず論理バックアップから始めます。
PostgreSQLデータベースのダンプ
pg_dumpは単一のデータベースをエクスポートします。カスタム形式(-Fc)は圧縮され、選択的なリストアに対応しています。
pg_dump -U appuser -Fc mydb > mydb_$(date +%F).dumpPostgreSQLのリストア
カスタム形式のダンプはpg_restoreでリストアします。プレーンSQLダンプの場合は、代わりにpsqlへパイプします。
createdb -U appuser mydb_restored
pg_restore -U appuser -d mydb_restored mydb_2026-05-30.dumpMySQLのダンプとリストア
MySQL/MariaDBでは、エクスポートにmysqldumpを、インポートにmysqlを使用します。ダンプはデフォルトでプレーンSQL形式です。
mysqldump -u appuser -p mydb > mydb_$(date +%F).sql
mysql -u appuser -p mydb_restored < mydb_2026-05-30.sqlすべてのデータベースのバックアップ
サーバー全体を取得するために、どちらのデータベースエンジンにもクラスター全体をダンプする機能があります。これは、大規模なアップグレードや移行の前に役立ちます。
pg_dumpall -U postgres > all_$(date +%F).sql
mysqldump -u root -p --all-databases > all_$(date +%F).sqlCronによる自動化
実行することを覚えておく必要があるバックアップは、いずれ忘れられます。cronでスケジュールしましょう。ダンプコマンドをスクリプトに記述し、毎晩実行します。
# crontab -e -> run at 02:30 every day
30 2 * * * /usr/local/bin/db_backup.sh >> /var/log/db_backup.log 2>&1シンプルなバックアップスクリプト
優れたスクリプトはファイル名にタイムスタンプを付け、古いファイルを削除してディスクがいっぱいになるのを防ぎます。この例では、14日分のダンプを保持します。
#!/bin/bash
DIR=/var/backups/db
pg_dump -U appuser -Fc mydb > $DIR/mydb_$(date +%F).dump
find $DIR -name 'mydb_*.dump' -mtime +14 -deleteオフサイトストレージ
同じサーバー上にあるバックアップは、サーバーとともに失われます。ダンプを別の場所(オブジェクトストレージ、別のホスト、またはその両方)にコピーしましょう。
バックアップスクリプトの最後の手順として、rsyncまたはクラウドCLIを使用します。
rsync -avz /var/backups/db/ backup@remote:/srv/db_backups/
# or: aws s3 cp $DIR/mydb_$(date +%F).dump s3://my-bucket/ポイントインタイムリカバリ
毎日のダンプでは、最大で1日分のデータが失われます。損失をゼロまたは最小限に抑えるには、継続的アーカイブ(PostgreSQLのWALアーカイブ、MySQLのバイナリログ)を有効にします。ベースバックアップと組み合わせることで、任意の時点にリストアできます。
これは本番データベースにおける最高水準の方法です。
ベストプラクティス
信頼できるバックアップにするには、次の点に注意します。
- リストアを定期的にテストする — テストしていないバックアップは、使えるかどうか分かりません
- バックアップジョブを自動化し、失敗を監視する
- コピーをオフサイトに保存する
- 最新の1世代だけでなく、複数世代を保持する
クイックチェック
バックアップに関する知識をテストしましょう。
まとめ
これで、データベースを保護する戦略が整いました。
pg_dump/mysqldumpによる論理ダンプと、pg_restore/mysqlによるリストア- 移行用のクラスター全体のダンプ
- cronによる自動化と古いバックアップの自動削除
- データ損失を最小限に抑えるオフサイトコピーとポイントインタイムリカバリ
必ずリストアをテストしてください。これで安全なデータベース運用が完成します。
よくある質問
「データベースのバックアップと復元戦略」レッスンは無料ですか?
はい。「データベースのバックアップと復元戦略」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Linux Server Deployment & SSH Masteryコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Linux Server Deployment & SSH Masteryコースには全4レッスンが含まれています。
「データベースのバックアップと復元戦略」で何を学びますか?
信頼性の高いバックアップでデータを保護します。PostgreSQLとMySQLのデータベースをダンプ・復元し、cronでバックアップを自動化し、ディスク障害や操作ミスに備えてポイントインタイムリカバリを理解します。 ブラウザで直接実行するハンズオンコードでLinux Server Deployment & SSH Masteryを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Linux Server Deployment & SSH Masteryを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのLinux Server Deployment & SSH Masteryは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「データベースのバックアップと復元戦略」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このLinux Server Deployment & SSH Masteryレッスンでコードを書いて実行できますか?
はい。すべてのLinux Server Deployment & SSH Masteryレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- PostgreSQL/MySQLのインストール
- データベースユーザーとアクセス制御
- データベース接続のセキュリティ保護
- データベースのバックアップと復元戦略