トップ > 日医標準レセプトソフト > 運用のための各種設定 > 障害発生時の復旧方法 > 正常なサーバーより、データベースの内容をコピーする方法

正常なサーバーより、データベースの内容をコピーする方法

障害のないもう一方のサーバからデータベースをコピーする方法として、以下の3つの方法があります。

  1. 主従サーバの同期をとる方法
  2. PostgreSQLの管理ファイルを含めた、すべてのファイルをコピーして、主従サーバの同期をとる方法
  3. 同期ツール「jma-dbsync.sh」を使って、主従サーバの同期をとる方法

上記の作業は、いずれも「日レセ」のプログラムをすべて停止した状態でおこなってください。 停止していない場合、データベースへの書き込みに失敗する危険性があります。 以下のコマンドを実行して下さい。

$ ps ax|egrep 'glserver|monitor|glauth'

プロセスが表示されなければ日レセは停止した状態です。 もしも、プロセスが表示されましたら、日レセが起動している状態です。その場合は、以下のコマンドを実行してください。

$ sudo service jma-receipt stop

上記のコマンドを実行しますと、日レセが停止します。(「ps ax | egrep 'glserver|monitor|glauth'」で確認できます。)

主従サーバの同期をとる方法

後述するデータベースの同期方法は、以下の3つの環境での作業を想定しています。

  • Ubuntu 16.04
  • Ubuntu 12.04

主従サーバの同期をとる作業は以下の順番でおこないます。

  1. データベースのバックアップ
  2. データベースのコピー
  3. 同期先のデータベースの初期化
  4. バックアップの書き込み
  5. 日レセの起動
  6. 主従サーバの同期作業の例
  1. データベースのバックアップ [バックアップの作成元での作業]

    作業ディレクトリ作成後、「orca」データベースのバックアップをおこないます。

    $ mkdir ~/(作業ディレクトリ)
    $ sudo -u orca pg_dump -Fc orca > ~/(作業ディレクトリ)/(バックアップファイル名)
  2. データベースのコピー [バックアップの作成元での作業]

    [バックアップ作成元]から[バックアップ書き込み元]へ、「scp」コマンドを使ってバックアップファイルをコピーしてください。

    $ scp (バックアップファイル) (ユーザー名)@(コピー先IPアドレス):(コピー先ディレクトリ)

    上記コマンドを実行すると、相手先ユーザー名のパスワードを聞いてきますので、ユーザーに対応したパスワードを入力してください。

  3. 同期先のデータベースの初期化 [バックアップの書き込み先での作業]

    同期先のデータベースを一度削除することで、既存のデータベースの内容を一時的に削除します。

    $ sudo -u orca dropdb orca

    削除後に、再びデータベースを作成します。なお、環境によりデータベースの作成手順が異なります。

    $ sudo jma-setup --noinstall

    以上で、空のデータベースが作成されます。

  4. バックアップの書き込み [バックアップの書き込み先での作業]

    同期先のデータベースにバックアップした内容を書き込みます。

    以下のコマンドを実行してください。

    $ sudo -u orca pg_restore -O -x -d orca (コピー先ディレクトリ)/(バックアップファイル)
    $ sudo jma-setup
  5. 日レセの起動 [バックアップの作成元・書き込み先での作業]

    同期の作業が終わりましたら、日レセを起動しなければなりません。 以下のコマンドを実行して、日レセを起動してください。

    $ sudo service jma-receipt start
  6. 主従サーバの同期作業の例

    ここでは、主従サーバの同期作業の例を記載します。

    • 従サーバのデータベースから、主サーバのデータベースへ同期をとる場合

      作業環境はUbuntu10.04[Lucid]、バックアップファイル名は「orca.dump」、従サーバ(作成元)の作業ディレクトリは「~/work」。主サーバ(書込み先)のIPアドレスは「192.168.1.5」、コピー先ディレクトリは「~/copy」。作業ユーザーは、主・従ともに「test」とします。

      主・従の両方のサーバで、日レセを停止。

      $ sudo service jma-receipt stop

      主サーバにコピー用のディレクトリを作成

      $ mkdir ~/copy

      従サーバで、バックアップの作成・コピー

      $ mkdir ~/work
      $ sudo -u orca pg_dump -Fc orca > ~/work/orca.dump
      $ scp ~/work/orca.dump test@192.168.1.5:~/copy

      次に、主サーバでデータベースの復旧

      $ sudo -u orca dropdb orca
      $ sudo jma-setup --noinstall
      $ sudo -u orca pg_restore -O -x -d orca ~/copy/orca.dump
      $ sudo jma-setup

      主・従の両方のサーバで、日レセを起動。

      $ sudo service jma-receipt start

PostgreSQLの管理ファイルを含めたすべてのファイルをコピーして、主従サーバの同期をとる方法

「/var/lib/postgresql」以下の管理ファイル・DBファイルを含めた、すべてのファイルをコピーすることで主従サーバの同期をとることができます。 この方法で主従サーバの同期をとった場合、DBのエラーチェックをおこないません。 そのため、コピー元のDBに問題があってもそのまま同期処理をおこない、処理後にDBのエラーが検出されることがあります。 ファイルのコピーは、以下の順番でおこないます。

  1. プログラムの停止
  2. ファイルのコピー
  3. PostgreSQLの起動
  4. 日レセの起動
  5. 主従サーバの同期作業の例

