OCIのDBCSの自動バックアップからリストアしてみた


1.こんな方に向けてこの記事を作成しました

Oracle Cloud Infrastructure(OCI)を初めて学ぶ方・Database Cloud Service(DBCS)の基本的機能を一通り触りたい方

2.この記事を読むと...

DBCSのバックアップからのリストアをマスターできる!
最近アップデートされ導入されたREDOログの自動バックアップも理解できる

3.自動バックアップDBのリストア

OCIのDBCSから自動バックアップした記事で設定した自動バックアップから、データベースのリストアをしてみましょう。
ここからはコードのコピペで進めることができます!一緒にやっていきましょう。

<だいたいの流れ 概要>
・OCIのDBに表を作成する
・OCIのDBに作成した表に行をインサートする
・設定済みの自動バックアップが動く
・OCIのDBの表にインサートした行のデータをアップデートする
・自動バックアップからリストアする
・アップデート前のデータに戻っているのを確認する

①ターミナルからOCIのDBにssh接続

Windowsでコマンドプロンプトを開きましょう。
Macではターミナルを開いてください。

ssh -i <秘密鍵のPath> opc@nodeのパブリックアドレス

②Oracleユーザになり、sql plusを起動  / as sysdba

OracleのDBをいじるときは、Oracleユーザに変更しておきましょう。

OCIでは、データベースに予めインストールされているユーザがいくつかあります。
アクセス用にopcユーザ、オラクルデータベース用のoracleユーザ、そして、ルート権限を持つrootユーザです。

下記のコードでoracleユーザに変身しましょう。

sudo su - oracle


表作成・操作を行うために、Sqlplusを起動します。

sqlplus / as sysdba


SQL> これでsqlplusに接続が完了しました;
SQL> これから表操作を行っていきましょう;

③Employees表を作成する

Employees表という名前の従業員情報を管理する表を作成します。
今回はシンプルに、first_name(名)とlast_name(姓)という列を持たせます。

CREATE TABLE Employees (first_name varchar(100), last_name varchar(100));


Table Created.という文字からEmployees表が作成されたことを確認します。

④作成したEmployees表に従業員をINSERT

それでは、従業員を登録していきましょう。
サッカー選手のリオネル・メッシをINSERTしていきます。

INSERT into Employees (first_name, last_name) VALUES ('Lionel','Messi');


1 row created.からリオネル・メッシが表にINSERTされたことを確認できます。

更にSelect文で、リオネル・メッシを確認してみましょう。
正しくINSERTされたことを確認できたら、commitすることも忘れないように。

select * from Employees;
commit;

⑤自動バックアップ

Employees表を作成し、その表にLionel Messiという従業員をINSERTしました。それらの変更が前記事で設定した自動バックアップが実行されるのを待ちましょう。

1日のんびり待っても良いですし、自動バックアップ時間を指定して実行させるのも自由です。

各々の方法で自動バックアップが取られたなというタイミングで、OCIから自動バックアップ履歴を確認しましょう。

DBシステムから選択できるDB名をクリックしましょう。(今回の例ではDBTEST)


⑥自動バックアップ後、Lionel Messiを再度確認

select * from Employees;

自動バックアップ後もLionel Messiを確認できますね。自動バックアップには、Lionel Messiが入っているはずです。

次に、Lionel Messiを別人に変えてみましょう。

⑦Lionel MessiをCristiano Ronaldoに

UPDATE Employees SET first_name = 'Cristiano', last_name = 'Ronaldo';

Cristiano Ronaldoに変えた後、ちゃんと別人になったかSelect文で確認しましょう

Select * from Employees;
Commit;

ちゃんと別人に変えることができました。

⑨自動バックアップでLionel Messiを取り戻す

DBシステムから選択できるDB(例ではDBTEST)をクリックし、アクションボタンからリストアをクリック

今回は指定した時間に戻りたいので、タイムスタンプリストアしましょう。

DBTESTのアイコンがオレンジ色に変わり、ステータスも「更新中」状態であることが確認できます。
この状態で少し待ってみましょう。

DBTESTのアイコンが緑色になり、ステータスも使用可能となりました!

理論上、自動バックアップからLionel Messiが戻ってきているはずです。

Sqlplusより、確認しましょう。
 

⑩自動バックアップが正常実行されたことを確認

下記のSQL文でLionel Messiが戻ってきていることを確認します。

select * from Employees;

Cristiano Ronaldoに変更しましたが、自動バックアップによりLionel Messiが戻ってきたのを確認できました。

これで、自動バックアップからリストアすることができましたね。

記事をご覧頂きありがとうございました。
今回は番外編も用意しておりますので、興味がある方は是非チェックしてみてください!

番外編 REDOログバックアップについて

最近OCIでは、REDOログの自動バックアップも始まっていたのをご存知でしたか?
1時間に1回自動でREDOログが取られます。

せっかくなので手を動かしながら、見ていきましょう。
少し複雑なので時間帯と一緒に記載しています。

・11:00頃 Oracleユーザになり、sqlplusを起動

下記のコードでoracleユーザに変身しましょう。

sudo su - oracle


表作成・操作を行うために、sqlplusを起動します。

sqlplus / as sysdba

Select * from Employees; 


・13:00~15:00 自動バックップ

この時点で毎日1回行われる自動バックアップが行われました。
自動バックアップの中身は、Lionel Messiが入っています。

・15:30 update文でLionel MessiをCristiano Ronaldに

UPDATE Employees SET first_name = 'Cristiano', last_name = 'Ronaldo';
commit;

上記で確認できる通り、Cristiano Ronaldに変わりました。

・16:00 REDOログバックアップ

1時間に一回、REDOログのバックアップを取っています。
最新の自動バックアップには、Lionel Messi
16:00に取られたREDOログには、Cristiano Ronaldに変えたupdate文が入っています。

この状態で、リストアボタンから「最新にリストア」したらデータはどちらになるのでしょうか?
REDOの効果を実感するためにも、リストアは17:00に行いましょう(翌日の自動バックアップの時間までは大丈夫ですが)

・17:00 最新の状態にリストア

リストアボタンから、最新にリストアを選んでみましょう。

・Select文で確認

Select * from Employees; 

.......。

..............!?

答えは、Cristiano Ronaldoでした。

つまり、「最新にリストア」では最新の自動バックアップ+最新のREDOログからリストアされるということが分かりました。

以上で、番外編は終わりです。