Database Support Blog

  • Oracle Cloud
2023.09.29

【Oracle Cloud】BaseDB の自動バックアップが失敗した時に確認するポイントと対応方法

トップ画像

Oracle Base Database Service(以下BaseDB)ではRMANを利用した自動バックアップの機能が実装されています。
このバックアップを利用して任意の地点にリカバリすることが可能です(Point in Time Recovery)。
しかし、自動バックアップの取得が何らかの原因で失敗していた場合、いざ必要となった時にリカバリが行えない状態になってしまう可能性があります。
※バックアップ取得結果の「状態」が失敗となっている場合は取得に失敗しています。

本記事では自動バックアップの主な失敗パターンと対処方法をご紹介します。



はじめに

前提条件)
自動バックアップ取得に必要な前提条件が以下のマニュアルに記載されています。
最初にこちらの条件を満たしていることを確認してください。

ベース・データベース・サービスでのバックアップおよびリカバリ
前提条件
https://docs.oracle.com/ja-jp/iaas/dbcs/doc/backup-and-recovery-overview.html


トラブルシューティング)
オラクル社より公開されているバックアップ失敗のトラブルシューティングが
マニュアルにまとめられていますので、こちらに該当しないかもご確認ください。

バックアップの失敗のトラブルシューティング
https://docs.oracle.com/ja-jp/iaas/dbcs/doc/troubleshoot-backup-failures.html

上記資料を確認しても解消しない場合は、本記事の内容を参考にご確認ください。


自動バックアップの失敗パターンと対処

1) ノードが停止している

<概要>
BaseDBのノードが停止していると、自動バックアップの取得が失敗します。

<判断ポイント>
OCIコンソールでBaseDBの詳細画面へ遷移し、ノードのステータスを確認します。

<対処方法>
ノードを起動します。


2) CPUのスケールダウンによるスペック不足で接続タイムアウト

<概要>
CPUのスケールダウンによりCPUを減らし過ぎた場合にAgentの応答に時間を要してしまい、
接続タイムアウトが発生し自動バックアップが失敗する場合があります。

<判断ポイント>
・直前にCPUのスケールダウンを行っているか
・バックアップ取得時間帯のCPU使用率が100%に近づいていないか
 これはBaseDBの管理画面の「メトリック」でCPU使用率を確認できます。

<対処方法>
CPUのスケールアップを行います。


3) mysqld、DCSAgentが停止していた

<概要>
BaseDBでは、OSなどの管理のためにOCI が提供するプロセスが存在しています。
そのうち、mysqld、dcsagentプロセスがディスクフル等の何らかの要因で停止して
しまうと、自動バックアップが失敗することが確認されています。

<確認ポイント>
mysqld、dcsagentプロセスの稼働状況をコマンドで確認します。

# systemctl status initdcsagent
● initdcsagent.service - Oracle dcs-agent startup
   Loaded: loaded (/etc/systemd/system/initdcsagent.service; enabled; vendor preset: disabled)
   Active: inactive (dead) since Thu 2023-07-13 17:05:30 JST; 2s ago
  Process: 3151 ExecStart=/bin/sh -c . /opt/oracle/dcs/bin/setupJre.sh;$JAVA -Xms128m -Xmx512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/oracle/dcs/log -XX:ErrorFile=/opt/oracle/dcs/log/dcs-error.log -XX:+DisableExplicitGC -XX:ParallelGCThreads=4 -Doracle.security.jps.config=/opt/oracle/dcs/agent/jps-config.xml -jar  /opt/oracle/dcs/bin/dcs-agent*.jar server /opt/oracle/dcs/conf/dcs-agent.json >/opt/oracle/dcs/log/dcsagent-stdout_$(date "+%%Y%%m%%d-%%H%%M%%S").log 2>/opt/oracle/dcs/log/dcsagent-stderr_$(date "+%%Y%%m%%d-%%H%%M%%S").log (code=killed, signal=TERM)
 Main PID: 3151 (code=killed, signal=TERM)
