Red Hat Training

A Red Hat training course is available for Red Hat Satellite

12.8. データベースの移行

Red Hat Satellite 5 がインストール済みでデータベースを移行する必要がある場合は、以下のセクションで移行プロセスを参照してください。

12.8.1. 組み込みデータベースから管理データベースへの移行

組み込みデータベースから管理データベースへの移行における要件は、以下の通りです。
  • Red Hat Satellite のインストール ISO
  • 組み込みデータベースを使用する Red Hat Satellite サーバーの完全インストール (satellite.example.com)
  • 管理データベースをホストする Red Hat Enterprise Linux 6 がインストール済みの新規システム (manageddb.example.com)

手順12.2 管理データベースへの移行

  1. Red Hat Satellite インスタンスをシャットダウンします。
    [root@satellite ~]# rhn-satellite stop
    
  2. サーバーに rhn-upgrade パッケージがある場合は、これを削除します。
    [root@satellite ~]# yum remove rhn-upgrade
    
  3. db-control を使ってデータベースのバックアップを作成します。
    [root@satellite ~]# mkdir ~/dbbackup
    [root@satellite ~]# db-control backup ~/dbbackup
    
  4. Satellite サーバーから管理データベースサーバーにデータベースのバックアップをコピーします。
    [root@satellite ~]# scp -r ~/dbbackup root@manageddb.example.com:~/.
    
  5. Red Hat Satellite インストール ISO を使用して管理データベースをインストールします。
  6. 管理データベースをインストールしたら、これをシャットダウンして、データベース設定ファイルおよびアクセス制御ファイルのバックアップを作成します。
    [root@manageddb ~]# db-control stop
    [root@manageddb ~]# cp /var/opt/rh/rh-postgresql95/lib/pgsql/data/postgresql.conf ~/dbbackup
    [root@manageddb ~]# cp /var/opt/rh/rh-postgresql95/lib/pgsql/data/pg_hba.conf ~/dbbackup
    移行プロセスではこれらのファイルが削除されるため、バックアップの作成が必要になります。
  7. db-control を使ってデータベースのバックアップを管理データベースサーバーに復元します。
    [root@manageddb ~]# db-control restore ~/dbbackup
    
  8. データベース設定ファイルおよびアクセス制御ファイルをバックアップから管理データベースに復元します。
    [root@manageddb ~]# cp ~/dbbackup/postgresql.conf /var/opt/rh/rh-postgresql95/lib/pgsql/data/postgresql.conf
    [root@manageddb ~]# cp ~/dbbackup/pg_hba.conf /var/opt/rh/rh-postgresql95/lib/pgsql/data/pg_hba.conf
    
  9. Satellite サーバーでは、/etc/rhn/rhn.conf ファイルを編集して db_host を管理データベースのドメイン名に変更し、db_port を 5432 に設定します。以下のようになります。
    db_host = manageddb.example.com
    db_port = 5432
    
  10. Satellite サーバーの /etc/rhn/service-list ファイルから rh-postgresql95-postgresql を削除します。
    [root@satellite ~]# sed -i 's/rh-postgresql95-postgresql //g' /etc/rhn/service-list
  11. 管理データベースでは、/etc/rhn/rhn.conf ファイルを編集し、db_namedb_userdb_password で Satellite サーバーにある /etc/rhn/rhn.conf ファイルの同一の値を反映させるように変更します。以下に例を示します。
    db_name = mydb
    db_user = mydbuser
    db_password = mydbpassword
    
  12. db-control を使って管理データベースのインスタンスを開始します。
    [root@manageddb ~]# db-control start
    
  13. Satellite サーバーから PostgreSQL と spacewalk-dobby のパッケージを削除します。
    [root@satellite ~]# yum remove rh-postgresql95 rh-postgresql95-postgresql rh-postgresql95-postgresql-contrib rh-postgresql95-postgresql-libs rh-postgresql95-postgresql-server rh-postgresql95-postgresql-pltcl spacewalk-dobby
    
  14. Red Hat Satellite を再起動します。
    [root@satellite ~]# rhn-satellite start
    
これで、データベースが組み込みデータベースから管理データベースに移行されました。

12.8.2. 組み込みデータベースから外部 PostgreSQL データベースへの移行

組み込みデータベースから外部 PostgreSQL データベースへの移行における要件は、以下の通りです。
  • 組み込みデータベースを使用する Red Hat Satellite サーバーの完全インストール (satellite.example.com)
  • 実行中の PostgreSQL (postgresql.example.com) インスタンスをホストするシステム。設定の詳細については、「PostgreSQL データベースの要件」 を参照してください。

