Database Cloud Service (DBCS) 上の自動バックアップについて調べてみた

## はじめに

サービスの利用は比較的簡易なDBCSだが、有事の際に必須となるバックアップについて詳細を把握していなかったので、この機会に色々と調べてみました。
※本記事は最も利用の多いであろう自動バックアップにフォーカスしています。
　手動でRMANを構成するパターンとは別ものとなります。


なお、DBCSにおける自動バックアップの前提条件および、設定方法自体は[チュートリアル](https://oracle-japan.github.io/ocitutorials/database/dbcs104-backup/)に細かく説明されているので割愛。

## バックアップのライフサイクルは?
保存世代数は7日、15日、30日、45日、60日から選択可能
バックアップの実行タイミングもリスト形式で選択可能　※UTC表記
より詳細にバックアップ開始時間を制御したい場合は、OCIウェブコンソール上からサービスリクエストを挙げることで調整も可能

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2471135/4dbfd72d-903b-e3ea-ef01-b2d16075b2af.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2471135/dc487940-81ba-3284-395a-8168f6fa0637.png)


週次で完全バックアップが実行
日次で増分バックアップが実行（週次の完全バックアップが実行後の6日間に毎日作成される）
アーカイブREDOログのバックアップ（最小頻度は60分ごと）。
最新のアーカイブREDOログのバックアップを使用することで、最小限のデータ損失でデータベースをリカバリできるよう。
ただ、**最小頻度が60分ということはRPOの観点で考慮する必要あり**。

## バックアップの保持について
自動で取得されたバックアップは、選択した保持期間(7日、15日、30日、45日、60日)の終了時に自動的に削除される。
例えば60日の保持期間にしていたが30日に保持期間を変更実施といった、保持期間を短くした場合は、更新された保持期間外に存在する既存のバックアップはシステムによって削除されてしまうので注意が必要。
>保持期間の変更 - 今後、データベースの自動バックアップの保持期間を短くすると、更新された保持期間外に存在する既存のバックアップはシステムによって削除されます。

また、対象DBCSを削除すると自動バックアップで取得したバックアップも併せて削除されるのでその点も注意が必要。


## バックアップの実態はどこに保管される?
選択の余地なくオブジェクト・ストレージに保管されることになる。
ただ、これはOracle社が管理するオブジェクト・ストレージに保管されることになるのでユーザ側でオブジェクト・ストレージでは**アクセス・操作等は不可となっており実態は確認不可。**
この制約により自動バックアップで取得したバックアップをObject Storageの機能を利用して**リージョン間コピーをすることは不可。**
※バックアップの費用としては容量に応じて通常のオブジェクト・ストレージの利用料で計算される

## バックアップ容量の確認
Oracle社が管理するオブジェクト・ストレージに保管されるのでDBCSの画面では自動バックアップの容量が確認できないが、別のサービスであるOCIモニタリングサービスで確認可能。

"監視および管理" >> "メトリック・エクスプローラ"
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2471135/10c8e41d-0ae2-71f4-1ccd-05418cd0548f.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2471135/c05d24dc-c9ac-94ba-4fdc-bb1c82a35f01.png)

|対象|値|
|---|---|
|開始時間/終了時間/クイック選択|任意で選択|
|コンパートメント|任意で選択|
|メトリック・ネームスペース|**oci_objectstorage**|
|メトリック名|**StoredBytes**|
|間隔|任意で選択 ※選択期間が長い場合、1mや5mが選択不可|
|ディメンション名/ディメンション値|任意で選択|

## リカバリ対象は?
裏側ではRMANが稼働しているため**DB領域のみ**。
**OS領域については対象外**。
OSにエージェントの導入や各種作業ファイルやシェルを配置している場合、それらはバックアップ対象にならないので注意が必要。

## OS領域のリカバリは?
###気になったこと		
DBCSは他のクラウドベンダーと違い、OSアクセスが可能なサービスとなっている。
しかし自動バックアップはRMANを利用しているのでOS領域は対象外。

## 結論
現状OCI DBCSのデフォルト機能ではカバーできなさそう。
対象がシェルスクリプトや何かしらのファイルであれば、ユーザ側でどこかしらにファイルバックアップしておく他ないのかなという印象。
ただし、マニュアルによるとオラクルは、深刻なエラーやシステム障害が発生した時に備えて、ブートボリュームバックアップを毎週維持しているとのこと。	
システム障害が発生した場合、ブートボリュームバックアップからシステムの復元を行うように依頼すればオラクル側でリストアしてもらえるとマニュアルに記載があった。	
（ただ復元までのリードタイムなどは記載がなかったので本当に何か問題が発生した時に使用する程度で、通常の運用で利用することはないと思われる...）	

参考までに[こちらのマニュアル]
(https://docs.oracle.com/en-us/iaas/Content/Database/Concepts/overview.htm#Virtual)で"Boot Volume Backups"と検索すれば確認できます。

**和訳**
>オラクルは、深刻なエラーやシステム障害が発生した場合にシステムを簡単に復元できるように、仮想マシンのDBシステムのブートボリュームバックアップを毎週維持しています。ブートボリュームバックアップは現在、ユーザーがアクセスすることができず（DBシステムのブートボリュームバックアップへのコンソール、API、CLIアクセスはありません）、バックアップの保存と維持にかかる費用はオラクルが負担しています。システム障害が発生した場合、My Oracle Supportに連絡し、OracleがBoot Volumeバックアップからシステムの復元を行うように要請してください。

**原文**
>Oracle maintains a weekly boot volume backup of your virtual machine DB system so that the system can be easily restored in the event of a serious error or system failure. Boot volume backups are currently not accessible to users (there is no Console, API, or CLI access to a DB system boot volume backup), and Oracle bears the cost of keeping and maintaining the backup. In the event of a system failure, contact My Oracle Support to request that Oracle perform a restore of your system from the boot volume backup.

## その他の注意点
DBCSのバックアップは自動バックアップを使用するかユーザ側でRMANを構成することも可能。
ただし運用中のものを変更した場合、それまでのバックアップが使用できない恐れがあるので注意が必要。

・自動バックアップ取得後にdbcli、RMANを実装した場合、これまで取得したデータが使用不可能になる可能性あり
・RMAN Configure編集後に自動バックアップ設定を実装した場合、構成が上書きされ、これまでのバックアップ構成やデータは使用不可となる

## おわりに
数クリックでプロビジョニング可能なDBCSだが、自動バックアップについてそこまで深く考えたことがなかったので良い勉強になった。
ComputeのバックアップやDBCSの手動設定バックアップについても機会があれば調べてみようと思います。

## 参考
https://oracle-japan.github.io/ocitutorials/database/dbcs104-backup/
https://docs.oracle.com/ja-jp/iaas/Content/Database/Tasks/backingup.htm
https://docs.oracle.com/en-us/iaas/Content/Database/Concepts/overview.htm#Virtual