RDS
リードレプリカ
〇リードレプリカを持つDBインスタンスを停止したい場合
→リードレプリカを削除したのち、DBインスタンスを停止させます。リードレプリカを持ったままDBインスタンスは停止できません。
ポイントインタイムリカバリ(PITR)
〇ポイントインタイムリカバリを有効にしたい場合
・自動バックアップを設定する必要があり
→バックアップ保持期間を0以外に設定する。
→その上で以下の設定が必要。
【MySQL】…バイナリログ記録(バイナリロギング)を有効にする。
Aurora MySQL DB
■ 最大接続数(max_connections)
〇最大接続数(max_connections)を増やしたい場合
DBクラスターへの接続が多い場合、接続エラーが起きる場合があります。
インスタンスクラスによって最大接続数のデフォルト値が決まっているため、それ以上の接続を受け付けたい場合は、このインスタンスをメモリ量のより多いDBインスタンスクラスにスケールすることで最大接続数を増やすことができます。
別の言い方だと、インスタンスサイズを大きくする必要があります。
また、接続制限のデフォルトをカスタマイズする新しいパラメータグループを作成することによって、最大接続数を増やすことも可能?
DynamoDB
■ グローバルテーブル
複数リージョンにまたがるマルチマスタのデータベース
データの変更が各レプリカへ自動レプリケートされるため高可用性が担保される。
災害対策などにも用いられる。
グローバルテーブルを構築後、各テーブルのポイントインタイムリカバリーを有効にすることで、数分での復旧時間目標(RTO)・復旧ポイント目標(RPO)を確保できる。
■ DAX
〇リクエストの処理方法
・リクエストが結果整合性(デフォルト)
→DAX内に該当の項目がある場合(キャッシュヒット)、DynamoDBにはアクセスせずにアプリケーションに応答を返します。
→DAX内に該当の項目がない場合(キャッシュミス)、リクエストをDynamoDBに渡し、DynamoDBからの応答を受信後、アプリケーションに応答を返します。
同時にDAX内にキャッシュとして保持します。
・リクエストが強力な整合性
→そもそもDAX内でキャッシュを保持することをしないので、リクエストをそのままDynamoDBに渡し、DynamoDBからの応答を受信後、アプリケーションに応答を返します。
■ IAM
アクセス制御を問われている場合は基本的にIAM関連の問題。
〇外部アプリケーションが特定のパーティションキー値にアクセスしたい場合
「dynamodb:LeadingKeys条件キー」
→ユーザーが特定のパーティションキー値を持つ項目にアクセスできるようにします。
TTL
・TTL 属性の値は、Number型であることが必須。
ほかのBinary型やString型を設定してもTTLは機能しない。
・TTL 属性の値は、Unix エポック時間形式のタイムスタンプ (秒単位) である必要があります。
・有効期限は5年以上前の値に設定すれば、無期限となりTTLでの削除はされなくなります。はるか未来日を設定して実質的な無制限を設定するよりも、0を設定したほうが簡単かつ値の間違いなどがなく安心です。
暗号化
どのDBにおいても、構築または移行後に暗号化の設定で有効化・無効化することはできません。
〇暗号化したいDBがある場合
【RDS、Aurora、】
① 暗号化したいDBインスタンスのスナップショットを作成
② そのスナップショットのコピー作成時にオプションで「暗号化を有効化」を設定し、KMS暗号化キーを指定してコピー
③ コピーしたスナップショットから新しいDBインスタンスとしてリストア
【DocumentDB】
① 暗号化したいDocumentDBクラスターのスナップショットを作成
② スナップショット保管時にオプションで「暗号化を有効化」に設定
③ リストア時にKMS暗号化キーを指定し、暗号化されたクラスターとして新規に作成
【DynamoDB】
デフォルトでKMS暗号化キーによる暗号化が実施されている。
復号は透過的に行われているため、そこについての使用者の意識はあまりない。
AWS Backup
最短で1時間ごとにバックアップを自動取得可能
移行
〇100TB規模のデータ移行を行う場合
・AWS DMS+AWS Snowball Edge端末2台が安心して移行できる
→ネットワーク経由でも可能(VPN経由)だが、ネットワーク帯域幅の問題で移行期限に間に合わないことがある。