[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[orca-users:11798] Re: メディケアネットジャパン町田さんへお礼



黒瀬です。

アンチRAIDな話が出ているので、RAIDのメリットについても
触れたいと思います。


データを失わずに運用を続けられる可用性を高めるには
色々な手段がありますが、利用規模やかけられるコスト(金銭的、人的)
によって最適な手段を選ぶ必要があります。

個人的に考えている最適な構成は以下の通りです。
------------------------------------------------------------
□ 1台で運用している場合
  信頼性の高いサーバ系のハードウェアを使用
  ハードウェアRAID 1を採用 (またはハードディスク2台)
  USB HDDやMO等の外部媒体にバックアップ

□ 主従構成/複数台で運用している場合
  主マシンは信頼性の高いサーバ系のハードウェアを使用
  通常のハードディスク1台構成
  複数のマシンにバックアップを残す
  USB HDDやMO等の外部媒体にバックアップ
------------------------------------------------------------

ハードディスクは壊れるものであり、復旧までにどのくらいの
コスト/時間がかかるか考えると、バックアップ体制は必須です。
(データ修復業者に頼むと数十万円程度することがあります)

その点、1台で運用している場合は、ディスクの故障に対して
RAID 1(またはディスク2台)にしておいたほうが安全ですし
修復の時間をあまり取らなくてすみます。

複数台で運用している場合は、RAID運用は安全ですがやや過剰だと
思います。(大規模な病院など、必要に応じての採用ならあり)


とはいえ、RAIDに全幅の信頼を置いているわけではありません。
ファイルシステムのエラーやRAID装置そのものの故障には無力だからです。
これには、外部媒体へのバックアップも平行で行うことで対応します。

>pg_dump: ERROR: could not read block 3641 of relation "tbl_sryact":
>Input/output error
>pg_dump: SQL command to dump the contents of table "tbl_sryact" failed: PQendcopy() failed.

長谷川さんのように上記のエラーに遭遇したこともあります。

>不幸なケースは、主従構成でもなく、このエラーに気づかずに
>運用を続けることです。見かけ上の大きな異常はなく、運用が続けられて
>しまうことがあります。

私もこの点を憂慮しています。
手動でpg_dumpコマンドを実行している場合は、エラーに気づきやすいのですが
自動バックアップを取っていると油断していると気づかないのです。

自動バックアップのシェルスクリプトであれば、pg_dumpコマンドを実行した直後に
戻り値(bashであれば$?)に0が返ってくるか、チェックすることが必要です。

手動でもチェックの確認はできます。
$ sudo -u orca pg_dump -O orca  > orca_db_4.4.0_20100216.dump
$ echo $?
0が表示されれば正常終了。0以外であれば異常終了。


また、シェルスクリプト中でもユーザにメッセージを促したい場合は
zenityなどのGUIのダイアログを表示するコマンドも便利です。
(pg_dumpコマンドの直後に以下のような行を追加)

if [ $? -ne 0 ]; then
  zenity --warning --text="データベースのバックアップ中にエラーが発生しました。\nエラーコード :$?"
fi


========================
   Shushi Kurose (kuromabo)
   Email : md81bird@xxxxxxxxxx
========================