LoginSignup
15
0

More than 3 years have passed since last update.

古典的な手法でAutonomous Database の スケジュールドスケールアップを行う

Last updated at Posted at 2020-12-01

はじめに

最近、耳にするようになったOracle Cloud Infrastructure(以下、OCI)ですが、2017年の誕生からあっという間に世界各国にリージョンが拡がっているようです。今回の記事のAutonomous Database(以下、ADB) も、2018年の誕生からどれくらいの稼働数になっているのか、その数に興味深々です。

さて今回は、とある統合DB環境でこのADBの無停止オートスケールアップが活躍している内容を書きます。

どんなシステム?

こんな構成のシステムです。SNSへの一斉配信で、一瞬で反響がくるシステムです。

sample1.png

なぜ、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配信直前に拡張をして、落ち着いた頃に元に戻します。

ライセンスモデルをBYOLから、ライセンス込みへ変更
$HOME/bin/oci db autonomous-database update --autonomous-database-id ocid1... --license-model LICENSE_INCLUDED  --wait-for-state AVAILABLE
CPU数を10に拡張(20vcpu相当)
$HOME/bin/oci db autonomous-database update --autonomous-database-id ocid1... --cpu-core-count 10 --wait-for-state AVAILABLE
オートスケーリングを有効化(10core~30coreの範囲で負荷に応じて無停止&高速スケールアップ可能な状態に)
$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
CPU数を3にスケールダウン
$HOME/bin/oci db autonomous-database update --autonomous-database-id ocid1... --cpu-core-count 3 --wait-for-state AVAILABLE
ライセンスモデルをライセンス込みからBYOLへ変更
$HOME/bin/oci db autonomous-database update --autonomous-database-id ocid1... --license-model BRING_YOUR_OWN_LICENSE --wait-for-state AVAILABLE

あとは、上記をそれぞれスクリプトにして、古典的な方法ですがcrondで実行します。SNS配信内容によりCPU拡張値が変わるため、引数として渡す構成にしています。

/var/spool/cron/oracle
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に通知するようにして、最低限の確認は実施するようにしています。

image.png

あとがき

なぜ、私がADBやOCIをオススメしているのかを書きます。

それは、ADBを含め、沢山のサービスをAlways Freeで無料で使えるからです。Oracle DBの学習用でも、検証用途でも、個人の趣味サイトでも使えるからです。(Autoscalingは無料では使えませんが)

ぜひ、Always Freeも試してみてください!

15
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
0