バックアップと復元
SUSE Managerのインストールを定期的にバックアップして、データの損失を防ぎます。 SUSE Managerは、インストールされているプログラムと設定だけでなくデータベースにも依存しているため、インストールのすべてのコンポーネントをバックアップすることが重要です。 この章には、バックアップする必要のあるファイルに関する情報が含まれており、データベースバックアップを管理するためのsmdba
ツールについて説明しています。 また、システム障害が発生した場合のバックアップからの復元に関する情報も含まれています。
使用するバックアップ方法にかかわらず、現在のインストールで使用している容量の3 倍以上の空き容量が必要です。 容量が不足するとバックアップが失敗する可能性があるため、頻繁に確認してください。 |
1. SUSE Managerのバックアップ
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などのカスタムデータを含むディレクトリ。
データベースをバックアップする必要もあります。バックアップは |
-
mgradm install podman
を使用してSUSE Managerサーバを再導入します。 -
SUSE Manager Web UIを使用するか、コマンドプロンプトで
mgr-sync
ツールを使用して、SUSE Managerリポジトリを再同期します。 製品を再登録するか、登録およびSSL証明書生成セクションをスキップするかを選択できます。 -
/var/lib/containers/storage/volumes/root/ssl-build/rhn-org-httpd-ssl-key-pair-MACHINE_NAME-VER-REL.noarch.rpm
パッケージを再インストールします。 -
次回
rhn-search
サービスを開始するときに検索インデックスの再作成をスケジュールします。 このコマンドはデバッグメッセージのみを生成し、エラーメッセージは生成しません。rhn-search cleanindex
-
/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データベースでは動作しません。
サーバコンテナ内でシェルにアクセスするには、コンテナホストで |
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
ツールはコマンドラインから直接実行できます 。 インストール直後、または設定に重大な変更を加えた場合は、データベースの手動バックアップを実行することをお勧めします。
|
-
バックアップ用の永続的なストレージ容量を割り当てます。 この例では、
/var/spacewalk/
にあるディレクトリを使用しています。 これはバックアップの永続的なターゲットになるため、常にサーバからアクセスできるようにしてください。 -
バックアップの場所で、バックアップのディレクトリを作成します。
rootとして:
install -d -o postgres -g postgres -m 700 /var/spacewalk/db-backup
-
バックアップの場所に適切な許可が設定されていることを確認します。
chown postgres:postgres /var/spacewalk/db-backup
-
最初に、バックアップを作成するには、
enable
オプションセットを指定して、smdba backup-hot
コマンドを実行します。 これにより、指定されたディレクトリにバックアップが作成されます。必要に応じて、データベースを再起動します。smdba backup-hot --enable=on --backup-dir=/var/spacewalk/db-backup
このコマンドはデバッグメッセージを生成し、次の出力で正常に終了します。
INFO: Finished
-
バックアップファイルが
/var/spacewalk/db-backup
ディレクトリに存在することを確認し、バックアップが成功したことを確認してください。
3.2. 自動バックアップのスケジュール
smdba
を使用してデータベースバックアップを実行するためにシステムをシャットダウンする必要はありません。 ただし、大規模な操作であるため、バックアップの実行中にデータベースのパフォーマンスが低下する可能性があります。 中断を最小限に抑えるために、定期的なデータベースバックアップを低トラフィック期間にスケジュールすることをお勧めします。
バックアップに使用できる現在のデータベースサイズの3倍以上の容量があることを確認します。 |
-
バックアップのディレクトリを作成し、適切な許可を(rootとして)設定します。
install -d -m 700 -o postgres -g postgres /var/spacewalk/db-backup
-
/etc/cron.d/db-backup-mgr
を開くか、存在しない場合は作成し、次の行を追加して、cronジョブを作成します。0 2 * * * root /usr/bin/smdba backup-hot --enable=on --backup-dir=/var/spacewalk/db-backup
-
バックアップディレクトリを定期的に確認し、バックアップが期待どおりに機能していることを確認します。
4. バックアップからの復元
smdba
ツールを使用すると、障害が発生した場合にはバックアップから復元できます。
-
データベースをシャットダウンします。
smdba db-stop
-
復元プロセスを開始して、完了するまで待機します。
smdba backup-restore start
-
データベースを再起動します。
smdba db-start
-
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. データベースの移動
データベースを別の場所に移動できます。 たとえば、データベースのストレージ容量が少なくなっている場合です。
-
SUSE Managerのデフォルトのストレージ場所は
/var/lib/pgsql/
です。たとえば、/storage/postgres/
に移動する場合は、次のように操作を進めます。 -
コマンドプロンプトで、rootとして、実行中のデータベースを停止します。
rcpostgresql stop
実行中のspacewalkサービスをシャットダウンします。
spacewalk-service stop
-
現在の作業ディレクトリ構造を
cp
に-a, --archive
オプションを使用してコピーします。 例:cp --archive /var/lib/pgsql/ /storage/postgres/
このコマンドは、
/var/lib/pgsql/
の内容を/storage/postgres/pgsql/
にコピーします。/var/lib/pgsql
ディレクトリの内容は同じままにしておく必要があります。同じままでないと、SUSE Managerデータベースが正常に動作しない可能性があります。 また、十分な空きディスク容量があることも確認する必要があります。 -
新しいデータベースディレクトリをマウントします。
mount /storage/postgres/pgsql
-
新しいディレクトリに移動し、次のコマンドを実行して、所有権が
root:root
ではなく、postgres:postgres
であることを確認します。cd /storage/postgres/pgsql/ ls -l
出力:
total 8 drwxr-x--- 4 postgres postgres 47 Jun 2 14:35 ./
-
etc/fstab
を編集して、サーバfstabに新しいデータベースのマウント場所を追加します。 -
次のコマンドを使用して、データベースを起動します。
rcpostgresql start
-
spacewalkサービスを開始します。
spacewalk-service start
8. クラッシュしたルートパーティションからの回復
ルートパーティションがクラッシュした場合は、追加のステップでSUSE Managerサーバを再起動できます。 このセクションでは、/var/lib/pgsql
および/var/spacewalk/
にマウントされた、データベースとチャンネルに別のパーティションを使用してサーバをセットアップしていることを前提としています。
システムの新規インストール後、ほとんどのユーザとグループは異なるIDを取得します。 ほとんどのバックアップシステムでは、IDの代わりに名前が保存され、正しい所有権と許可でファイルが復元されます。 ただし、既存のパーティションをマウントする場合は、所有権を新しいシステムに合わせる必要があります。 |
-
SUSE Managerをインストールします。
/var/spacewalk
および/var/lib/pgsql
パーティションはマウントしないでください。 インストールが完了するまで待ってから、次のステップに進みます。 -
データベースをシャットダウンします。
rcpostgresql stop
-
サービスをシャットダウンします。
spacewalk-service stop
-
/var/spacewalk
および/var/lib/pgsql
パーティションをマウントします。 -
SUSE Managerのバックアップに一覧にされているディレクトリを復元します。
-
データベースを起動します。
rcpostgresql start
-
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 =