手順12.3 外部 PostgreSQL データベースへの移行

  1. Red Hat Satellite サーバー上ですべてのサービスをシャットダウンし、db-control で組み込みデータベースを起動します。
    [root@satellite ~]# rhn-satellite stop
    [root@satellite ~]# db-control start
    
  2. サーバーに rhn-upgrade がある場合は、これを削除します。
    [root@satellite ~]# yum remove rhn-upgrade
    
  3. データベースを最新のスキーマバージョンに更新します。
    [root@satellite ~]# yum update satellite-schema
    [root@satellite ~]# spacewalk-schema-upgrade
    
    これにより、使用中のデータベースのバージョンが外部 PostgreSQL データベースの最新バージョンに一致するようになります。
  4. データベースのスナップショットを格納するディレクトリーを作成します。
    [root@satellite ~]# mkdir ~/dbbackup
    [root@satellite ~]# cd ~/dbbackup
    
  5. spacewalk-dump-schema を使ってデータベースをエクスポートします。
    [root@satellite dbbackup]# spacewalk-dump-schema --to=postgresql > migrate-to-postgresql.sql
    
  6. 組み込みデータベースを停止します。
    [root@satellite dbbackup]# db-control stop
    
  7. spacewalk-setup を使って外部 PostgreSQL データベースを設定します。
    [root@satellite dbbackup]# spacewalk-setup --db-only --external-postgresql
    
    このスクリプトはデータベースの詳細を要求して、Satellite がデータベースの接続と設定を実行できるようにします。外部 PostgreSQL データベースの詳細を入力します。
    ** Database: Setting up database connection for PostgreSQL backend.
    Hostname (leave empty for local)? postgresql.example.com
    Port [5432]?
    Database? myextdb
    Username? root
    Password?
    
    スクリプトでデータベースを設定します。
  8. スクリプトでのデータベース作成が完了したら、データベーススキーマを復元します。
    [root@satellite dbbackup]# spacewalk-sql -i < migrate-to-postgresql.sql
    
  9. Satellite サーバーから PostgreSQL と spacewalk-dobby のパッケージを削除します。
    [root@satellite ~]# yum remove rh-postgresql95 rh-postgresql95-postgresql rh-postgresql95-postgresql-contrib rh-postgresql95-postgresql-libs rh-postgresql95-postgresql-server rh-postgresql95-postgresql-pltcl spacewalk-dobby
    
  10. Red Hat Satellite を起動します。
    [root@satellite ~]# rhn-satellite start
    
これで、データベースが組み込みデータベースから外部 PostgreSQL データベースに移行されました。

12.8.3. 組み込みデータベースから外部 Oracle データベースへの移行

組み込みデータベースから外部 Oracle データベースへの移行における要件は、以下の通りです。
  • 組み込みデータベースを使用する Red Hat Satellite サーバーの完全インストール (satellite.example.com)
  • 実行中の Oracle データベース (oracledb.example.com) インスタンスをホストするシステム。設定の詳細については、「外部データベースの要件」 を参照してください。

