私はマスター/スレーブ MySQL サーバーをセットアップしています。マスター データベースがハッキングされ、ハッカーがテーブルを削除したり、データベースを完全にドロップしたりすると、すべての変更がスレーブに伝播され、スレーブでも削除されてしまうのではないかと心配しています。
遅延を使用せずに、ハッカーがスレーブ データベースを破壊するのを防ぐ良い方法は何ですか?
答え1
MySQL マスター/スレーブ設定は、Web アプリケーションまたは Web サイトにフォールト トレラントなバックエンド データベースを作成する場合に適しています。
マスターデータベースに障害が発生した場合、アプリケーションをスレーブに切り替えることができます。したがって、このアプローチは、マスターをホストしているサーバーでハードウェアまたはソフトウェアの障害が発生した場合の災害復旧ソリューションとしてのみ機能します。
ただし、おっしゃるとおり、ハッカーがマスター データベースからデータを削除した場合、その変更はスレーブによってすぐに取得されます。
安全のために、スレーブ上のデータベースの自動バックアップを作成することをお勧めします。次のようなツールを使用できます。自動mysqlバックアップ。
バックアップが済んでいれば、スレーブ ログからデータベースを元の状態に復元できます。
独自のカスタム バックアップ ツールを設計する場合は、最新のバックアップを識別できるように、バックアップされたデータベースのタイムスタンプを必ず含めてください。
また、アプリケーション用に安全でフォールト トレラントなデータベース クラスターを構築する時間がないと思われる場合は、ApsaraDB などのセルフホスト型 MySQL ソリューションを使用することをお勧めします。この種のソリューションを使用すると、データベースは DDoS、SQL インジェクション、ブルート フォース攻撃から保護されます。
これが役に立つことを願っています。
答え2
アプリケーションから過剰な権限を削除します。権限を安全に削除できない限り、これによって 'DELETE FROM table` から保護される可能性は低くなります。
したがって、ポイントインタイム スナップショット (mysqldump --single-transaction / lvm / xtrabackup) としてバックアップを作成し、バイナリ ログの位置を保存します。バイナリ ログ ファイル (マスター ログとリレー ログが異なることに注意しながら記録にマッピング) を保存し、バイナリ ログが消去されないようにします。
指定されたポイントまでバイナリ ログを適用する際のリカバリ手順をテストして、必要なときに適切な情報と手順が確保されていることを確認します。