Klocwork データのバックアップ

この記事では、Klocwork データのバックアップと復旧について説明します。

Klocwork プロジェクトのビルド中に生成されたすべてのデータは、MariaDB データベースに保存されたビルド情報と Lucene に保存された欠陥データを含めて、projects_root ディレクトリに保持されます。 このため、ディレクトリ全体をバックアップしておくと、必要に応じてこの情報を復旧できます。デフォルトの場所およびその他の特別考慮事項の詳細については、Projects_root ディレクトリを参照してください。

Klocwork インストールディレクトリには、ベースチェッカー構成ファイル、カスタムチェッカー、およびデータベース構成ファイルが含まれており、これらのファイルは、変更、追加、または削除されるときに、定期的にバックアップしておく必要があります。

以下の場合があります:

  • <server_install>/config ディレクトリ内の Klocwork 構成ファイル (kwfilter.confkwmysql.ini など) をカスタマイズした場合は、このディレクトリもバックアップします。またこれらのファイルを変更した場合にもバックアップは必要です。
  • カスタム チェッカーを作成して展開した場合は、<server_install>/plugins ディレクトリもバックアップします。

統合ビルド解析の一部として、Klocwork はテーブルディレクトリから projects_root に必要なデータをすべてコピーします。そのため、テーブルディレクトリをバックアップする必要はありません。

ホット、コールド、またはハイブリッドバックアップとは

ホットバックアップとは、Klocwork サーバーの実行中に (ユーザーがシステムにログインしたまま) バックアップを実行することを意味します。一方、コールドバックアップでは、バックアップを実行するために Klocwork サーバーの電源を短時間切ります。

どちらの方法にも長所と短所があるため、どちらの方法が最善であるかを判断する前に、以下の手順を注意してお読みいただくことをお勧めします。ホットバックアップを行うことを選択する場合、ユーザーがプロセス中に作業を続けると、データが失われる可能性があります。ホットバックアップは正式にはサポートされておらず、破損を引き起こす可能性があることに注意してください。コールドバックアップの間に、バックアップが完了するまでにサーバーが短時間ダウンすることを、ユーザーに知らせておくことが最善です。

重要: バックアップのデータ一貫性を確保するには、コールドバックアップを行う必要があります。ハイブリッドアプローチ (ホットバックアップとそれに続くコールドバックアップ) では、ダウンタイムが最小限に抑えられます。

Klocwork サーバー (コールドバックアップ) を停止することで、バックアップを取る前に、動作中のすべてのデータトランザクションが完了し、バックアップからの復元が一貫するようになります。そのため、コールドバックアップ方法を使用することを強くお勧めしますが、ダウンタイムを最小限に抑える必要がある場合のために、ホットバックアップ方法のいくつかのオプションも下記にリストします。

バックアップを実行するときの推奨事項

  • カスタマイズされた Klocwork 構成ファイルとカスタムチェッカー (ホットバックアップしても安全である非揮発性データ) をバックアップします。これには、多くの場合、<server install>/config<server install>/plugins に配置されている変更されたコンパイラ構成と設定、および <server install>/taxonomies で作成したカスタム分類基準が含まれます (これらは、ライブプロジェクトルートによっては使用されませんが、いずれにせよそれらをバックアップすることを望むでしょう)。このデータは、Klocwork サーバーを停止せずにバックアップできます。

  • 下記のいずれかの方法を使用して、Klocwork プロジェクトデータをバックアップします。このデータは、プロジェクトのルートフォルダーに配置されており、ユーザーがビルドを読み込んだり、指摘を引用したり、設定/構成を変更したりすると、頻繁に変わります。kwprojcopy メソッドを使用する場合を除いて、このデータのホットバックアップを実行すると、バックアップから復元するときに一貫性のない状態になる可能性があるため、ここでは十分に注意する必要があります。

コールドバックアップの実行