手順12.4 外部 Oracle データベースへの移行

  1. Red Hat Satellite サーバー上ですべてのサービスをシャットダウンし、db-control で組み込みデータベースを起動します。
    [root@satellite ~]# rhn-satellite stop
    [root@satellite ~]# db-control start
    
  2. サーバーに rhn-upgrade パッケージがある場合は、これを削除します。
    [root@satellite ~]# yum remove rhn-upgrade
    
  3. データベースを最新のスキーマバージョンに更新します。
    [root@satellite ~]# yum update satellite-schema
    [root@satellite ~]# spacewalk-schema-upgrade
    
    これにより、使用中のデータベースのバージョンが外部 Oracle データベースの最新バージョンに一致するようになります。
  4. データベースのスナップショットを格納するディレクトリーを作成します。
    [root@satellite ~]# mkdir ~/dbbackup
    [root@satellite ~]# cd ~/dbbackup
    
  5. spacewalk-dump-schema を使ってデータベースをエクスポートします。
    [root@satellite dbbackup]# spacewalk-dump-schema --to=oracle > migrate-to-oracle.sql
    
  6. 組み込みデータベースを停止します。
    [root@satellite dbbackup]# db-control stop
    
  7. Satellite サーバー上で PostgreSQL ドライバーおよび設定スクリプトを Oracle ドライバーおよび設定スクリプトに交換します。
    [root@satellite dbbackup]# yum remove -y spacewalk-postgresql
    [root@satellite dbbackup]# yum install -y spacewalk-oracle
    [root@satellite dbbackup]# yum remove -y spacewalk-java-postgresql spacewalk-backend-sql-postgresql
    
  8. spacewalk-setup を使って外部 Oracle データベースを作成します。
    [root@satellite dbbackup]# spacewalk-setup --db-only --external-oracle
    
    このスクリプトはデータベースの詳細を要求して、Satellite がデータベースの接続と設定を実行できるようにします。外部 Oracle データベースの詳細を入力します。
    ** Database: Setting up database connection for Oracle backend.
    Database service name (SID)? oracledb
    Database hostname [localhost]? oracledb.example.com
    Database (listener) port [1521]?
    
    スクリプトでデータベースを設定します。

    重要

    Red Hat Satellite データベースには、デフォルトの Oracle データベースポート (1521) を使用してください。別のポートを使用すると SELinux エラーが発生する場合があります。
  9. スクリプトでデータベース作成を完了したら、データベーススキーマを復元します。
    [root@satellite dbbackup]# spacewalk-sql -i < migrate-to-oracle.sql
    

    重要

    移行スクリプトの SELinux コンテキストは、Oracle データベースに読み込む前に変更する必要がある場合があります。
    [root@satellite dbbackup]# semanage fcontext -a -t oracle_sqlplus_exec_t /root/dbbackup/migrate-to-oracle.sql
    [root@satellite dbbackup]# restorecon -v /root/dbbackup/migrate-to-oracle.sql
    
    同様に、ダンプされた表の SELinux コンテキストを変更する必要があることがあります。
    [root@satellite dbbackup]# semanage fcontext -a -t oracle_tmp_t "/tmp/dumped-tables(/.*)?"
    [root@satellite dbbackup]# restorecon -R -v /tmp/dumped-tables/
    
  10. Satellite サーバーから PostgreSQL および spacewalk-dobby パッケージを削除します。
    [root@satellite ~]# yum remove rh-postgresql95 rh-postgresql95-postgresql rh-postgresql95-postgresql-contrib rh-postgresql95-postgresql-libs rh-postgresql95-postgresql-server rh-postgresql95-postgresql-pltcl spacewalk-dobby
    
  11. Red Hat Satellite を起動します。
    [root@satellite ~]# rhn-satellite start
    
これで、データベースが組み込みデータベースから外部 Oracle データベースに移行されました。

12.8.4. 管理データベースから組み込みデータベースへの移行

管理データベースから組み込みデータベースへの移行における要件は、以下の通りです。
  • Red Hat Satellite のインストール ISO
  • Red Hat Satellite サーバーの完全インストール (satellite.example.com) と組み込みデータベースを使用した別個のサーバー (manageddb.example.com)

手順12.5 組み込みデータベースへの移行

  1. Satellite サーバーで主要サービスを停止します。
    [root@satellite ~]# rhn-satellite stop
  2. 管理データベースサーバーでデータベースをシャットダウンします。
    [root@manageddb ~]# db-control stop
    
  3. サーバーに rhn-upgrade パッケージがある場合は、これを削除します。
    [root@satellite ~]# yum remove rhn-upgrade
    
  4. db-control を使ってデータベースのバックアップを管理データベースサーバー上に作成し、これを Satellite サーバーにコピーします。
    [root@manageddb ~]# mkdir ~/dbbackup
    [root@manageddb ~]# db-control backup ~/dbbackup
    [root@manageddb ~]# scp -r ~/dbbackup root@satellite.example.com:~/.
    
    これで、管理データベースサーバーは他の目的に使用できるようになりました。これ以降の動作 Satellite サーバーで実行します。
  5. Red Hat Satellite インストール ISO を Satellite サーバーにマウントし、YUM0 変数を Red Hat Satellite のマウントポイントの値で設定し、エクスポートします。
    [root@satellite ~]# mkdir /media/cdrom
    [root@satellite ~]# mount -o loop Red_Hat_Satellite_58.iso /media/cdrom
    [root@satellite ~]# export YUM0=/media/cdrom
    
  6. red-hat-satellite リポジトリーを有効にします。red-hat-satellite リポジトリー定義が存在しない場合は、$YUM0/Satellite にある satellite-repo パッケージをインストールします。red-hat-satellite リポジトリーを有効にしたら、@satellite-database パッケージグループをインストールし、red-hat-satellite リポジトリーを無効にします。
    [root@satellite ~]# yum install @satellite-database --enablerepo=red-hat-satellite
    
  7. db-control を使ってデータベースのバックアップを復元します。
    [root@satellite ~]# db-control restore ~/dbbackup
    
  8. /etc/rhn/rhn.conf ファイルで db_port と db_hostname の値を削除します。
    [root@satellite ~]# sed -i 's/db_host\s*=.*/db_host = /' /etc/rhn/rhn.conf
    [root@satellite ~]# sed -i 's/db_port\s*=.*/db_port = /' /etc/rhn/rhn.conf
    
  9. rh-postgresql95-postgresql サービスを /etc/rhn/service-list ファイルに追加し、これが Red Hat Satellite と並行して起動し、停止されることを確認します。
    [root@satellite ~]# echo "SERVICES=\"rh-postgresql95-postgresql \$SERVICES\"" >> /etc/rhn/service-list
    
  10. Red Hat Satellite を起動します。
    [root@satellite ~]# rhn-satellite start
    
