外部媒体にバックアップしたファイルを、サーバのデータベースに書き込む方法
主従サーバの両方で障害が発生した場合に、外部媒体にバックアップを作成していればバックアップしたファイルからサーバのデータベースを復旧することができます。
以下の3つの環境での作業を想定しています。
- Ubuntu16.04
- Ubuntu14.04
メニュー
外部媒体へのバックアップ方法詳細
復旧方法詳細
外部媒体へのバックアップ実行例
復旧時のコマンド実行例
外部媒体へのバックアップ方法詳細
外部媒体へのバックアップをおこないます。
データベースのバックアップ
作業をおこなう前に、日レセが停止しているか確認して下さい。
$ ps ax | egrep 'glserver|monitor|glauth'
上記コマンド実行して、プロセスが表示されなければ日レセは停止した状態です。 プロセスが表示された場合は、以下のコマンドを入力すれば日レセが停止します。
$ sudo service jma-receipt stop
日レセの停止が確認できましたら、バックアップ作業をおこないます。まず、一時的な作業領域を確保するために以下のコマンドを入力して下さい。
$ mkdir ~/(作業用ディレクトリ名)
次に、「orca」データベースからバックアップをとります。
以下のコマンドを入力して下さい。
$ sudo -u orca pg_dump -Fc orca > ~/(作業用ディレクトリ)/(バックアップファイル名)
これで、作業ディレクトリの中に現時点での「orca」データベースのバックアップが作成されました。
バックアップの暗号化(gpg)
作成したバックアップファイルをgpgコマンドで暗号化します。
暗号化方法には「パスフレーズによる暗号化」と、予め公開鍵を作成しておき、その鍵を暗号化の際に使用する「鍵による暗号化」の2つがあります。
- パスフレーズによる暗号化
以下のように、暗号化する際にパスフレーズの入力が求められます。ここで入力したパスフレーズが復号化の際に必要となります。また、入力したパスフレーズは画面に表示されません。
$ gpg -c ~/(作業ディレクトリ)/(バックアップファイル) パスフレーズを入力:(パスフレーズ) パスフレーズを再入力:(パスフレーズ)
- 鍵による暗号化
1.鍵の作成
暗号化する前に鍵を作成します。(鍵は一度作成したら次回からは作成する必要はありません)
[Enter]と表記している部分は何も入力せずにEnterキーを押す(defaultの設定を使用する)という意味になります。
$ gpg --gen-key (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (sign only) (4) RSA (sign only) Your selection? 1
「DSA and Elgamal」を選択して下さい。以下に続きます。
DSA keys may be between 1024 and 3072 bits long. What keysize do you want? (2048) [Enter] 要求された鍵長は2048ビット 鍵の有効期限を指定して下さい。 0 = 鍵は無期限 <n> = 鍵は n 日間で満了 <n>w = 鍵は n 週間で満了 <n>m = 鍵は n か月間で満了 <n>y = 鍵は n 年間で満了 鍵の有効期限は? (0) [Enter] これで正しいですか? (y/N) y あなたの鍵を同定するためにユーザーIDが必要です。 このソフトは本名、コメント、電子メール・アドレスから 次の書式でユーザーIDを構成します: 本名: (ユーザー名) 電子メール・アドレス: (メールアドレス) コメント: 次のユーザーIDを選択しました: "ユーザー名 <メールアドレス>" 名前(N), コメント(C), 電子メール(E)の変更、またはOK(O)か終了(Q)? O 秘密鍵を保護するためにパスフレーズがいります。 パスフレーズを入力: (パスフレーズ) パスフレーズを再入力: (パスフレーズ)
ここで、入力したパスフレーズが復号化の際に必要となります。以下に続きます。
今から長い乱数を生成します。キーボードを打つか、マウスを動かすとか、 ディスクにアクセスするとかの他のことをすると、乱数生成しで乱雑さの 大きないい乱数を生成しやすくなるので、おすすめ致します。 ......................+...............+++................+++++++... ................................
この時に、画面に表示されているようにマウスやキーボードの操作、ディスクへのアクセスをおこなって下さい。
以下のメッセージが表示されましたら、鍵の作成は完了です。
公開鍵と秘密鍵を作成し、署名しました。
2.暗号化
作成した鍵を使用してバックアップファイルを暗号化します。
$ gpg -e -r (ユーザーID) ~/(作業ディレクトリ)/(バックアップファイル)
上記のA、Bどちらの方法とも、作業ディレクトリの中に[.gpg]の拡張子が付いたファイルが作成されます。このファイルが暗号化されたバックアップファイルになります。
- パスフレーズによる暗号化
外部媒体へバックアップをコピー
暗号化したバックアップファイルを(CDやMO,HDDなどの)外部媒体へコピーします。コピー方法については、Linuxのマニュアル等を参照して下さい。また、外部媒体のマウント方法については、媒体を接続しますと自動でマウントされます。もしも自動でマウントされない場合はLinuxのマニュアル等を参照してマウントをおこなって下さい。
コピーするバックアップファイルは暗号化(拡張子が.gpg)したファイルをコピーして下さい。
コピー後作業ディレクトリを削除します。
$ rm -rf ~/(作業ディレクトリ)/ (-rオプションは、指定されたディレクトリ以下も削除する指定です。) (-fオプションは、強制的に削除する指定です)
以上で外部媒体へのバックアップ作業は完了です。
復旧方法詳細
-
作業用ディレクトリの作成
外部媒体からバックアップをコピーする際に、一時的に作業領域を確保する必要があります。
以下のコマンドを入力してください。
$ mkdir ~/(作業用ディレクトリ名)
-
媒体からハードディスクへのコピー
作業用ディレクトリが作成されましたら、(CDやMO,HDDなどの)媒体から、一時領域へバックアップをコピーしてください。 なお、コピー方法については、Linuxのマニュアル等を参照してください。また、外部媒体のマウント方法については、媒体を接続しますと自動でマウントされます。もしも自動でマウントされない場合はLinuxのマニュアル等を参照してマウントをおこなって下さい。
-
データベースの初期化
復旧してすぐの状態では、データベースに何らかのマスターが残っている可能性があり、データベースの取り込みに失敗する可能性があります。 そのため、データベースの初期化をおこないます。なお、ここでの作業は環境ごとに異なります。
作業環境ごとに、以下のコマンドを入力してください。
[Lucid]
$ sudo -u orca dropdb orca $ sudo jma-setup --noinstall
以上で、日医標準レセプトソフトのデータベースが初期化されます。
-
全体バックアップのデータベースへの書き込み
全体バックアップをとった時点のバックアップをデータベースに書き込みます。
- gpgコマンドを使って、暗号化されたファイルを復号化する
作業用ディレクトリへコピーが完了しましたら、ファイルが暗号化された状態になっていますので、暗号を解除(復号化)する必要があります。
以下のコマンドを入力してください。
$ gpg ~/(作業用ディレクトリ)/(暗号化されたファイル名)
実行しますと、パスワードを聞いてきます。 ここで、パスワードを正しく入力しますと、暗号が解除され、ファイルが生成されます。
- 解凍したファイルをデータベースに書き込む
復号化されたダンプファイルを、データベースに書き込みます。
ダンプファイルのあるディレクトリで、以下のコマンドを入力してください。
$ sudo -u orca pg_restore -O -x -d orca ~/(作業ディレクトリ)/(ダンプファイル)
$ sudo jma-setup
- gpgコマンドを使って、暗号化されたファイルを復号化する
-
作業で使用した領域を削除する
すべての作業が完了しましたら、これまで使用したファイルは不要になりますので、作業で使用した領域を削除します。
$ sudo rm -rf ~/(作業用ディレクトリ)/
以上で、外部媒体にバックアップされたファイルから、サーバのデータベースへ書き込む作業は完了です。
上記の作業を主サーバに対しておこないましたら、従サーバへは「正常なサーバーより、データベースの内容をコピーする方法」の従サーバの障害発生時の対処方法を参照して作業をおこない、主従サーバの同期をとってください。
外部媒体へのバックアップ実行例
外部媒体へのバックアップの実行例を以下に記載します。
バックアップ先の外部媒体にはHDDを使用し、バックアップファイル名は「orca.dump」、作業用ディレクトリは「~/work」とします。
まず日レセが停止しているか確認します。 $ ps ax | egrep 'glserver|monitor|glauth' 12400 ? S 0:00 /usr/lib/panda/sbin/glauth -password /etc/jma-receipt/passwd -port 8001 ・ ・ ・ $ sudo service jma-receipt stop 日レセの停止を確認後、バックアップをおこないます。 $ mkdir ~/work $ sudo -u orca pg_dump -Fc orca > ~/work/orca.dump バックアップファイルを暗号化します。 $ gpg -c ~/work/orca.dump パスフレーズを入力: パスフレーズを再入力: $ ls ~/work/ orca.dump orca.dump.gpg HDDを認識させ、バックアップファイルをコピーします。 ここではHDDのデバイス名を「/dev/sdb1」とします。 HDDを認識させますと、自動でマウントされますので、「df」コマンドでマウント先を確認します。 $ df Filesystem 1K-ブロック 使用 使用可 使用% マウント位置 /dev/sda1 58131120 15669252 39532184 29% / varrun 517456 280 517176 1% /var/run . . /dev/sdb1 58131120 517176 57613944 1% /media/disk $ sudo cp ~/work/orca.dump.gpg /media/disk $ sudo umount /media/disk 作業用ディレクトリの削除 $ rm -rf ~/work/
復旧時のコマンド実行例
復旧時のコマンド実行例を以下に記載します。
外部HDDにバックアップが保存されており、必要なファイル以外は入っていないものとします。 「orca.log」ファイルは消失したものとします。 サーバの作業用ディレクトリは「work」とします。 暗号化されたファイルは、「orca.dumo.gpg」とします。 復号化された状態のファイル名は、「orca.dump」とします。
以下の順番で、コマンドを入力します。
HDDを認識させます。 ここではHDDのデバイス名を「/dev/sdb1」とします。 $ df Filesystem 1K-ブロック 使用 使用可 使用% マウント位置 /dev/sda1 58131120 15669252 39532184 29% / varrun 517456 280 517176 1% /var/run . . /dev/sdb1 58131120 517176 57613944 1% /media/disk workディレクトリの作成 $ mkdir ~/work HDDからファイルをコピー $ sudo cp -r /media/disk/* ~/work/ DBの初期化 $ sudo -u orca dropdb orca $ sudo jma-setup --noinstall バックアップのデータベースへの書き込み 暗号を解除する $ sudo gpg ~/work/orca.dump.gpg データベースへの書き込み処理 $ sudo -u orca pg_restore -O -x -d orca ~/work/orca.dump
$ sudo jma-setup 作業で使用したファイルを削除 $ sudo rm -rf ~/work/ HDDを解放する $ sudo unmount /media/disk