バックアップと復元

SUSE Managerのインストールを定期的にバックアップして、データの損失を防ぎます。 SUSE Managerは、インストールされているプログラムと設定だけでなくデータベースにも依存しているため、インストールのすべてのコンポーネントをバックアップすることが重要です。 この章には、バックアップする必要のあるファイルに関する情報が含まれており、データベースバックアップを管理するためのsmdbaツールについて説明しています。 また、システム障害が発生した場合のバックアップからの復元に関する情報も含まれています。

使用するバックアップ方法にかかわらず、現在のインストールで使用している容量の3 倍以上の空き容量が必要です。 容量が不足するとバックアップが失敗する可能性があるため、頻繁に確認してください。

1. SUSE Managerのバックアップ

SUSE Managerのインストールをバックアップする最も包括的な方法は、関連するファイルとディレクトリをバックアップすることです。 これにより、バックアップの管理にかかる時間を節約でき、障害発生時に再インストールと再同期をより速く実行できます。 ただし、この方法ではディスク領域がかなり必要になるため、バックアップの実行に時間がかかることがあります。

必要なファイルとディレクトリのみをバックアップする場合は、次のリストを使用します。 このプロセスをよりシンプルで包括的なものにするには、ここで指定したディレクトリだけでなく/etc/rootディレクトリ全体をバックアップすることをお勧めします。 一部のファイルは、関連するSUSE Manager機能を実際に使用している場合にのみ存在します。

  • /etc/cobbler/

  • /etc/dhcp.conf

  • /etc/fstabおよび必要なISOマウントポイント。

    UUIDが変更されている場合は、それに応じて、fstabエントリを更新していることを確認します。

  • /etc/rhn/

  • /etc/salt

  • /etc/sudoers

  • /etc/sysconfig/rhn/

  • /root/.gnupg/

  • /root/.ssh

    このファイルはSSHトンネルまたはSSH pushを使用している場合に存在します。 またid-susemanagerキーのコピーを保存しておく必要があります。

  • /root/ssl-build/

  • /srv/formula_metadata

  • /srv/pillar

  • /srv/salt

  • /srv/susemanager

  • /srv/tftpboot/

  • /srv/www/cobbler

  • /srv/www/htdocs/pub/

  • /srv/www/os-images

  • /var/cache/rhn

  • /var/cache/salt

  • /var/lib/cobbler/

  • /var/lib/cobbler/templates/ (バージョン4.0より前は/var/lib/rhn/kickstarts/です)

  • /var/lib/Kiwi

  • /var/lib/rhn/

  • /var/run/pgsql/

  • /var/lib/salt/

  • /var/run/salt/

  • /var/spacewalk/

  • スクリプト、KickstartまたはAutoYaSTプロファイル、カスタムRPMなどのカスタムデータを含むディレクトリ。

データベースをバックアップする必要もあります。バックアップはsmdbaツールで実行できます。

プロシージャ: 手動バックアップからの復元
  1. mgradm install podmanを使用してSUSE Managerサーバを再導入します。

  2. SUSE Manager Web UIを使用するか、コマンドプロンプトでmgr-syncツールを使用して、SUSE Managerリポジトリを再同期します。 製品を再登録するか、登録およびSSL証明書生成セクションをスキップするかを選択できます。

  3. /var/lib/containers/storage/volumes/root/ssl-build/rhn-org-httpd-ssl-key-pair-MACHINE_NAME-VER-REL.noarch.rpmパッケージを再インストールします。

  4. 次回rhn-searchサービスを開始するときに検索インデックスの再作成をスケジュールします。 このコマンドはデバッグメッセージのみを生成し、エラーメッセージは生成しません。

    rhn-search cleanindex
  5. /var/lib/containers/storage/volumes/var-spacewalk/_data/packages/を復元する必要があるかどうかを確認します。/var/lib/containers/storage/volumes/var-spacewalk/_data/packages/がバックアップになかった場合は、復元する必要があります。ソースリポジトリが使用できる場合は、完全なチャンネル同期を使用して/var/lib/containers/storage/volumes/var-spacewalk/_data/packages/を復元できます。

    mgr-sync refresh --refresh-channels

