日医標準レセプトソフト Ubuntu 10.04 LTS(Lucid Lynx)版へのデータベース移行
他の日レセ環境からUbuntu 10.04 LTS(Lucid Lynx)へデータを移行するための手順です。
- Debian 4.0(Etch) → Ubuntu 10.04
- Ubuntu 8.04(Hardy) → Ubuntu 10.04
- Ubuntu 10.04(Lucid) → Ubuntu 10.04
また通常のpg_dumpによるバックアップ/リストアも同様の手順です。
pg_restoreによる手順とpsqlによる手順があります。
※ Ubuntu 10.04 LTS Lucid Lynx 日医標準レセプトソフトインストール手順書の手順でセットアップした環境を対象としています。
メニュー
データベースの移行手順(pg_restore編)(推奨)
pg_restoreによる手順を説明します。psqlによる手順よりもバックアップファイルが小さくなり、短い時間でリストア出来る可能性があります。
pg_dumpの「-Fc」を使用した形式のバックアップは pg_restore を使用してプレーンテキスト方式に変換することも出来るため、こちらを使用してのバックアップを推奨します
1. 旧環境でバックアップを取ります
日レセサーバを停止する必要は必ずしもありませんが、バックアップコマンド開始後の更新は混乱を招くため安全のために停止しておいた方がよいでしょう。
pg_dumpの「-Fc」を指定することによりカスタムアーカイブ形式でバックアップを取ります。このバックアップファイルは pg_restoreでリストアする必要があります。
※ 以下、実行時のフォルダ上のバックアップファイル名「orca.dump」として説明します。「orca.dump」を実際のバックアップファイル名に置き換えて実行してください。
$ sudo /etc/init.d/jma-receipt stop $ sudo -u orca pg_dump -Fc orca > orca.dump
orca.dump をUSBメモリ等を使用してUbuntu 10.04環境へコピーします。
2.新環境で日レセサーバを停止し初期データベースを削除します
jma-receipt-4.5/4.6では、インストール手順書の通りセットアップした状態では、既に初期のデータベース環境が構築されているためこれを削除します(4.7でもデータベースのセットアップ済みの場合は同様に削除します)。
$ sudo /etc/init.d/jma-receipt stop $ sudo -u orca dropdb orca
※ このとき orcaデータベースに接続しているアプリケーションがあると dropdbに失敗します。すべての接続を切断してから dropdbしてください。
3. 旧環境のバックアップファイルを新環境でリストアします
データベースを作成し直し 1.で取ったバックアップファイルをリストアします。
4.7環境
4.7環境では jma-setup --noinstallとするとデータベースが作成されますので、その後データベースをリストアします。
※もしデータベースのエンコーディングをUTF-8に変更している場合は /etc/jma-receipt/db.confに「DBENCODING="UTF-8"」を記述してから jma-setupを実行してください
$ sudo jma-setup --noinstall $ sudo -u orca pg_restore -x -O -d orca orca.dump
4.5/4.6環境
4.5/4.6環境ではcreatedbを実行してからデータベースをリストアします。
$ sudo -u orca createdb -lC -Ttemplate0 -EEUC-JP orca $ sudo -u orca pg_restore -x -O -d orca orca.dump
※ このときエラーとなって終了していないかに注意してください。エラーとなるようなデータがあった場合は旧環境でデータを修正してからバックアップをやり直した方がよいでしょう。
pg_restore に -x (--no-privileges)オプションをつけて実行すれば以下のWARNINGは出ません。
上記手順でバックアップを取得した場合にも「REVOKE ALL ON SCHEMA public FROM PUBLIC;」のような構文が入ってしまい、orcaユーザーではこの文を実行する権限がないため以下のようなWARNINGが出ます。手順に沿ってセットアップしていれば、この文は実行しなくても問題ないため、以下のWARNINGについては無視してください
pg_restore: WARNING: no privileges could be revoked for "public" pg_restore: WARNING: no privileges could be revoked for "public" pg_restore: WARNING: no privileges were granted for "public" pg_restore: WARNING: no privileges were granted for "public"
PostgreSQL 8.4から pg_restoreは並列化による同時実行がサポートされています。このオプションを適切に使用すると時間を節約することが出来ます。同時実行で動作させる場合は以下のオプションを使用します。「-j2」数字が同時実行数で目安はCPUのコア数になります。
$ sudo -u orca pg_restore -j2 -x -O -d orca orca.dump
※ オプションにより dropdb,createdbを省略して実行する事も可能ですが、よく理解していないとエラーを見逃したり、不要なテーブルが残る可能性があります。詳しいオプションについては PostgreSQLのマニュアルを参照してください。
4. 構造変換処理の実行
構造変換処理の実行を実行します。パッケージのバージョンより古いバージョンのデータベース構造だった場合は、パッケージバージョンと同じになるまでデータベースの構造を更新します。
4.7
4.7ではjma-setupというコマンドを実行します。
$ sudo jma-setup
最後に以下のように表示されれば、正常に終了しています。
Very Good! データベースの構造変更処理は終了しました
4.5/4.6
4.5/4.6では /usr/lib/jma-receipt/bin/jma-receipt-db-setup.sh というスクリプトを実行します。
$ sudo /usr/lib/jma-receipt/bin/jma-receipt-db-setup.sh
最後に以下のように表示されれば、正常に終了しています。
〜〜〜〜〜〜 (略)〜〜〜〜〜〜〜〜 orca | orca | EUC_JP | C | C | 更新プログラム管理テーブルクリア処理開始 delete from tbl_pgkanri ; DELETE 0 Done. Very Good! Done. Completed.
Etch版4.5.0 → lucid版4.5.0の移行のような場合に実行した場合はチェックのみですぐに終わります。
5. 日レセの起動
日レセを起動します。
$ sudo /etc/init.d/jma-receipt start
実際にクライアントから接続して確認してください。
カスタムアーカイブ形式からプレーンテキスト方式への変換
pg_restore を「-d」のデータベース指定オプションをつけない場合は標準出力にプレーンテキスト形式として出力されます。そのため、以下のようにすればプレーンテキスト形式に変換することが可能です。
※ psqlで使用するときにOwner情報や権限情報がエラーとなるため「-x -O」つけて実行します。
$ pg_restore -x -O orca.dump > orca_plain.dump
プレーンテキスト形式のバックアップはpsqlによるリストアで使用出来るようになります
データベースの移行手順(psql編)
psqlによるリストアではプレーンテキストによるバックアップのため、データの中身を確認しやすくエラー時の対応も取りやすいメリットがあります。
1. 旧環境でバックアップを取ります
日レセサーバを停止する必要は必ずしもありませんが、バックアップコマンド開始後の更新は混乱を招くため安全のために停止しておいた方がよいでしょう。
$ sudo /etc/init.d/jma-receipt stop $ sudo -u orca pg_dump -x -O orca > orca.dump
orca.dump をUSBメモリ等を使用してUbuntu 10.04環境へコピーします。 (使用していた環境によりバックアップファイルが2G byte を越えて大きくなっていることがあります。ファイルサイズの限界についても注意してください)
2.日レセサーバを停止し初期データベースを削除します
4.5/4.6のUbuntu 10.04 LTS Lucid Lynx 日医標準レセプトソフトインストール手順書による手順によりセットアップした状態では、既に初期のデータベース環境が構築されているためこれを削除します。(4.7でもデータベースのセットアップ済みの場合は同様に削除します)。
$ sudo /etc/init.d/jma-receipt stop $ sudo -u orca dropdb orca
このとき orcaデータベースに接続しているアプリケーションがあると dropdbに失敗します。すべての接続を切断してから dropdbしてください。
3. 旧環境のバックアップファイルをリストア
データベースを作成し直し 1.で取ったバックアップファイルをリストアします。
4.7環境
4.7環境では jma-setup --noinstallとするとデータベースが作成されますので、その後データベースをリストアします。
$ sudo jma-setup --noinstall $ sudo -u orca psql orca < orca.dump
4.5/4.6環境
4.5/4.6環境ではcreatedbを実行してからデータベースをリストアします。
$ sudo -u orca createdb -lC -Ttemplate0 -EEUC-JP orca $ sudo -u orca psql orca < orca.dump
※ このときエラーとなって終了していないかに注意してください。エラーとなるようなデータがあった場合は旧環境でデータを修正してバックアップからやり直した方がよいでしょう。
pg_dump 時に-x(--no-privileges)オプション をつけて実行すれば以下のWARNINGは出ません。
上記手順でバックアップを取得した場合にも「REVOKE ALL ON SCHEMA public FROM PUBLIC;」のような構文が入ってしまい、orcaユーザーではこの文を実行する権限がないため以下のようなWARNINGが出ます。手順に沿ってセットアップしていれば、この文は実行しなくても問題ないため、以下のWARNINGについては無視してください
WARNING: no privileges could be revoked for "public" REVOKE WARNING: no privileges could be revoked for "public" REVOKE WARNING: no privileges were granted for "public" GRANT WARNING: no privileges were granted for "public" GRANT
4. 構造変換処理の実行
構造変換処理の実行を実行します。パッケージのバージョンより古いバージョンのデータベース構造だった場合は、パッケージバージョンと同じになるまでデータベースの構造を更新します。
4.7
4.7ではjma-setupというコマンドを実行します。
$ sudo jma-setup
最後に以下のように表示されれば、正常に終了しています。
Very Good! データベースの構造変更処理は終了しました
4.5/4.6
4.5/4.6では /usr/lib/jma-receipt/bin/jma-receipt-db-setup.sh というスクリプトを実行します。
$ sudo /usr/lib/jma-receipt/bin/jma-receipt-db-setup.sh
最後に以下のように表示されれば、正常に終了しています。
〜〜〜〜〜〜 (略)〜〜〜〜〜〜〜〜 orca | orca | EUC_JP | C | C | 更新プログラム管理テーブルクリア処理開始 delete from tbl_pgkanri ; DELETE 0 Done. Very Good! Done. Completed.
Etch版4.5.0 → lucid版4.5.0の移行のような場合に実行した場合はチェックのみですぐに終わります。
5. 日レセの起動
日レセを起動します。
$ sudo /etc/init.d/jma-receipt start
実際にクライアントから接続して確認してください。
データベース操作の詳細
個別のデータベース操作の詳細です
データベース作成
Ubuntu 10.04(PostgreSQL 8.4)でデータベースを作成し直す場合はこれまでのコマンドではなく、必ず以下のようにオプションをつけてデータベースを作成してください(4.7以降では jma-setup --noinstallコマンドを推奨します)
$ sudo -u orca createdb -lC -Ttemplate0 -EEUC-JP orca
PostgreSQL 8.4からロケールがデータベース作成(createdb)時に選択出来るようになったため、インストール手順でのロケールの設定し直し手順がなくなりました。そのため、データベース作成(createdb)時にロケール、テンプレート名、エンコーディングを設定する必要があります。
正しいオプションでcreatedbした場合は以下のように実行するとデータベース一覧が表示され確認出来ます。
sudo -u postgres psql -l
結果が以下のように表示されますので orcaデータベースの所有者、エンコーディング、照合順序、Ctype(変換演算子)が違っていないか確認してください
データベース一覧 名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権 -----------+----------+------------------+-------------+-------------------+----------------------- orca | orca | EUC_JP | C | C | postgres | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | template0 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres : postgres=CTc/postgres template1 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres : postgres=CTc/postgres (4 行)
※もしオプションをつけ忘れてリストアしてしまった場合はデータベース文字エンコーディング変換を参照して修復をしてください
データベースユーザの作成
Ubuntu 10.04 LTS Lucid Lynx 日医標準レセプトソフトインストール手順書に従った場合はデータベースユーザーはパッケージにより作成されるので、手動で作成する機会はありませんが、もしorcaユーザーを作成する場合は以下のようにします。(4.7以降では jma-setup --noinstallコマンドを推奨します)
$ sudo -u postgres createuser --createdb --no-superuser --no-createrole orca
データベース移行のためのバックアップ
データベース移行のためのバックアップ手順は(Etch/Hardy/Lucid)共通です。
カスタムアーカイブ形式での場合は以下のコマンドでバックアップを所得してください。プレーンテキストの場合と違って「-O」は必要ありません。「-O」は pg_restore実行時につけます。
$ sudo -u orca pg_dump -Fc orca > orca.dump
プレーンテキスト形式での場合は以下のコマンドでバックアップを取得してください。pg_dumpのオプションは「-x」は小文字のエックス「-O」は大文字オーです。
$ sudo -u orca pg_dump -x -O orca > orca.dump
データベースリストア
pg_dumpのカスタムアーカイブ形式によるフォーマットでバックアップされたファイルをリストアするには以下のようにします。pg_restoreのオプションは 「-x」は小文字のエックス、「-O」は大文字オーです。「-d」の後にデータベース名を指定し、最後にバックアップファイル名を指定します。
$ sudo -u orca pg_restore -x -O -d orca orca.dump
pg_dumpのプレインテキストフォーマット(デフォルト)でバックアップされたファイルをリストアするには以下のようにします。psqlではデフォルトで標準入力からの入力を受け付けるため「<」をつけてバックアップファイル名を指定します。
$ sudo -u orca psql orca < orca.dump
Debian Etch版(PostgreSQL 8.1)、Ubuntu Hardy版(PostgreSQL 8.3)のバックアップファイルもそのままリストアすることが可能です。
※ PostgreSQL 8.1,8.3から8.4へのリストアのように上位のバージョンへは、このようにリストアすることが可能です。しかし 8.4から8.1へのようなバージョンダウンとなる場合はエラーとなる場合があり、サポート外となりますので注意してください。
日レセのバージョンが違う場合(例:Etch版4.4 → Lucid版4.5)構造変換処理が必要になります。リストア後以下のコマンドを実行してください。
$ sudo /usr/lib/jma-receipt/bin/jma-receipt-db-setup.sh
※ 日レセのバージョンダウンとなるような移行はサポート外となります。