バックアップと復元

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

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

次のセクションでは、SUSE Managerコンテナ内のデータのバックアップについて説明します。

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. コンテナホストで、rootとして、mgradm install podmanを使用してSUSE Managerサーバを再配備します。

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

  3. コンテナで、/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/を復元できます。

    mgrctl exec -ti -- mgr-sync refresh --refresh-channels

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

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

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

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

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

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であるため、ファイルがこのサイズに達すると新しいログファイルが作成されます。 新しいバックアップを作成するたびに、以前のバックアップがパージされてディスク領域が解放されます。 ホストシステムでsystemdタイマーを使用してsmdbaのバックアップをスケジュールし、ストレージが効果的に管理されるようにして、障害が発生した場合に備えて常にバックアップを準備しておくことをお勧めします。

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

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

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

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

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

  2. SUSE Managerコンテナホストのコマンドプロンプトで、rootとしてサーバコンテナに入ります。

    mgrctl term
  3. コンテナ内で次の手順を実行します。

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

      rootとして:

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

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

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

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

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

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

バックアップに使用できる現在のデータベースサイズの3倍以上の容量があることを確認します。 コンテナホストで実行することで、現在のデータベースサイズを確認できます。

mgrctl exec "df -h /var/lib/pgsql"
プロシージャ: バックアップ用のディレクトリの作成(一度だけ実行)
  1. SUSE Managerコンテナホストのコマンドプロンプトで、rootとしてサーバコンテナに入ります。

    mgrctl term
  2. コンテナ内で次の手順を実行します。

    1. バックアップの場所で、バックアップ用のディレクトリを作成します。 rootとして次のように入力します。

      install -d -o postgres -g postgres -m 700 /var/spacewalk/db-backup
プロシージャ: 自動バックアップのスケジュール
  1. コンテナホストでrootとして、/etc/systemd/system/server-db-backup.serviceに、次の内容でシステムユニットファイルを作成します。

    [Unit]
    Description="Server backup service"
    
    [Service]
    ExecStart=mgrctl exec "smdba backup-hot --enable=on --backup-dir=/var/spacewalk/db-backup"
  2. /etc/systemd/system/server-db-backup.timerに、次の内容でsystemdタイマーファイルを作成します。

    [Unit]
    Description="Run server database backup relative to activation time"
    
    [Timer]
    OnCalendar=Mo..Sun *-*-* 2:00:00
    Unit=server-db-backup.service
    
    [Install]
    WantedBy=multi-user.target
  3. すべての設定が正しいことを確認します。

    systemd-analyze verify /etc/systemd/system/server-db-backup.*
  4. タイマーを有効にします。

    systemctl enable --now server-db-backup.timer

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

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

プロシージャ: バックアップから復元する
  1. SUSE Managerコンテナホストのコマンドプロンプトで、rootとしてサーバコンテナに入ります。

    mgrctl term
  2. コンテナ内で次の手順を実行します。

    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を使用して、占有されていたテーブルスペースに関するレポートを取得します。例:

mgrctl exec 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サブコマンドを使用します。 テーブルとそのサイズの一覧が作成されます。例:

mgrctl exec 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. データベース接続情報

コンテナ内で、/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 =