1日1%成長する ~AWS Aurora Mysql~

AWSの学習メモ

    レプリケーション
        Binlogのレプリケーションではない。
        Shared Multi-AZ Storageを使用していて、ここにMasterが書き込む。
            ※master/replicaは同様のデータを使用する
        ReplicaはShared Storageを参照して更新するのだが、
        ここで10~20ms程度の遅延が発生する。
        ただし、Shared Storageに書き込まれてさえいれば
        レプリケーションは機能するのでフェイルオーバーのデータロスはない。

    アダプティブスレッドプール
        RDSだとコネクション数に応じてスケールしない。
        Auroraはアクティブなスレッドにコネクションを集約していく。
        スレッドプール数は動的に調整される。
            -> r3.8xlインスタンスで同時5000まで可能

    フェイルオーバー
        クラッシュリカバリーの処理が常にストレージ側で行われている。
        40sec程度で対応する
    フェイルオーバーテスト
        SQLでノード、ディスク、ネットワーク障害をシュミレート可能
            Alter system crash[{instance|dispatcher|node}]
            Alter system simulate percentage_of_failure ....

            - ディスク障害もシュミレート可能

    - S3へ増分バックアップを継続的に行っている
    - ディスクの仕組みでパフォーマンス影響を与えない
    - ポイントタイムリカバリで5分前からBackup Retention Periodまで秒単位で復元可能

    Global Transaction ID support
        Aurora Mysql2.04以降で対応

    Auroraのバックアップの金額が見えるようになった
    昔は常に最新バージョンだったが今はバージョン指定が可能
    Custom Endpoints
        分析クエリー用、オンラインクエリ用と分けたい場合に利用可能
        ただし、通常のEndpointがあるのでこちらを使ってしまうと全てに振り分けられてしまう。
        そのため、カスタムエンドポイントを設ける

    Global Database
        一部のリージョンで対応。(バージニア北部、オハイオオレゴンアイルランド)
        リージョンをまたいだレプリケーションだが、
        レプリカには書き込みできない
            ※クロスレプリケーションはレプリ先に書き込み可能

    Aurora Serverless
        不可の少ないアプリケーション
        可変不可アプリケーション
        エンドポイントだけアプリから見える状態で、
        request routerが受け付ける。
        受け付けたあとに処理を振り分けるがこのときにinstanceを起動するケースもあるので、
        タイムアウトを1分くらいにしておく。
        また、0からスタート可能なのでリクエスト受付でインスタンス起動させて処理させることも可能。
            ※単純なクエリならコンソールから実行可能

    Perfomance Insights
        パフォーマンスの可視化。
        メモリ量が増えたり、本番に影響が出る可能性もあるため、
        開発やテスト環境など、パフォーマンスチェックのために利用する。

    Backtrack
        データベースの状態を瞬時に特定の時点へ巻き戻す
        一度、オンラインから外してもどす。
        また、ある地点に戻してからすすめることも可能。(DB全体を対象とする)
         ※ポイントタイムリカバリだとスナップショットから戻すなど時間がかかっていた
        チェンジレコードにつき$0.014なので直近のオペミスによる切り戻しなどで利用する

    Database cloning
        ストレージコストを増やすことなく、データベースをコピー可能。
        変更すると課金される。
        ユースケースだと本番のデータでのみ障害が起こるなど、
        プロダクションデータでのテストが必要な場合に利用可能。

    Lab modeに新しい機能をだしていく(ただし、実験バージョンなのであくまで確認用)