2. smdbaによるデータベースの管理

ローカルPostgreSQLデータベースを管理するには、smdbaツールを使用します。 データベースのバックアップと復元、およびバックアップの管理を行うことができます。 また、データベースのステータスを確認したり、再起動などの管理タスクを実行したりするために使用できます。 smdbaツールの詳細については、[reference:cli-smdba]を参照してください。

smdbaツールは、ローカルPostgreSQLデータベースでのみ動作し、リモートアクセスされたデータベースやOracleデータベースでは動作しません。

サーバコンテナ内でシェルにアクセスするには、コンテナホストでmgrctl termを実行します。そこから、CLIツールを通常どおりに実行できます。

smdbaツールにはシステムの変更を実行するためにsudoアクセスが必要です。 開始する前に次の行の/etc/sudoersファイルをチェックして、adminユーザに対してsudoアクセスを有効にしていることを確認してください。

admin   ALL=(postgres) /usr/bin/smdba

次のコマンドを使用して、データベースのランタイムステータスを確認します。

smdba db-status

このコマンドは、次のように、onlineまたはofflineを返します。

Checking database core...       online

データベースの起動と停止は次のコマンドを使用して実行できます。

smdba db-start

および

smdba db-stop

3. smdbaによるデータベースのバックアップ

smdbaツールは継続的なアーカイブバックアップを実行します。 このバックアップ方法では、現在のセッション中にデータベースに行われたすべての変更のログと、一連の従来のバックアップファイルが結合されます。 クラッシュが発生した場合は、最初にディスク上の最新のバックアップファイルからデータベースの状態が復元され、次に現在のセッションのログが正確に再生されて、データベースが現在の状態に戻されます。 データベースを実行している状態でsmdbaを使用した継続的なアーカイブバックアップが実行されるため、ダウンタイムは必要ありません。

このバックアップ方法は安定していて、通常は整合性のあるスナップショットを作成しますが、多くのストレージ容量を占有する可能性があります。 バックアップに使用できる現在のデータベースサイズの3倍以上の容量があることを確認します。 /var/lib/pgsql/に移動し、df -hを実行することで、現在のデータベースサイズを確認できます。

また、smdbaツールは、アーカイブを管理し、最新のバックアップと、ログの現在のアーカイブのみを保持します。 ログファイルの最大ファイルサイズはわずか16MBであるため、ファイルがこのサイズに達すると新しいログファイルが作成されます。 新しいバックアップを作成するたびに、以前のバックアップがパージされてディスク領域が解放されます。 cronを使用してsmdbaのバックアップをスケジュールし、ストレージが効果的に管理されるようにして、障害が発生した場合に備えて常にバックアップを準備しておくことをお勧めします。

3.1. データベースの手動バックアップの実行

smdbaツールはコマンドラインから直接実行できます 。 インストール直後、または設定に重大な変更を加えた場合は、データベースの手動バックアップを実行することをお勧めします。

smdbaが初めて実行される場合、またはバックアップの場所を変更した場合は、アーカイブを実行する前にデータベースを再起動する必要があります。 この結果、わずかなダウンタイムが発生します。 通常のデータベースバックアップでは、ダウンタイムは必要ありません。