これで、データベースが管理データベースから組み込みデータベースに移行しました。

12.8.5. 外部 PostgreSQL データベースから組み込みデータベースへの移行

外部 PostgreSQL データベースから組み込みデータベースへの移行における要件は、以下の通りです。
  • 外部 PostgreSQLデータベース (postgresql.example.com) を使用する Red Hat Satellite サーバーの完全インストール (satellite.example.com)

手順12.6 外部 PostgreSQL データベースから組み込みデータベースへの移行

  1. Red Hat Satellite サーバー上ですべてのサービスをシャットダウンします。
    [root@satellite ~]# rhn-satellite stop
    
  2. 外部 PostgreSQL データベースが実行中であることを確認します。
  3. サーバーに rhn-upgrade がある場合は、これを削除します。
    [root@satellite ~]# yum remove rhn-upgrade
    
  4. 外部 PostgreSQL データベースを最新のスキーマバージョンに更新します。
    [root@satellite ~]# yum update satellite-schema
    [root@satellite ~]# spacewalk-schema-upgrade
    
    これにより、使用中のデータベースのバージョンが組み込みデータベースの最新バージョンに一致するようになります。
  5. データベースのスナップショットを格納するディレクトリーを作成します。
    [root@satellite ~]# mkdir ~/dbbackup
    [root@satellite ~]# cd ~/dbbackup
    
  6. spacewalk-dump-schema を使ってデータベースをエクスポートします。
    [root@satellite dbbackup]# spacewalk-dump-schema --to=postgresql > migrate-to-postgresql.sql
    
  7. 外部データベースが不要になったので、これを停止します。
  8. Satellite サーバーに PostgreSQL インストールおよび Satellite データベースツールのパッケージをインストールします。
    [root@satellite dbbackup]# yum install -y spacewalk-setup-postgresql spacewalk-dobby
    
  9. spacewalk-setup を使って組み込みデータベースを設定します。
    [root@satellite dbbackup]# spacewalk-setup --db-only
    
    このスクリプトでデータベースが作成されます。プロセスが完了するまで待機します。
    ** Database: Setting up database connection for PostgreSQL backend.
    ** Database: Installing the database:
    ** Database: This is a long process that is logged in:
    ** Database:   /var/log/rhn/install_db.log
    *** Progress: #
    ** Database: Installation complete.
    ** Database: Populating database.
    *** Progress: ####################################
    
  10. スクリプトがデータベース作成を完了したら、データベーススキーマを復元します。
    [root@satellite dbbackup]# spacewalk-sql -i < migrate-to-postgresql.sql
    
  11. Red Hat Satellite を起動します。
    [root@satellite ~]# rhn-satellite start
    
これで、データベースが外部 PostgreSQL データベースから組み込みデータベースに移行しました。

12.8.6. 外部 Oracle データベースから組み込みデータベースへの移行

外部 Oracle データベースから組み込みデータベースへの移行における要件は、以下の通りです。
  • 外部 Oracle データベース (oracledb.example.com) を使用する Red Hat Satellite サーバーの完全インストール (satellite.example.com)