# systemctl status mysqld
● mysqld.service - MySQL Server
   Loaded: loaded (/etc/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: inactive (dead) since Thu 2023-07-13 17:07:00 JST; 4s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 2012 ExecStart=/opt/oracle/mysql_compact/mysql/bin/mysqld --defaults-file=/opt/oracle/mysql_compact/my.sim.cnf $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
 Main PID: 2012 (code=exited, status=0/SUCCESS)
   Status: "Server shutdown complete"

上記の場合、mysqld、dcsagentプロセスはいずれも停止(inactive)している状態です。

<対処方法>
mysqld、DCSAgentが停止していることが判明した場合、以下のコマンドで起動します。

# systemctl start initdcsagent
# systemctl start initdcsadmin

続いて、以下のコマンドで起動(active)したことを確認します。

# systemctl status initdcsagent
● initdcsagent.service - Oracle dcs-agent startup
   Loaded: loaded (/etc/systemd/system/initdcsagent.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2023-07-13 16:15:59 JST; 48min ago
 Main PID: 3151 (sh)
    Tasks: 45
   Memory: 523.0M
   CGroup: /system.slice/initdcsagent.service
           tq3151 /bin/sh -c . /opt/oracle/dcs/bin/setupJre.sh;$JAVA -Xms128m -Xmx512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDu...
           mq3153 java -Xms128m -Xmx512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/oracle/dcs/log -XX:ErrorFile=/opt/...
# systemctl status mysqld
● mysqld.service - MySQL Server
   Loaded: loaded (/etc/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2023-07-13 16:15:59 JST; 48min ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
 Main PID: 2012 (mysqld)
   Status: "Server is operational"
    Tasks: 40
   Memory: 136.2M
   CGroup: /system.slice/mysqld.service
           mq2012 /opt/oracle/mysql_compact/mysql/bin/mysqld --defaults-file=/opt/oracle/mysql_compact/my.sim.cnf
Jul 13 16:15:50 test systemd[1]: Starting MySQL Server...
Jul 13 16:15:59 test systemd[1]: Started MySQL Server.

4) dcs-cli、dcs-admin、dcs-agentが古い

<概要>
BaseDBの管理等で使用されているプロセスのdcs-cli、dcs-admin、dcs-agentのいずれかのバージョンが古い場合、自動バックアップが失敗します。


<確認ポイント>
以下のコマンドを実行し現在のバージョンを確認します。

# rpm -qa | egrep -i "dbaas|exa|dcs"
dcs-cli-20.1.2.0.0_200408.0952-1.x86_64 
dcs-admin-21.1.3.3.0_210401.0711-1.x86_64
dcs-agent-21.2.2.2.0_210608.0448-5.x86_64

上記の場合dcs-cliのバージョンのみ「20」と古くなっています。
このようにバージョンに差異がある場合は古いと判断できます。

<対処方法>
バージョンが一致していない場合は以下の手順でバージョンアップを行います。

1.DCS Agent 、DCS Admin 、mysqldを再起動
# systemctl stop mysqld
# systemctl start mysqld
# systemctl stop initdcsadmin
# systemctl start initdcsadmin
# systemctl stop initdcsagent
# systemctl start initdcsagent

2.ステータスを確認
# systemctl status initdcsagent
# systemctl status initdcsadmin
# systemctl status mysqld

※Agentの再起動にあたり、DBの稼働に影響はありません。

3.DCS CLI をバージョンアップ
バージョンアップコマンドを実行するとジョブの情報が出力されます。
# cliadm update-dbcli
Job details
----------------------------------------------------------------
                     ID:  c9aa34e2-dc26-4a3b-ada5-03f3bf212986
            Description:  DcsCli patching
                 Status:  Created
                Created:  October 21, 2022 4:06:59 PM JST
                Message:  Dcs cli will be updated

4.出力された Job ID を元にアップデートの進行状況を確認
# dbcli describe-job -i c9aa34e2-dc26-4a3b-ada5-03f3bf212986  ★cliadm update-dbcli で表示されたJob IDを指定
Job details
----------------------------------------------------------------
                     ID:  c9aa34e2-dc26-4a3b-ada5-03f3bf212986
            Description:  DcsCli patching
                 Status:  Success
                Created:  October 21, 2022 4:06:59 PM JST
               Progress:  100%
                Message:
--> Progress が 100% となるまで待機

5.dcs-cli がバージョンアップされたことを確認
# rpm -qa | egrep -i "dbaas|exa|dcs"
dcs-cli-21.1.3.3.0_210401.0711-1.x86_64 
dcs-admin-21.1.3.3.0_210401.0711-1.x86_64
dcs-agent-21.2.2.2.0_210608.0448-5.x86_64
--> バージョンアップしたことを確認

6.DCS Agent 、DCS Admin 、mysqldを再起動
# systemctl stop mysqld
# systemctl start mysqld
# systemctl stop initdcsadmin
# systemctl start initdcsadmin
# systemctl stop initdcsagent
# systemctl start initdcsagent

5) バックアップ取得先のオブジェクトストレージへのアクセスが失敗

<概要>
自動バックアップにより取得されたバックアップは、オブジェクトストレージへ保存されます。
BaseDBの属するサブネットからオブジェクトストレージへアクセスするための設定が行えていないと、バックアップの取得が失敗します。

<確認ポイント>
使用されている以下のリソースをそれぞれ確認します。
※インターネットゲートウェイをご利用の場合は、以下「サービスゲートウェイ」の記載を
 「インターネットゲートウェイ」に読み替えてください。

・サービスゲートウェイが作成されていること
・ルート表にサービスゲートウェイへのルートルールがあること

サービスゲートウェイの場合)

