はじめに
AWS DBSの試験対策で練習問題を解き、ひたすら知識を詰め込みます。
データベース設計
RDS
- マルチAZを有効にしていると、AmazonRDSは別のアベイラビリティーゾーンのスタンバイレプリカに自動的に切り替わる。
- マルチAZでは、エンジンレベルのアップグレードは同期的に行われるのでダウンタイムが発生する。
- パラメータグループを変更した場合、動的パラメータはすぐに適用され、静的パラメータは再起動により適用される。
- リードレプリカを作成するときはスナップショットから読み取り専用インスタンスを作成し、バックアップ保持期間を0以外にし、自動バックアップを有効にする。
- RDSAPIやAWSCLIを使用してインスタンスを作成する場合、バックアップ保持期間は1日、マネコンは7日
- 自動バックアップを無効にすると自動バックアップの全てのデータが削除される。
- プライマリインスタンスを削除する前にリードレプリカを全て削除する必要がある。
Amazon Aurora
- フォールトインジェクションクエリを使用して、AuroraDBクラスターのフォールトトレランスをテスト可能。
- 任意のエンドポイントに接続するためにはカスタムエンドポイントを使用する。
- AuroraReplicaLagはリーダノードへの更新の際のラグ。リーダノードの構成をライターと同等以上にしつつ、書き込みを監視することで発生を予防可能。
- クローンをテストDBとして作成することが可能。
- バックトラック機能により高速な巻き戻しが可能。これはクラスター全体に影響する。
DynamoDB
- TTLを設定することでアイテムを自動で削除可能。
- 結果整合性は1秒あたり2回、強い整合性は1秒あたり1回、トランザクション読み取りは1秒あたり0.5回
展開および移行
- 基本的にダウンタイムが許容できデータも少ない場合はバックアップデータやCSVのエクスポート、インポート。
- ダウンタイムが許容されない場合はDMS
- 互換性のないDBの移行はDMS
- サイズが大きすぎる場合はSnowballを使用する。
LOBの移行
- 完全LOB:すべてのデータを移行するが、パフォーマンスが下がる可能性がある。
- 制限付きLOB:大きすぎるLOBは手動で移行する。
- インラインLOB:大きいデータと小さいデータを両方レプリケート。
RDS->Aurora
- RDSのリードレプリカをAuroraクラスターに移行しレプリカをプロモート
- RDSのスナップショットからAuroraを作成
- mysql dump、S3へバックアップを出力し復元、S3にCSVを作成し復元でも可能。
オンプレミスのOracle -> Aurora
- ダウンタイムゼロ 費用対効果も高くする
- SCTを使用して、スキーマの移行中にデータベースオブジェクトをMySQLに変換。DMSを使用して、フルロードおよびCDCを実行。
S3 -> Neptune
- 頂点とエッジが適切なヘッダー列フォーマットで異なる.csvファイルに指定されていることを確認
- Neptune DBインスタンスのIAMロールが、S3バケット内のファイルへのアクセスを許可する適切なアクセス許可で構成されていることを確認
- S3 VPCエンドポイントを作成し、データベースのローダーエンドポイントにHTTPPOSTを発行
DMS
- 移行の正確性を検証するためにはDMSデータ検証を構成してソースとターゲットのデータを比較する。
- RedshiftやS3への移行もサポート。
- ターゲットDBインスタンスと同じAZにレプリケーションインスタンスを置くことでパフォーマンスを向上させることが可能。
- 移行の速度を上げるには
- 複数のAWSDMSタスクを作成する
- AWSDMS レプリケーションサーバーの容量を増やします。
- オンプレミスデータセンターとAWSの間にAWSDirectConnect接続を確立します。
管理および運用
DynamoDB
- バックアップと復元の全てのAPIはCloudTrailで記録可能。
- バックアップは読み書きの容量、LSI、課金モードを保持する。
- AutoScalingポリシー、IAMポリシーは手動で再設定する。
- 自動バックアップは単一のリージョンのみで使用可能。
- GSIは結果整合性のみをサポート。
監視およびトラブルシューティング
RDS
- メモリ使用率は拡張モニタリングでのみ有効。
- Enhance MonitoringでOSのメトリックを監視可能。
- RDS Performance Insightsでパフォーマンスに影響の与える問題の分析が可能。
セキュリティ
RDS
- 暗号化されたスナップショットを別のAWSアカウントと共有する
- ターゲットアカウントをカスタム(デフォルト以外)のKMSキーに追加
- カスタマー管理キーを使用してスナップショットをコピーしてから、ターゲットアカウントとスナップショットを共有
- ターゲットアカウントから共有DBスナップショットをコピー
- RDSを後から暗号化する
- 暗号化されていないRDSDBインスタンスのスナップショットを作成
- スナップショットの暗号化されたコピーを介して暗号化されたスナップショットを作成
- この新しい暗号化されたスナップショットを新しいDBインスタンスに復元
- 暗号化されたスナップショットを別リージョンにコピーするには、宛先リージョンのKMSキーを指定する。
IAM
- 複数のIAMユーザやロールを同一のDBアカウントにマップ可能。
- EC2でDBが実行されている場合はインスタンスプロファイルのクレデンシャルでアクセス可能。
- IAMDB認証は1秒あたり最大200接続まで。
- 設定できるのはMysqlとPostgreSQLのみ。