手順12.7 Oracle データベースから組み込みデータベースへの移行

  1. Red Hat Satellite サーバー上ですべてのサービスをシャットダウンします。
    [root@satellite ~]# rhn-satellite stop
    
  2. 外部 Oracle データベースが実行中であることを確認します。
  3. サーバーに rhn-upgrade がある場合は、これを削除します。
    [root@satellite ~]# yum remove rhn-upgrade
    
  4. 外部 Oracle データベースを最新のスキーマバージョンに更新します。
    [root@satellite ~]# yum update satellite-schema
    [root@satellite ~]# spacewalk-schema-upgrade
    
    これにより、使用中のデータベースのバージョンが組み込みデータベースの最新バージョンに一致するようになります。
  5. データベースのスナップショットを格納するディレクトリーを作成します。
    [root@satellite ~]# mkdir ~/dbbackup
    [root@satellite ~]# cd ~/dbbackup
    
  6. spacewalk-dump-schema を使ってデータベースをエクスポートします。
    [root@satellite dbbackup]# spacewalk-dump-schema --to=postgresql > migrate-to-postgresql.sql
    
  7. 外部 Oracle データベースが不要になったので、これを停止します。
  8. Satellite サーバー上で Oracle ドライバーおよび設定スクリプトを PostgreSQL ドライバーおよび設定スクリプトと交換します。
    [root@satellite dbbackup]# yum remove -y spacewalk-oracle
    [root@satellite dbbackup]# yum install -y spacewalk-postgresql spacewalk-setup-postgresql spacewalk-dobby
    [root@satellite dbbackup]# yum remove -y spacewalk-java-oracle spacewalk-backend-sql-oracle
    
  9. spacewalk-setup を使って組み込みデータベースを作成します。
    [root@satellite dbbackup]# spacewalk-setup --db-only
    
    このスクリプトでデータベースが作成されます。プロセスが完了するまで待機します。
    ** Database: Setting up database connection for PostgreSQL backend.
    ** Database: Installing the database:
    ** Database: This is a long process that is logged in:
    ** Database:   /var/log/rhn/install_db.log
    *** Progress: #
    ** Database: Installation complete.
    ** Database: Populating database.
    *** Progress: ####################################
    
  10. スクリプトがデータベース作成を完了したら、データベーススキーマを復元します。
    [root@satellite dbbackup]# spacewalk-sql -i < migrate-to-postgresql.sql
    
  11. Red Hat Satellite を起動します。
    [root@satellite ~]# rhn-satellite start
    
これで、データベースが外部 Oracle データベースから組み込みデータベースに移行しました。

12.8.7. 外部 Oracle データベースから外部 PostgreSQL データベースへの移行

外部 Oracle データベースから外部 PostgreSQL データベースへの移行における要件は、以下の通りです。
  • 外部 Oracle データベース (oracledb.example.com) を使用する Red Hat Satellite サーバーの完全インストール (satellite.example.com)
  • 実行中の PostgreSQL (postgresql.example.com) インスタンスをホストするシステム。設定の詳細については、「PostgreSQL データベースの要件」 を参照してください。

手順12.8 Oracle データベースから外部データベースへの移行

  1. Red Hat Satellite サーバー上ですべてのサービスをシャットダウンします。
    [root@satellite ~]# rhn-satellite stop
    
  2. 外部 Oracle データベースが実行中であることを確認します。
  3. サーバーに rhn-upgrade がある場合は、これを削除します。
    [root@satellite ~]# yum remove rhn-upgrade
    
  4. 外部 Oracle データベースを最新のスキーマバージョンに更新します。
    [root@satellite ~]# yum update satellite-schema
    [root@satellite ~]# spacewalk-schema-upgrade
    
    これにより、使用中のデータベースのバージョンが外部データベースの最新バージョンに一致するようになります。
  5. データベースのスナップショットを格納するディレクトリーを作成します。
    [root@satellite ~]# mkdir ~/dbbackup
    [root@satellite ~]# cd ~/dbbackup
    
  6. spacewalk-dump-schema を使ってデータベースをエクスポートします。
    [root@satellite dbbackup]# spacewalk-dump-schema --to=postgresql > migrate-to-postgresql.sql
    
  7. 外部 Oracle データベースが不要になったので、これを停止します。
  8. Satellite サーバー上で Oracle ドライバーおよび設定スクリプトを PostgreSQL ドライバーおよび設定スクリプトと交換します。
    [root@satellite dbbackup]# yum remove -y spacewalk-oracle
    [root@satellite dbbackup]# yum install -y spacewalk-postgresql
    [root@satellite dbbackup]# yum remove -y spacewalk-java-oracle spacewalk-backend-sql-oracle
    
  9. spacewalk-setup を使って外部データベースを作成します。
    [root@satellite dbbackup]# spacewalk-setup --db-only --external-postgresql
    
    このスクリプトはデータベースの詳細を要求し、Satellite がデータベースの接続と設定を実行できるようにします。外部 PostgreSQL データベースの詳細を入力します。
    ** Database: Setting up database connection for PostgreSQL backend.
    Hostname (leave empty for local)? postgresql.example.com
    Port [5432]?
    Database? myextdb
    Username? root
    Password?
    
  10. スクリプトでデータベースの作成を完了したら、データベーススキーマを復元します。
    [root@satellite dbbackup]# spacewalk-sql -i < migrate-to-postgresql.sql
    
  11. Red Hat Satellite を起動します。
    [root@satellite ~]# rhn-satellite start
    
これで、データベースが外部 Oracle データベースから外部 PostgreSQL データベースに移行しました。