インターネットゲートウェイの場合)

・セキュリティリストまたはネットワークセキュリティグループのエグレスルールに
 以下のセキュリティルールがあること

 宛先タイプ :サービス
 宛先サービス :All < リージョン名 > Services in Oracle Service Network
 IPプロトコル :TCP
 ソースポート範囲 :すべて
 宛先ポート範囲 :443

※パブリックサブネットでサービスゲートウェイを使用する場合、
 宛先サービスに「OCI < リージョン名 > Object Storage」を指定してください。

<対処方法>
確認ポイントに記載した各リソースが設定されていない場合は設定します。


まとめ

本記事でご紹介しましたように自動バックアップの取得が失敗するケースは複数あります。
以下の記事では、dbcliコマンド を用いてバックアップの失敗状況を確認する方法をご紹介しています。

dbcliコマンドを用いたバックアップ失敗時のトラブルシューティング
https://www.ashisuto.co.jp/db_blog/article/N0014_oraclecloud_20200428.html

本記事の内容を基に対応を行っても解消しない場合には、上記の記事を参考に情報を収集し、弊社サポートセンターへお問い合わせください。
自動バックアップの取得において、本記事がお役に立てれば幸いです。


執筆者情報

さか てるひこ プロフィール画像

2005年入社。Oracle Database 9iの時代からサポートを行うサポートエンジニア。サポートセンターで培ったノウハウを基に、研修「OracleDatabaseトラブル調査テクニック」を立上げ。現在はOracle Cloudを担当。子鉄の父。...show more


■本記事の内容について
 本記事に示した定義及び条件は変更される場合があります。あらかじめご了承ください。

■商標に関して
 ・Oracle®、Java、MySQL及びNetSuiteは、Oracle、その子会社及び関連会社の米国及びその他の国における登録商標です。
 ・Amazon Web Services、AWS、Powered by AWS ロゴ、[およびかかる資料で使用されるその他の AWS 商標] は、Amazon.com, Inc. またはその関連会社の商標です。
  文中の社名、商品名等は各社の商標または登録商標である場合があります。

関連している記事

  • Oracle Cloud
  • Oracle Database
2024.10.11

Oracle Cloud VMware Solutionを構築してみました!

前回の記事でOCVSの概要やメリットをお伝えしました。 本記事では実際にOCVSを構築する手順、および作成したvCenterへ実際に接続する手順をお伝えします!

  • Oracle Cloud
2024.09.19

OCIに構築したWindowsサーバーの管理者ユーザーのパスワードリセット方法 ~その②~

本記事では「インスタンス・コンソール接続」で、より簡単にパスワードをリセットする方法をご紹介します。

  • Oracle Cloud
2024.09.10

管理者ユーザー必見!OCI IAMポリシーでwhere句を使い条件式を設定する方法

OCI IAMポリシーは、where句を使った条件式を使用することで、柔軟な権限付与が可能になります。今回は、where句による条件式の設定例およびwhere句の有無による違いについてご紹介します。

ページの先頭へ戻る