ORCA 別サーバーからのデータベース移行(バージョンアップも対応)

元サーバーが EUC で、現サーバーが UTF-8 になってたら、一度 EUC に戻します。
作業はコピー先サーバー

sudo rm -f /etc/jma-receipt/db.conf

コピー元サーバーにて ORCA を一度停止します。

sudo service jma-receipt stop

コピー作業は、コピー先サーバーにて以下のコマンドで。

sudo service jma-receipt stop
sudo service postgresql restart
sudo -u orca dropdb orca
sudo jma-setup --noinstall
sudo service jma-receipt stop
sudo rm -Rf orca.dump
sudo -u orca pg_dump -Fc orca -h コピー元サーバー > orca.dump
sudo -u orca pg_restore -x -O -d orca orca.dump
sudo jma-setup

レストア時に以下のようなエラーが出ることがありますが、問題ないそうです。

pg_restore: [archiver (db)] could not execute query: ERROR:  must be owner of extension plpgsql
    Command was: COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';

データベースの更新は、 jma-setup が勝手にやってくれます。
上記の

sudo -u orca pg_dump -Fc orca -h コピー元サーバー > orca.dump

が終わり次第、必要があればコピー元サーバーの ORCA を起動します。
コマンドはコピー元サーバーにて、

sudo service jma-receipt start

その後、文字コードを EUC から UTF-8 に変更するなら、
(以後の作業はコピー先サーバー

sudo service jma-receipt stop
sudo service postgresql restart
sudo echo "DBENCODING=\"UTF-8\"" > /etc/jma-receipt/db.conf

一番下の行の命令で /etc/jma-receipt/db.conf の中身を

DBENCODING="UTF-8"

の、1行のファイルにしてます。ファイルを消せば EUC になります。

sudo -u orca /usr/lib/jma-receipt/bin/jma-dbconvert.sh
sudo jma-setup

を実行して、データベースの変換を行います。

ORCA Ver.4.7.0 Ubuntu 12.04 では、

ERROR:  must be owner of extension plpgsql

みたいなエラーが出るようですが、

sudo -u postgres psql orca -c "COMMENT ON EXTENSION plpgsql IS NULL;"

で、一度コメントを削除(返還後復活するそうです)して、実行すればいいそうです。
確認は、

sudo -u orca /usr/lib/jma-receipt/bin/jma-dbconvert.sh

にて、

                                    List of databases
    Name     |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-------------+----------+----------+-------------+-------------+-----------------------
 orca        | orca     | UTF8     | C           | C           | 
 orca_backup | orca     | EUC_JP   | C           | C           |

みたいな感じになるようです。

抜粋:ORCA の Ubuntu 16.04 LTS ページ より

コメントを残す