プロシージャ: データベースの手動バックアップの実行
  1. バックアップ用の永続的なストレージ容量を割り当てます。 この例では、/var/spacewalk/にあるディレクトリを使用しています。 これはバックアップの永続的なターゲットになるため、常にサーバからアクセスできるようにしてください。

  2. バックアップの場所で、バックアップのディレクトリを作成します。

    rootとして:

    install -d -o postgres -g postgres -m 700 /var/spacewalk/db-backup
  3. バックアップの場所に適切な許可が設定されていることを確認します。

    chown postgres:postgres /var/spacewalk/db-backup
  4. 最初に、バックアップを作成するには、enableオプションセットを指定して、smdba backup-hotコマンドを実行します。 これにより、指定されたディレクトリにバックアップが作成されます。必要に応じて、データベースを再起動します。

    smdba backup-hot --enable=on --backup-dir=/var/spacewalk/db-backup

    このコマンドはデバッグメッセージを生成し、次の出力で正常に終了します。

    INFO: Finished
  5. バックアップファイルが/var/spacewalk/db-backupディレクトリに存在することを確認し、バックアップが成功したことを確認してください。

3.2. 自動バックアップのスケジュール

smdbaを使用してデータベースバックアップを実行するためにシステムをシャットダウンする必要はありません。 ただし、大規模な操作であるため、バックアップの実行中にデータベースのパフォーマンスが低下する可能性があります。 中断を最小限に抑えるために、定期的なデータベースバックアップを低トラフィック期間にスケジュールすることをお勧めします。

バックアップに使用できる現在のデータベースサイズの3倍以上の容量があることを確認します。 /var/lib/pgsql/に移動し、df -hを実行することで、現在のデータベースサイズを確認できます。

プロシージャ: 自動バックアップのスケジュール
  1. バックアップのディレクトリを作成し、適切な許可を(rootとして)設定します。

    install -d -m 700 -o postgres -g postgres /var/spacewalk/db-backup
  2. /etc/cron.d/db-backup-mgrを開くか、存在しない場合は作成し、次の行を追加して、cronジョブを作成します。

    0 2 * * * root /usr/bin/smdba backup-hot --enable=on --backup-dir=/var/spacewalk/db-backup
  3. バックアップディレクトリを定期的に確認し、バックアップが期待どおりに機能していることを確認します。

4. バックアップからの復元

smdbaツールを使用すると、障害が発生した場合にはバックアップから復元できます。

プロシージャ: バックアップから復元する
  1. データベースをシャットダウンします。

    smdba db-stop
  2. 復元プロセスを開始して、完了するまで待機します。

    smdba backup-restore start
  3. データベースを再起動します。

    smdba db-start
  4. RPMとデータベース間に違いがあるかどうかを確認します。

    spacewalk-data-fsck

5. アーカイブログ設定

アーカイブログを使用すると、データベース管理ツールsmdbaでホットバックアップを実行できます。 SUSE Managerに埋め込みデータベースがある場合、デフォルトでアーカイブログは有効になっています。

PostgreSQLは限られた数のアーカイブ ログを維持します。 デフォルト設定を使用すると、サイズが16MiBの約64個のファイルが保存されます。

ユーザを作成し、チャンネルを同期します。

  • SLES12-SP2-Pool-x86_64

  • SLES12-SP2-Updates-x86_64

  • SLE-Manager-Tools12-Pool-x86_64-SP2

  • SLE-Manager-Tools12-Updates-x86_64-SP2

PostgreSQLは、追加で約1GBのデータを生成します。 したがって、バックアップ戦略について考え、定期的にバックアップを作成することが重要です。

アーカイブログは/var/lib/pgsql/data/pg_xlog/ (postgresql)に保存されます。

6. 占有されているデータベーススペースの概要を取得する

データベース管理者は、サブコマンドspace-overviewを使用して、占有されていたテーブルスペースに関するレポートを取得します。例:

smdba space-overview

出力:

SUSE Manager Database Control. Version 1.5.2
Copyright (c) 2012 by SUSE Linux Products GmbH

Tablespace  | Size (Mb) | Avail (Mb) | Use %
------------+-----------+------------+------
postgres    | 7         | 49168      | 0.013
susemanager | 776       | 48399      | 1.602

smdbaコマンドはPostgreSQLで使用できます。 より詳細なレポートの場合は、space-tablesサブコマンドを使用します。 テーブルとそのサイズの一覧が作成されます。例:

smdba space-tables

出力:

SUSE Manager Database Control. Version 1.5.2
Copyright (c) 2012 by SUSE Linux Products GmbH

Table                                 | Size
--------------------------------------+-----------
public.all_primary_keys               | 0 bytes
public.all_tab_columns                | 0 bytes
public.allserverkeywordsincereboot    | 0 bytes
public.dblink_pkey_results            | 0 bytes
public.dual                           | 8192 bytes
public.evr_t                          | 0 bytes
public.log                            | 32 kB
...

7. データベースの移動

データベースを別の場所に移動できます。 たとえば、データベースのストレージ容量が少なくなっている場合です。

プロシージャ: データベースの移動
  1. SUSE Managerのデフォルトのストレージ場所は/var/lib/pgsql/です。たとえば、/storage/postgres/に移動する場合は、次のように操作を進めます。

  2. コマンドプロンプトで、rootとして、実行中のデータベースを停止します。

    rcpostgresql stop

    実行中のspacewalkサービスをシャットダウンします。

    spacewalk-service stop
  3. 現在の作業ディレクトリ構造をcp-a, --archiveオプションを使用してコピーします。 例:

    cp --archive /var/lib/pgsql/ /storage/postgres/

    このコマンドは、/var/lib/pgsql/の内容を/storage/postgres/pgsql/にコピーします。

    /var/lib/pgsqlディレクトリの内容は同じままにしておく必要があります。同じままでないと、SUSE Managerデータベースが正常に動作しない可能性があります。 また、十分な空きディスク容量があることも確認する必要があります。
  4. 新しいデータベースディレクトリをマウントします。

    mount /storage/postgres/pgsql
  5. 新しいディレクトリに移動し、次のコマンドを実行して、所有権が root:rootではなく、postgres:postgresであることを確認します。

    cd /storage/postgres/pgsql/
    ls -l

    出力:

    total 8
    drwxr-x---  4 postgres postgres   47 Jun  2 14:35 ./
  6. etc/fstabを編集して、サーバfstabに新しいデータベースのマウント場所を追加します。

  7. 次のコマンドを使用して、データベースを起動します。

    rcpostgresql start
  8. spacewalkサービスを開始します。

    spacewalk-service start

8. クラッシュしたルートパーティションからの回復

ルートパーティションがクラッシュした場合は、追加のステップでSUSE Managerサーバを再起動できます。 このセクションでは、/var/lib/pgsqlおよび/var/spacewalk/にマウントされた、データベースとチャンネルに別のパーティションを使用してサーバをセットアップしていることを前提としています。

システムの新規インストール後、ほとんどのユーザとグループは異なるIDを取得します。 ほとんどのバックアップシステムでは、IDの代わりに名前が保存され、正しい所有権と許可でファイルが復元されます。 ただし、既存のパーティションをマウントする場合は、所有権を新しいシステムに合わせる必要があります。

プロシージャ: クラッシュしたルートパーティションから回復する
  1. SUSE Managerをインストールします。 /var/spacewalkおよび/var/lib/pgsqlパーティションはマウントしないでください。 インストールが完了するまで待ってから、次のステップに進みます。

  2. データベースをシャットダウンします。

    rcpostgresql stop
  3. サービスをシャットダウンします。

    spacewalk-service stop
  4. /var/spacewalkおよび/var/lib/pgsqlパーティションをマウントします。

  5. SUSE Managerのバックアップに一覧にされているディレクトリを復元します。

  6. データベースを起動します。

    rcpostgresql start
  7. spacewalkサービスを開始します。

    spacewalk-service start

SUSE Managerは、データベースや同期されたチャンネルを失うことなく正常に動作するはずです。

9. データベース接続情報

/etc/rhn/rhn.confで次の変数を追加または編集して、SUSE Managerデータベースに接続する情報を設定できます。

db_backend = postgresql
db_user = susemanager
db_password = susemanager
db_name = susemanager
db_host = localhost
db_port = 5432
db_ssl_enabled =