[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;
```



確認結果

![1604368116570.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/5ed306d7-e08a-a12f-f00f-9e6aa91cdb42.png)



# クローン元 : Refreshable Clone 作成

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

![1604367010825.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/07d29de8-5606-27f3-fc13-81efa04a8e75.png)



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

![1604368190157.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/0cdf6879-6b72-96f0-5e0a-89c52445ff3a.png)



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

![1604368745425.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/33679af6-bcbe-fc8f-b39e-bb43ce3a9466.png)



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

![1604369323678.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/a8d9314a-5d95-b2ba-4564-1d0bce15b62f.png)



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

![1604369345044.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/0383a7dc-7d9b-c912-b5ae-e153a13eaa31.png)



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

![1604369411070.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/21fab444-80eb-ddae-a37a-e730086f758b.png)





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

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

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



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

![1604369770307.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/4fbfb5bb-34bf-4a32-7adf-c8ded98df856.png)



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

![1604369910301.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/dcbe38bb-b495-ec75-eea8-08ed4a45a636.png)



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

![1604369944755.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/27ca3448-7e3f-5305-a204-b2a5a60548d7.png)



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

![1604369978283.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/df343cd9-0c7c-c5d1-f468-20f74a4ae787.png)



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

![1604370011290.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/82137fbd-319b-573a-d872-0aed21749aef.png)



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

![1604370050258.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/ef8b558d-609b-c82a-7f1b-54cb8e70a469.png)



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

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

![1604370233680.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/e1e64bec-91d9-8885-1850-a8ae2edf0777.png)



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

![1604370260499.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/79e7a535-2613-9221-2826-027e3f97dbc5.png)



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

![1604371021926.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/b37d493e-4b81-bdc3-ba50-d91174b7f464.png)



# 参考URL

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