この記事では、Amazon Auroraの機能の1つであるログストリーミング機能について、紹介します。
Amazon Auroraのログストリーミング機能は、その高性能と高可用性を実現する中核的な仕組みです。
Amazon Auroraの概要は以下を参照ください。
Amazon Auroraのログストリーミング機能の特徴
Amazon Auroraのログストリーミング機能の主な特徴は以下の通りです。
ログ中心アーキテクチャ
- “The log is the database” という考え方に基づいています。
- データベースの変更はすべてredoログとして記録されます。
ログの直接ストリーミング
- redoログはデータベースエンジンからストレージ層に直接ストリーミングされます。
- 従来のRDBMSのように、データページの変更を待つ必要がありません。
非同期処理
- ログのストリーミングは非同期で行われます。
- データベースエンジンは、ログを送信した後すぐに次の操作に進めます。
並列処理
- 複数のログエントリを並列でストリーミングおよび処理できます。
- これにより、高いスループットを実現しています。
バックグラウンドでのログ適用
- ストリーミングされたログは、ストレージ層でバックグラウンドで適用されます。
- データベースエンジンの負荷を軽減し、パフォーマンスを向上させています。
チェックポイント不要
- 従来のRDBMSで必要だったチェックポイント処理が不要になります。
- これにより、I/O負荷が大幅に軽減されます。
チェックポイント処理とは、データベース管理システム(DBMS)において、データの一貫性と耐障害性を確保するための重要な機能です。
メモリ上のデータをディスクに反映させ、データの永続性を確保することで、システム障害発生時の復旧を容易にできるという利点があります。
以下のような流れで処理されます。
- 実行中のトランザクションを一時停止します。
- メモリバッファの内容をディスクに書き出します。
- チェックポイントレコードを記録します。
- 中断したトランザクションを再開します。
高速リカバリ
- 障害発生時、ログを再生するだけで迅速にリカバリできます。
- 通常の操作と同じ処理を行うため、特別なリカバリ処理が不要です。
レプリケーションの効率化
- リードレプリカへのレプリケーションもログストリーミングで行われます。
- データ全体ではなくログのみを転送するため、ネットワーク負荷が軽減されます。
Amazon Auroraのログストリーミング機能の利点
Amazon Auroraのログストリーミング機能には以下のような具体的な利点があります。
パフォーマンスの向上
- redoログを直接ストレージ層にストリーミングすることで、データベースエンジンの負荷が軽減されます。
- 非同期・並列処理により、高いスループットを実現しています。
I/O負荷の軽減
- 従来のRDBMSで必要だったチェックポイント処理が不要になり、I/O負荷が大幅に軽減されます。
- データページの変更を待つ必要がなくなるため、書き込み性能が向上します。
高速なリカバリ
- 障害発生時、ログを再生するだけで迅速にリカバリできます。
- 特別なリカバリ処理が不要なため、ダウンタイムを最小限に抑えられます。
効率的なレプリケーション
- リードレプリカへのレプリケーションもログストリーミングで行われるため、ネットワーク負荷が軽減されます。
- データ全体ではなくログのみを転送するため、レプリケーションの効率が向上します。
ストレージの効率化
- “The log is the database”の考え方により、ストレージ層でログを直接適用できるため、ストレージの使用効率が向上します。
スケーラビリティの向上
- ログストリーミングにより、ストレージ層を独立してスケールアウトできます。
簡素化されたアーキテクチャ
- チェックポイントやクラッシュリカバリに対する特殊処理が不要になり、システムが簡素化されます。
これらの利点により、Auroraは高性能、高可用性、スケーラビリティを実現し、クラウド環境に最適化されたデータベースサービスとなっています。
Amazon Auroraのログストリーミング機能の処理の流れ
Amazon Auroraのログストリーミング機能の処理の流れは以下の通りです。
- クライアントからのSQL文実行
クライアントがSQL文を発行し、データベースエンジンに送信します。 - Redoログの生成
データベースエンジンは、SQL文に基づいてRedoログを生成します。
このログには、データベースに対する変更内容が記録されます。 - ログのストリーミング
生成されたRedoログは、非同期かつ並列で直接ストレージ層にストリーミングされます。
この際、データベースエンジンは次の操作に即座に移行できます。 - ストレージ層でのログ処理
ストレージ層は受け取ったRedoログをバッファリングし、バックグラウンドで処理します。 - データページへの適用
データページは、SQL Serverなどのリレーショナルデータベース管理システム(RDBMS)において、データを格納する基本的な単位です。
ストレージ層は、バッファリングされたログをバックグラウンドでデータページに適用します。
これにより、データベースエンジンの負荷が軽減されます。 - リードレプリカへの伝播
ストリーミングされたログは、リードレプリカにも効率的に転送されます。
リードレプリカは、このログを使用して自身のデータを更新します。 - 高速リカバリ
障害発生時には、ストレージ層に保存されているRedoログを使用して、迅速にデータベースを復旧できます。
この仕組みにより、Auroraは高いパフォーマンスと耐障害性を実現しています。データベースエンジンの負荷が軽減され、ストレージ層でのバックグラウンド処理により、全体的な処理効率が向上しています。
Amazon Auroraのログストリーミング機能の注意点
Amazon Auroraのログストリーミング機能に関する主な注意点は以下の通りです。
- パフォーマンスへの影響
ログストリーミングを有効にすると、若干のパフォーマンスオーバーヘッドが発生する可能性があります。
特に高負荷時には注意が必要です。 - ストレージ容量の増加
ログデータが継続的にストリーミングされるため、ストレージ使用量が増加します。
適切なストレージ管理が必要です。 - ネットワーク帯域幅
ログデータの転送にネットワーク帯域幅を消費するため、他のネットワークトラフィックに影響を与える可能性があります。 - セキュリティ考慮事項
ログにはセンシティブな情報が含まれる可能性があるため、適切なアクセス制御と暗号化が必要です。 - 設定の複雑さ
ログストリーミングの設定や監視には、一定の専門知識が必要です。 - コスト増加
ログデータの保存や転送に関連するコストが発生します。
長期保存する場合は特に注意が必要です。 - 復旧時間への影響
大量のログデータがある場合、障害からの復旧に時間がかかる可能性があります。 - 互換性の問題
一部のAuroraの機能や設定と互換性がない場合があります。事前の確認が必要です。 - モニタリングの重要性
ログストリーミングの状態を定期的にモニタリングし、問題がないか確認する必要があります。
これらの点に注意しながら、ログストリーミング機能を適切に活用することが重要です。
まとめ
今回はAmazon Auroraの機能の1つであるログストリーミング機能について、紹介します。
ご参考になれば、幸いです。
以上になります。ありがとうございました。
参考
https://qiita.com/kumagi/items/67f9ac0fb4e6f70c056d
https://mrasu.hatenablog.jp/entry/2019/04/29/143206
https://www.ashisuto.co.jp/pr/west/article/column-202211.html
https://blog.devplatform.techmatrix.jp/blog/aurora-das-athena-2/
https://spring-mt.hatenablog.com/entry/2021/03/08/235911
https://dev.classmethod.jp/articles/amazon-aurora-audit-events-cloudwatch-logs/
https://blog.serverworks.co.jp/activity_stream
コメント