なお、同期をとる作業は同期先(データベースの書き込み先)でおこないます。

  1. プログラムの停止[データベースの作成元・書込み先での作業]

    データベースのファイルをコピーするためには、「PostgreSQL」のプログラムを停止する必要があります。

    • PostgreSQLの停止

      PostgreSQLを停止するために、以下のコマンドを入力してください。

      $ sudo service postgresql stop
  2. ファイルのコピー

    [データベースの作成元での作業]

    データベースのファイルは複数あるので、「tar」コマンドを使用してファイルをまとめます。以下のコマンドを入力して下さい。

    $ mkdir ~/(作業ディレクトリ)
    $ sudo tar cfvz ~/(作業ディレクトリ)/(バックアップファイル名) -C /var/lib/postgresql/(バージョン) ./
            (cオプションは、新しくアーカイブを作成。)
            (fオプションは、引数に指定したアーカイブファイルを使います。)
            (vオプションは、処理の詳細を出力。)
            (zオプションは、アーカイブをgzipにフィルタ。)
            (-Cオプションは、引数に指定したディレクトリに移動します。)
            
    [データベースの書込み先での作業]

    ファイルをコピーする前に、「/var/lib/postgresql/(バージョン)/main」ディレクトリの中身を削除します。 以下のコマンドを入力してください。

    $ sudo rm -rf /vat/lib/postgresql/(バージョン)/main
            (-rオプションは、指定されたディレクトリ以下も削除する指定です。)
            (-fオプションは、強制的に削除する指定です)
            

    上記の実行で、PostgreSQLの管理データ、DBデータが削除されます。 次に、以下のコマンドを入力してください。

    $ sudo scp -r (作成元ユーザー名)@(作成元IPアドレス):~/(作業ディレクトリ)/(バックアップファイル名) ~/
            (-rオプションは、指定されたディレクトリ以下もコピーする指定です) 
            
    $ sudo tar fxvz ~/(バックアップファイル名) -C /var/lib/postgresql/(バージョン)
            (xオプションは、アーカイブからファイルを抽出します。)
            

    上記の実行で「/var/lib/postgresql/(バージョン)/」にデータベース作成元のPostgreSQLの管理データ、DBデータがコピーされます。

  3. PostgreSQLの起動[データベースの作成元・書込み先での作業]

    PostgreSQLを起動します。以下のコマンドを入力して下さい。

    $ sudo service postgresql start

    上記のコマンドを実行して「Starting PostgreSQL (バージョン) database server」と表示されましたら、正常に起動した状態です。

    なお、データベースの内容の確認をおこないたい場合は、以下のコマンドを実行してください。

    $ sudo -u orca psql orca

    上記のコマンドで、orcaのデータベースの操作ができます。 終了したい場合は「¥q」コマンドを実行してください。

    PostgreSQLの詳細については、ドキュメントを参照してください。

  4. 日レセの起動[データベースの作成元・書込み先での作業]

    同期の作業が終わりましたら、日レセを起動しなければなりません。 以下のコマンドを入力して、日レセを起動してください。

    $ sudo service jma-receipt start

    以上で、主従サーバの同期は完了です。

  5. 主従サーバの同期作業の例

    以下に、主サーバのデータベースから、従サーバのデータベースへ同期をとる例を記載します。

    なお、PostgreSQLのバージョンは「8.4」、バックアップファイル名は「postgres_copy.tar.gz」、 主サーバのIPアドレスは「192.168.1.5」、作業ディレクトリは「~/work」。作業ユーザーは主・従ともに「test」とします。

    主・従サーバの日レセとPostgreSQLを停止。

    $ sudo service jma-receipt stop
    $ sudo service postgresql stop

    主サーバで以下のコマンドを入力し、管理ファイル・DBファイルをまとめます。

    $ mkdir ~/work
    $ sudo tar cfvz ~/work/postgres_copy.tar.gz -C /var/lib/postgresql/8.4/ ./

    従サーバで以下のコマンド入力し、データベースの同期とります

    $ sudo rm -rf /var/lib/postgresql/8.4/main/
    $ scp -r test@192.168.1.5:~/work/postgres_copy.tar.gz ~/
    $ sudo tar fxvz ~/postgres_copy.tar.gz -C /var/lib/postgresql/8.4/

    最後に、主・従サーバの日レセとPostgreSQLを起動します。

    $ sudo service jma-receipt start
    $ sudo service postgresql start

    「Starting PostgreSQL 8.4 database server」

同期ツール「jma-dbsync.sh」を使って、主従サーバの同期をとる方法

主従サーバの同期をとるためのツールとして、「jma-dbsync.sh」があります。 詳しい使用方法は「jma-dbsync.shの使用方法」を参照して下さい。

トップ > 日医標準レセプトソフト > 運用のための各種設定 > 障害発生時の復旧方法 > 正常なサーバーより、データベースの内容をコピーする方法

このページのトップへ