対象者
利用しているデータベースが、SQLite以外の方が対象です。
影響範囲
ジョブマネージャー(Pysilhouette)全体
今回の不具合について
インストーラーに不具合があり、どのデータベースパスを入力しても、ジョブマネージャー(Pysilhoutte)がSQLiteを選択してしまいます。
その結果、ネットワーク接続に対応していないSQLiteですと、マルチホストに対応することができなくなります。
この不具合の修正版を1.0.2でリリースしましたが、手動で行わなければならない作業がいくつかあります。
以下の手順でアップデートしてください。
1. データベースの作成
移行先のPysilhouetteデーターベースを作成してください。
PostgreSQLの場合
# createdb -U username -W pysilhouette --encoding=utf8
MySQLの場合
# mysql -u username -p -e 'CREATE DATABASE pysilhouette DEFAULT CHARACTER SET utf8;'
注意)
UTF-8でデータベースを作成してください。
2. 新パッケージをダウンロードし、伸長する
# rm -rf Karesansui # tar zxvf karesansui-<バージョン>-install-pack.tar.gz # cd Karesansui
3. 現在のデータベースパスの確認
現在のPysilhouetteのデータベースパスを取得しておきます。
sqlite:////var/opt/pysilhouette/pysilhouette.db
4. Karesansuiをアップデートする
Karesansuiをアップデートし、Pysilhouetteのデータベースを変更します。
チュートリアル を参考にKaresansuiをアップデートしてください。
# ./karesansui-install
「データベースを初期化する」のチェックを外してください! Karesansuiのデータベースが初期化されてしまいます!
5. インストールチェック
./karesansui-checkenvを実行しエラーがないか確認します。
また、「データベース pysilhouette に接続できるかをチェック... 」が指定したデータベースパスになっているか確認してください。
# ./karesansui-checkenv
6. データベースの移行
データベースをSQLiteからMySQLまたはPostgreSQLへコピーをします。
# cd /opt/pysilhouette/share/doc/pysilhouette-0.6.2/tool/ # export PYTHONPATH=/opt/hde/lib/python:/opt/karesansui/lib/python:/opt/pysilhouette/lib/python:$PYTHONPATH # ./sqlite2other.py --input=<移行元データベースパス> --output=<移行先データベースパス>
SQLite : sqlite:////var/opt/karesansui/pysilhouette.db MySQL : mysql://username:password@hostname:port/pysilhouette?charset=utf8 PostgreSQL : postgres://username:password@hostname:port/pysilhouette注意)
コマンドの実行結果で画面に出力される「copy num」の数値はあとで使用しますので、保管してください。 (copy num - xxx) のxxxの部分 sqlite2other.py は SQLite -> MySQL or PostgreSQLの移行のみサポートしています。例)
# ./sqlite2other.py --input=sqlite:////var/opt/pysilhouette/pysilhouette.db --output=mysql://username:password@localhost/pysilhouette?charset=utf8 Cleanup Database [OK] copy num - 3
参考)
データベースパスの書式の詳細な説明は、リファレンス を参考にしてください。
7. 自動インクリメントの変更
Pysilhouetteデータベースの自動インクリメントの値を変更します。
Pysilhouetteデータベースにアクセスして、下記のSQLを実行してください。
SQLの<copy numの数字>の部分は、「4. データベースの移行」の手順で実行した
./sqlite2other.pyで出力されるcopy numの数字に置き換えて実行してください。
PostgreSQLの場合
select setval('jobgroup_id_seq', <copy numの数字>);
select setval('job_id_seq', <copy numの数字>);
例)
# psql pysilhouette -U username -h localhost -c "select setval('jobgroup_id_seq', 3);"
# psql pysilhouette -U username -h localhost -c "select setval('job_id_seq' 3);"
MySQLの場合
ALTER TABLE jobgroup AUTO_INCREMENT = <copy numの数字>;
ALTER TABLE job AUTO_INCREMENT = <copy numの数字>;
例)
# mysql pysilhouette -u username -h localhost -p -e "ALTER TABLE jobgroup AUTO_INCREMENT = 3;"
# mysql pysilhouette -u username -h localhost -p -e "ALTER TABLE job AUTO_INCREMENT = 3;"
参考)# ./sqlite2other.py --input=<移行元データベースパス> --output=<移行先データベースパス> Cleanup Database [OK] copy num - 3 <-- 置き換える数字
# /etc/init.d/hde-lighttpd stop # /etc/init.d/silhouetted restart # /etc/init.d/hde-lighttpd start
概要
1.1では、ゲストOSの各種データのファイル・ディレクトリ構成が変更されました。下記手順でアップグレードを行うことで、各種ソフトウェアの更新を行うとともに、ファイル・ディレクトリ配置の変換も行います。
なお、アップグレードを行う場合は、重要なデータは別のサーバーへバックアップしてから行うことをお薦めします。
以降では、CentOS 5.3 (i386) を例に説明します。
# /etc/init.d/silhouetted stop # /etc/init.d/hde-lighttpd stop # /etc/init.d/hde-libvirtd stop # /etc/init.d/xend stop
1. ダウンロードした1.1のインストールパックを任意のディレクトリに展開します。
# tar zxvf karesansui-1.1.0-xxx-install-pack.tar.gz
2. 展開されたインストールパックに含まれるインストーラを実行します。
# cd Karesansui
# ./karesansui-install
3. インストーラの案内にしたがって、項目を入力します。
このとき、データベース設定の画面でデーターベース初期化を選択しますと、それまでのデータが消去されてしまいますのでアップグレードを行いたい場合は、選択しないようご注意下さい。
4.インストーラの実行が終了後
各種ソフトウェア更新と既存データの移行は完了です。以下のコマンドで、Karesansuiの実行環境に問題ないか確認してください。
# ./karesansui-checkenv