はじめに
最近、耳にするようになったOracle Cloud Infrastructure(以下、OCI)ですが、2017年の誕生からあっという間に世界各国にリージョンが拡がっているようです。今回の記事のAutonomous Database(以下、ADB) も、2018年の誕生からどれくらいの稼働数になっているのか、その数に興味深々です。
さて今回は、とある統合DB環境でこのADBの無停止オートスケールアップが活躍している内容を書きます。
どんなシステム?
こんな構成のシステムです。SNSへの一斉配信で、一瞬で反響がくるシステムです。
なぜ、ADB?
一言で言うと私が楽になりたいからです。
- DBサーバのスケールアップ・ダウンの作業を深夜に実施したくない。(一般的なDBだと、停止が必要だから)
- セキュリティパッチ適用のために週末をつぶしたくない。(パッチリリースが多い)
- DBチューニングの時間を短縮したい。(ある程度は自動チューニング機能に任せたい)
- ハードウェア障害での影響を最小化したい。(HA構成では不十分だから)
- Standard Edition Twoでは利用できない便利なEnterprise Edition機能を、気にせず使いたい。
- Oracleライセンス管理の手間を軽減したい。
本題のADBのスケジュールドスケールアップ
もちろん、Oracle EventsやOracle MonitoringやOracle Functionsを使って、今風に組むことはできそうですが、古典的な方法が一番、短時間でできたので、その方法を書きます。
oci cli環境のセットアップは、別のQiita記事や他ブログにもありますので、完了している前提です。
また、通常時は所有ライセンス数の制限により、Autoscaling=OFF, CPU数=3core, ライセンスモデル=BYOL で動いています。SNS配信直前に拡張をして、落ち着いた頃に元に戻します。
$HOME/bin/oci db autonomous-database update --autonomous-database-id ocid1... --license-model LICENSE_INCLUDED --wait-for-state AVAILABLE
$HOME/bin/oci db autonomous-database update --autonomous-database-id ocid1... --cpu-core-count 10 --wait-for-state AVAILABLE
$HOME/bin/oci db autonomous-database update --autonomous-database-id ocid1... --is-auto-scaling-enabled true --wait-for-state AVAILABLE
このままのサイズ(10core)で動かし続けると、ランニングコストが半端なく増加するので、元に戻す方法も記載します。
$HOME/bin/oci db autonomous-database update --autonomous-database-id ocid1... --is-auto-scaling-enabled false --wait-for-state AVAILABLE
$HOME/bin/oci db autonomous-database update --autonomous-database-id ocid1... --cpu-core-count 3 --wait-for-state AVAILABLE
$HOME/bin/oci db autonomous-database update --autonomous-database-id ocid1... --license-model BRING_YOUR_OWN_LICENSE --wait-for-state AVAILABLE
あとは、上記をそれぞれスクリプトにして、古典的な方法ですがcrondで実行します。SNS配信内容によりCPU拡張値が変わるため、引数として渡す構成にしています。
30 18 01 12 * $HOME/script/IncLic_Up_ASon.bash 10 >> $HOME/clilog/scaleup.log 2>&1
30 01 02 12 * $HOME/script/BYOL_Down_ASoff.bash 3 >> $HOME/clilog/scaledown.log 2>&1
一応、ちゃんと処理が完了したかは、slackに通知するようにして、最低限の確認は実施するようにしています。
あとがき
なぜ、私がADBやOCIをオススメしているのかを書きます。
それは、ADBを含め、沢山のサービスをAlways Freeで無料で使えるからです。Oracle DBの学習用でも、検証用途でも、個人の趣味サイトでも使えるからです。(Autoscalingは無料では使えませんが)
ぜひ、Always Freeも試してみてください!