[pgsql-jp: 36905] Re: 32bit と64bitマシンでのレプリケーションについて

maeda @ motion.ne.jp maeda @ motion.ne.jp
2006年 3月 22日 (水) 14:32:31 JST


前田です。

岡野様

> > 質問1)
> >  64bitマシンにPostgresをインストールする際
> > 
> >  ./configure
> >  gmake
> >  gmake install
> > 
> > としただけなのですがこれで64bit版になったのでしょうか。
> > 確認する手段はありますでしょうか。
> > 
> fileコマンドで、インストールした実行ファイルを確認してみてはどうでしょう。
> > $ file /my/pghome/bin/postgres
> > /my/pghome/bin/postgres: ELF 64-bit LSB executable, AMD x86-64, version 1 
> (SYSV), for GNU/Linux 2.4.0, 
> > dynamically linked (uses shared libs), not stripped
質問1についてはfileコマンドで確認できました。
64bit版になっておりました。

> > 質問2)(64bitマシンには64bit版のPostgresがインストールされているとして)
> >  32bitマシンをマスターとしてレプリケーションさせたいため、
> >  64bitマシンへ/usr/local/pgsql/data/ 以下をrsyncで同期を
> >  とりましたが、64bitマシンのpg_controlファイルも32bitマシンの
> >  ものになってため、起動時「FATAL:  incorrect checksum in control file」
> >  というエラーが出て起動できませんでした。
> 制御ファイル内にあるtime_t型のサイズが32bitマシンと64bitマシンで異なるため、
> 32bitマシンと64bitマシン間では、単なるコピーでは使用できません。
> また、制御ファイルが壊れていないことを確認するために使っている
> チェックサム関数も32bitと64bitでは異なるようです。
> #ソースファイルでは、src/include/catalog/pg_control.h や src/include/utils/pg_
> crc.h が参考になります。
> 水野さんの投稿にもあるように、レプリケーションツールを使うのが無難
> だと思います。
> 時間がたってしまったのでもう解決済みかもしれませんが、ご参考まで。
いえ、まだ完全に解決はしておりませんでした。
今回は初期や障害発生時にのみ同期をとる方法を探していて、
運用中のレプリケーションはpgpoolで行うつもりでいます。
DBMirror、PGCluster、Slony-Iなどもみてみましたが
同期だけとってくれるツールは見つかりませんでした。

とりあえず今は、pg_dumpall -o -c で同期をとって対応しております。
この方法だとラージオブジェクトの同期がとれませんが、
運用上問題がでるのはまれなケースでしたので
完全な64bitマシン環境になるまではこの方法で対応しようと思います。




pgsql-jp メーリングリストの案内