[pgsql-jp: 36208] Re: 原因不明のデータ消失
Nobuaki Inamura
inamuran36 @ mahikari.or.jp
2005年 10月 19日 (水) 16:54:34 JST
稲村です。お世話になっております。
Kiyoshi Mizuno wrote:
> #Postgres1とPostgres2の2段構えにした目的が
> 分からないので適切なアドバイスになるか微妙です。
Postgres1が内部用でPostgres2が外部アクセス用という位置づけです。
外部にさらすDBは必要最低限のデータのみを置こうという意味合いから
このような構成になりました。
> Postgres1でのエラー原因を追求するのは当然必要ですが、
> 現在の現象からしてPostgres1でのトランザクションエラーを
> 呼び出し側のAccessから検知できるようになったとしても、
> Postgres2のテーブル更新をトリガ起動で行う限りPostgres2の
> テーブルはRollBackされないでしょう。
>
> そのためテーブル同期についてはトリガによる更新ではなく、
> Slony や db mirror のようなレプリケーションツールで行うように
> した方がよいように思います。これらは非同期型レプリケータなので
> プライマリDBの処理レスポンスはあまり低下させずに済むでしょう。
> もし同期ズレが許されないシステムなら更新レスポンスは
> 多少落ちますが同期型レプリケータのPGCluster ないし Usogres
> でしょうか。
そのとおりだと思います。トリガで行うこの更新は、そのほかにも問題があり、
Postgres間のルーターやハブなどでトラブルがあった場合、Postgres2はもちろんのこと、
MDBやPostgres1にも書き込めないという、下位レイヤのトラブルを必要以上に受けてしまうのです。
そのため、PGClusterを試験したりしましたが、
・データベース名が違う
・テーブル名が違う
という部分に書き込んでいるため、レプリケーションソフトは使えないと思ってあきらめました。
一時はビューで対応したりしましたが、レスポンスが落ちてしまうのでだめだということでボツに
されてしまいました・・・
レプリケーションが使えるように根本的に周りの環境を変えるしかないのでしょうか?
------------
稲村 inamuran36 @ mahikari.or.jp
pgsql-jp メーリングリストの案内