カスタマイズした Klocwork 構成ファイルを <server_install>/config から別々にバックアップする必要があります。

コールドバックアップを実行するには、以下の操作を行います。
  1. Klocwork サーバーを停止します。Klocwork サーバーの停止を参照してください。
  2. 通常の OS (またはバックアップ ユーティリティ) コマンドを使用して、projects_root ディレクトリ全体をバックアップ メディアにコピーします。
  3. Klocwork サーバーを起動します。Klocwork サーバーの起動を参照してください。

コールドバックアップからの復元

最後に実行したコールドバックアップからデータを復元しているため、そのバックアップ以降に実行された解析とトランザクションはすべて失われます。最後のバックアップにトランザクションを自動的に再適用する方法はありません。
コールドバックアップから復元するには、以下の操作を行います。
  1. 実行中の Klocwork サーバーをすべて停止します。Klocwork サーバーの停止を参照してください。
  2. インストール全体が壊れて再インストールした場合、または準備段階の一部として構成ファイルをすべてバックアップしてある場合は、新たにインストールした <server_install>/config ディレクトリにそれらをコピーします。
  3. (壊れた) projects_root ディレクトリの内容をすべて削除します。
  4. projects_root 全体をバックアップ メディアから projects_root に復旧します。
  5. 復旧した projects_root で Klocwork サーバーを起動します。Klocwork サーバーの起動を参照してください。

ホットバックアップの実行

サーバーがまだ実行中にバックアップを実行するには、現在推奨されている以下の方法があります。

1.kwprojcopy の使用

kwprojcopy を使用して、各プロジェクトを増分的にバックアップします。後日に、kwprojcopy のインポート機能を使用してデータを復元できます。kwprojcopy はその実行中に、プロジェクトをロックし、プロジェクトのバックアップに必要なデータを収集します。

kwprojcopy を使用すると、ダウンタイムは不要になりますが、プロジェクト固有のデータのみがバックアップされ、グローバルデータ (レポート定義など) はバックアップされません。

2.Rsync 二重バックアップ

Rsync は、ファイルをバイナリレベルで増分的にコピーするために使用できるツールです。フルバックアップを行う場合、次回の rsync では変更されたファイルのみがコピーされるため、増分バックアップにかかる時間が短縮されます。

サーバー起動時に最初の Rsync を実行し、サーバー停止時に 2 回目の rsync を実行することで、Rsync を使用して更新するためのダウンタイムを最小限に抑えることができます。

projects_root のフルバックアップを実行するときに、この方法を使用して、Klocwork サーバーのダウンタイムを削減できます。

  1. Klocwork サーバーが実行中のライブ Klocwork projects_root で、"rsync -a projects_root projects_root_backup" を実行します。
  2. Klocwork サーバーを停止します。
  3. "rsync -a --delete projects_root projects_root_backup" を実行して、変更されたファイルをコピーします (おそらくファイル数は少なく、完了までにそれほど時間はかからないでしょう)。
  4. Klocwork サーバーを起動します。

rsync バックアップから復元するには、Klocwork サーバーを停止し、現在の projects_root フォルダーを、作成した 'projects_root_backup' に置き換える必要があります。Klocwork サーバーを再起動して、復元を完了します。

3.仮想マシン全体をバックアップする

サーバーのダウン中は、バックアップの高速化のために、仮想マシン (VM) バックアップを使用することもできます。これは実行可能なオプションであるかもしれませんが、この方法を実行する前に、さまざまな VM アーキテクチャでスナップショットを作成するためにかかる時間を調べておく必要があります。

  1. Klocwork サーバーを停止します。
  2. 要件と手順に従って、VM イメージをバックアップします。
  3. Klocwork サーバーを起動します。

バックアップからの復元を完了するには、Klocwork サーバーを停止し、現在の VM イメージや projects_root フォルダーを置き換える必要があります。Klocwork サーバーを再起動して、復元を完了します。