[Oracle Cloud] Autonomous Database の Refreshable Clone で書き込みと読み込みワークロードを分割


はじめに

Autonomous Database に、Refreshable Clone と呼ばれる機能があります。日本語では「更新可能なクローン」と表現されています。既に稼働している Autonomous Database をクローン元として、新たに読み込み専用の Autonomous Database を作成する機能です。書き込みワークロードと読み込みワークロードを分離することが出来て、性能向上に使えます。

一点注意点があり、クローン元とのデータ同期(Refresh)はリアルタイムでは行われません。Oracle Cloud のコンソール画面や OCI CLI などを使い、データ同期の命令が必要です。自動的にデータ同期を行いたい場合は、Linux の cron や、Autonomous Database の Oracle Scheduler に入れると良いでしょう。

Refreshable Clone のもうちょっと詳しい説明は次のURLに書かれています。
https://speakerdeck.com/oracle4engineer/autonomous-database-cloud-ji-shu-xiang-xi?slide=82

今回の記事では、この Refreshable Clone を使って、データ同期操作をする方法を紹介します。

クローン元 : Test Table 作成

適当に Autonomous Database を作成して、テストデータを格納します。TEST01テーブルに、Insert でデータを入れます。

INSERT INTO TEST01 (NAME, ID) VALUES ('sugi', '0001');
COMMIT;

確認します

SELECT * FROM TEST01;

確認結果

クローン元 : Refreshable Clone 作成

クローン元で、Create Clone を押します。

Clone Type で Refreshable Clone を選択します。CPU リソースは、好きなものを選択できます。クローン元の CPU とは関係ありません。各種パラメータ入力後、Create を押します。

Provisioning のステータスになります。Refreshable Clone の作成完了まで、自分の環境では8分ほど掛かりました。

8分後に、Available となります。

なお、この段階で、Autonomous Database の一覧に表示されています。

Refreshable Clone 先で、クローン元データを確認してみます。TEST01 テーブルに格納した sugi 行がありますね。無事に Clone できています。

クローン先 : データ更新して Refresh

それでは次に、クローン元でデータを更新したのちに、データ同期(Refresh)を行います。
Source 元でテストデータを新たに作成します。

INSERT INTO TEST01 (NAME, ID) VALUES ('mount', '0002');
COMMIT;

クローン先で、Refresh Clone を選択します。

どの時点のデータをリフレッシュするか指定します。最小1分前、最大7日前を指定できます。今回は、1分前の最新データでリフレッシュをします。一旦、選択肢の中から一番下のものを選びます。

エラーで怒られます。1分前の時刻を教えてくれるので、黄色い部分をコピーします。

時刻部分をマウスで選択して

貼り付けて Refreshをします。これで簡単に1分前が指定できます。

UPDATINGとなります。なお、UPDATING の間も読み込みクエリーは実行可能です。(性能影響はあるかも)。自分の環境では、約2分で Refresh が完了しました。

クローン先 : Refreshable Clone のスケール変更

余談ですが、Refreshable Clone 先で CPU スケールの変更ができるか確認してみます。Scale Up/Down を選択します。

CPU 数の変更、Auto Scaling の変更が出来ます。

Clone 先でも問題なく変更可能

参考URL

Autonomous Database Cloud 技術詳細
https://speakerdeck.com/oracle4engineer/autonomous-database-cloud-ji-shu-xiang-xi?slide=83