1K Views
August 11, 24
スライド概要
ソフトウェアエンジニア
Amazon Auroraのバックアップリストアをやってみた話 Takuma Kobayashi, Finatext © 2024 Finatext Holdings Ltd.
自己紹介 ● 小林拓磨(X: @takuma5884rbb) ● 2023 (株)Finatext 入社 ● ソフトウェア・AWSエンジニア ○ Go・AWSを用いた証券取引サービスの開発・運用 ○ Terraformを用いたIaC ○ サマーインターン運営 ● 2024 Japan AWS Jr. Champions ● 趣味 ○ 料理 ○ ランニング © 2024 Finatext Holdings Ltd. 1
事業継続計画(BCP) 自然災害などの緊急事態においても事業への被害を抑えつつ、 中核となる事業の継続や通常業務の早期復旧を目的とする計画 金融業界においては、顧客の金融資産の取り扱いにクリティカルな影響が出ないことが求められる ● ● 国民の金融資産の保全を図り、国民生活や民間の金融・経済活動が中断する事態をできるだけ 避け、その早期回復に努める。 金融庁の業務継続体制の確保に向けて、職員の安全を確保し、必要な執行体制を整備した上で、 適切に行政資源を配分する。 (金融庁業務継続計画(首都直下地震対応編)の概要、 https://www.fsa.go.jp/policy/bcp/12.3.pdf) © 2024 Finatext Holdings Ltd. 2
備えあれば憂いなし 有事の対応能力の向上のため、 業務復旧の訓練を定常的に実施する必要がある! © 2024 Finatext Holdings Ltd. 3
備えあれば憂いなし 今回は特定のデータが利用できなくなった状況を想定し、 バックアップから復元する手順を実際に行った © 2024 Finatext Holdings Ltd. 4
Amazon Auroraとは? ● そもそも、Amazon Relational Database Service(RDS)という、RDBを扱うサービスがある ● RDSで使える、Amazon独自のMySQL互換のDBエンジンがAmazon Aurora ● 単にDBインスタンスを管理してくれる以上に嬉しい点がいろいろある © 2024 Finatext Holdings Ltd. 5
RDS(Aurora)のバックアップ 1. スナップショットからの復元 a. バックアップデータからクラスターを復元する 2. ポイントインタイムリカバリ a. 自動バックアップからクラスターを特定の時間の状態で復元する b. Auroraだとデフォルトで有効 3. バックトラック a. クラスターを特定の時間の状態まで巻き戻す b. クエリを逆から実行していくイメージ 上から順に保持期間が長く、復元にかかる時間が長い © 2024 Finatext Holdings Ltd. 6
RDS(Aurora)のバックアップ 1. スナップショットからの復元 a. バックアップデータからクラスターを復元する 2. ポイントインタイムリカバリ a. 自動バックアップからクラスターを特定の時間の状態で復元する b. Auroraだとデフォルトで有効 3. バックトラック a. クラスターを特定の時間の状態まで巻き戻す b. クエリを逆から実行していくイメージ 上から順に保持期間が長く、復元にかかる時間が長い © 2024 Finatext Holdings Ltd. 7
ポイントインタイムリカバリ ● 指定した時間までに保持された最新のバックアップを用い、クラスターを復元する ● RDSでは5分前〜35日前まで遡れる ○ それ以上遡りたい時はスナップショットからの復元が必要 © 2024 Finatext Holdings Ltd. 8
訓練開始 where句なしで deleteしちゃった!!! © 2024 Finatext Holdings Ltd. 9
訓練開始 1. auditログから、問題のクエリを実行した時刻を確認する a. トランザクションを使った場合はcommitした時刻 2. 上記の時刻直前を指定してポイントインタイムリカバリを実行 3. 復元されたクラスターのデータを確認 4. 問題なければ、アプリケーションとの接続処理を行う a. アプリ側のDB Host指定を変更する b. 古いクラスタを引退させ、新しいクラスタを元の名前に変更する © 2024 Finatext Holdings Ltd. 10
audit logの確認 w/CloudWatch Logs Insights audit = 監査 DBに実行されたクエリを記録している © 2024 Finatext Holdings Ltd. 11
audit logの確認 w/CloudWatch Logs Insights audit = 監査 DBに実行されたクエリを記録している ログの記録時間 (ちょっと遅れる) クエリの実行時間 こっちを見ないと 復元したい状態がズレる(一敗) © 2024 Finatext Holdings Ltd. 12
クラスタ復元 巻き戻したい時刻を指定 © 2024 Finatext Holdings Ltd. 13
クラスタ復元時の注意点/インスタンス名の決定 recovered-db と入力すると recovered-db-cluster になる インスタンス名は既存と重複できないが、 クラスタ名はエンドポイント名に関わるので、 エンドポイント名が変わってしまう © 2024 Finatext Holdings Ltd. 14
RDS(Aurora)のバックアップ クラスタの復元が終わり、データの確認ができたら アプリケーションに繋ぎ直して終了! お疲れ様でした © 2024 Finatext Holdings Ltd. 15
まとめ ● バックアップを取っておくと簡単にDBクラスターを復元できる ● バックアップ、audit logの設定は簡単なのでやっておこう(逆にないと大変) ● 手順を見るだけだと簡単に見えるが、 要件をしっかり定めた上で実際にやってみると意外とはまりポイントがある ● 開発と運用両方やると面白いよ © 2024 Finatext Holdings Ltd. 16
宣伝 ● イベントやります © 2024 Finatext Holdings Ltd. 17