ver 6.0.0-7.0.0 ⇒ 6.2.X,7.2.X
1. データベース構成および要件
移行を開始する前に、移行元環境と移行先環境の両方が以下の条件を満たしていることを確認してください。
環境要件
1. PHPバージョン
Job Arranger Server/Manager(6.2.x / 7.2.x)がインストールされている環境でPHPマイグレーションスクリプトを実行するには、PHP 7.2以降が必要です。
php -v
2. データベースタイプ
移行元データベースと移行先データベースは、同じタイプ(例: MySQL または PostgreSQL)である必要があります。
データベースユーザーは、両方のデータベースに対して読み取りおよび書き込み権限を持っていることを確認してください。
移行元データベース: バージョン 6.0.x - 6.1.x / 7.0.x - 7.1.x で使用されている既存のJob Arrangerデータベース
移行先データベース: バージョン 6.2.x / 7.2.x で使用するJob Arrangerデータベース
3. 権限設定と初期設定
(3.1) 初期データベース設定
移行を実行する前に、ターゲット環境で初期データ登録がすでに完了していることを確認してください。
ジョブアレンジャーサーバーのインストール後に、初期データスクリプトを実行する必要があります。
(3.2) ターゲットデータベースの状態
移行を実行する前に、ターゲットデータベースはクリーンな初期状態である必要があります。
以下のいずれかの条件が該当する場合:
- ターゲット環境でジョブネットを作成し、ジョブを実行した場合
- 移行前にデータベースに手動でデータを挿入した場合
ターゲットデータベースは移行に適した状態ではなくなります。その場合には、以下の手順に従ってください。
- MySQL_JA_DROP_TABLE.sqlまたは、PostgreSQL_JA_DROP_TABLE.sqlを実行 新Versionがインストールされてないと使用中のTableが削除されるので要注意。
- 初期設定スクリプトを再度実行する
- 移行プロセスを実行する
これにより、一貫性が保たれ、主キーの競合やデータの破損が防がれます。
※ ターゲットデータベースからテーブルやデータを手動で削除しないでください。
(3.3) 移行のための認証情報の設定
認証情報を設定するためには、移行ディレクトリに移動してください。
cd /usr/share/doc/jobarranger-server/database/migrate/
Debian/Ubuntu 環境の場合、移行スクリプトは圧縮された .gz ファイルで提供されます。これらのファイルを解凍するには、以下のコマンドを実行してください。 既にファイルが存在する場合、上書き確認のメッセージが表示されます。その場合は「y」を入力してください。
gunzip migrate.php.gz gunzip migrate_compare.php.gz config.php
Red Hat ベースの環境では、スクリプトはすでに解凍され、以下のように利用可能です:
migrate.php migrate_compare.php config.php
config.phpファイルを開くと、移行前(jaz1)および移行先(jaz2)データベースへの接続設定が定義されているセクションがあります。 ※jaz1とjaz2は両方とも同じパラメータ名(host, port, dbname, user, pass)を使用しますが、それぞれconfig.phpファイルの別々のセクションに定義されています。
以下のセクションでは、データベース移行設定について説明します。
1.グローバル設定
| パラメータ | 説明 | 必須値 |
|---|---|---|
| dbType | 両方の環境で使用されるデータベースの種類 | mariadb / mysql / pgsql |
| dryRun | "true"に設定すると、移行はテストモードで実行され、データを移行せずに実際に起こることを表示します。これはテスト目的のみです。 | true / false |
2. 移行前データベース
jaz1 はソースデータベースを定義します。
| パラメータ | 説明 | 例示値 |
|---|---|---|
| host | ソースDBホストアドレス | 127.0.0.1 |
| port | ソースDBポート | 3306 |
| dbname | ソースデータベース名(旧環境) | zabbix |
| user | 読み取り権限を持つDBユーザー | zabbix |
| pass | ソースDBユーザーのパスワード | zabbix |
3. 移行先データベース
jaz2 は移行先データベース(移行データが保存される新しい Job Arranger データベース)を定義します。
| パラメータ | 説明 | 例示値 |
|---|---|---|
| host | ターゲットDBホストアドレス | 127.0.0.1 |
| port | ターゲットDBポート | 3306 |
| dbname | ターゲットデータベース名(新しい環境) | zabbix |
| user | 読み取り権限を持つDBユーザー | zabbix |
| pass | ターゲットDBユーザーのパスワード | zabbix |
4.タイムゾーンの設定(オプション)
| パラメータ | 説明 | 例示値 |
|---|---|---|
| timezone | ターゲットデータベースのタイムゾーン列の値を設定します。設定されていない場合、スクリプトは現在のOSのタイムゾーンを使用します。 | Asia/Yangon |
2. サービスの中断
データ整合性の観点から、すべてのサービスを停止した状態で進めてください。
サービスの中断
systemctl stop jobarg-server systemctl stop jam-cleanup
停止確認
systemctl status jobarg-server systemctl status jam-cleanup
3. 移行の実行
安全のためにja_*テーブルのバックアップを取得してください。
ジョブアレンジャーマネージャーがインストールされている環境で移行スクリプトを実行してください。
php migrate.php
実行結果
(1) 成功した場合
スクリプトが正常に完了すると、以下のメッセージが表示されます:
All migrations finished successfully.
その後、データ検証ステップに進んでください。
(2) エラーが発生した場合
実行中にエラーメッセージが表示された場合:
- 出力またはログファイルでエラーの詳細を確認してください。
- 原因を特定してください(例:データベース接続の問題、設定エラー、データの不整合)
- 問題を修正し、移行スクリプトを再実行してください。
問題が解決できない場合は、サポートチームにお問い合わせください。
4. データ検証
このステップでは、移行前データベースと移行先データベース間で移行されたデータが一貫しているかどうかを確認します。
4.1 比較の実行
次のコマンドを実行してください:
php migrate_compare.php
4.2 実行結果
実行後、以下のいずれかの結果が表示されます:
1. 成功(実行時エラーなし)
Comparison result has been written to /path/migrate_compare_YYYYmmdd_HHMMss.csv
これにより、比較プロセスが正常に完了したことが確認できます。
2. エラー
[ERROR] encountered while comparing migrated data: runtime error
migrate_compare_YYYYmmdd_HHMMss.log ファイルを確認し、問題を修正した後、コマンドを再実行してください。
4.3 結果の確認
実行が成功した後、CSVファイルを確認してください:
migrate_compare_YYYYmmdd_HHMMss.csv
is_different 列を確認してください。
4.4 差異の処理
差異が見つかった場合:
| ステータス | 意味 | 対応 |
|---|---|---|
| YES | データ不一致 | レコードを比較し、データを修正するか、移行を再実行してください |
| ROW_MISSING | ターゲットに欠落した行 | 移行を再実行するか、欠落したデータを挿入してください |
| EXTRA_ROW | ターゲットに余分な行 | 不要なデータを削除するか、ターゲットテーブルをクリーンアップしてください |
| EXTRA_FIELDS | スキーマの違い | 新しいバージョンで期待されるものか確認し、有効な場合は対応不要 |
その後、以下を再実行してください:
php migrate.php php migrate_compare.php
5. 古いテーブルの処理
正常な検証が完了した後、バックアップ目的で一定期間古いテーブルを保持してください。これらを即座に削除しないようにしてください。
この期間中に新しいJAZテーブルが正常に機能していることが確認された場合、関連するバージョンのDROP TABLEスクリプトを使用して移行前データベースのテーブルを削除することができます。
リファレンススクリプトは、JobArrangerサーバーのアンインストール手順の
ステップ
③を参照してください。