[pgsql-jp: 41430] Re: ストリーミング・レプリケーションでデータの同期が行われなくなった

Suzuki Hironobu hironobu @ interdb.jp
2013年 6月 17日 (月) 19:49:58 JST


こんにちは


(1)この説明が気になるので、念のため確認ですが:

> 更新系SQLは、両方のサーバへ発行される構造となっておりましたため、

Railsはpgpool-IIに更新系SQL+検索系SQLどちらも発行しているのでしょうか?
それとも直接PostgreSQLにアクセスする場合もあるのでしょうか?

ついでに確認ですが、
pgpool-IIは1台だけ稼働でしょうか?
pgpool-IIは(レプリケーションモードではなく)「マスタースレーブモード」で 
稼働しているのでしょうか?


(2)slaveサーバのデータベースクラスタに
recovery.confもしくはrecovery.doneというファイルはあるでしょうか?


(3)masterとslaveの,以下のディレクトリの中身(存在するファイル名)を知るこ 
とはできるでしょうか?
ls pg_xlog
ls pg_xlog/archive_status


以上、よろしくお願いします。



On 2013年06月17日 19:23, Keiji Yoshida wrote:
> 朝倉様
>
> 吉田です。
> お世話になります。
>
> 先ほどのメールに追記させて頂きます。
>
> >②Master側で、「SELECT * FROM pg_stat_replication」を実行して、
> >レプリケーションの状態を確認する
> >といった調査方法があると思います。
>
> Master、Slaveの両方で「SELECT * FROM pg_stat_replication」を実行したところ、
> どちらもレコードが存在しませんでした。(0件の結果が返却されました。)
>
> #レプリケーションの状態が解除されてしまっている、ということでしょうか?
>
> 吉田
>
>
> On 2013/06/17, at 19:11, Keiji Yoshida<k.yoshida @ onemore.co.jp>  wrote:
>
>> 朝倉様
>>
>> 吉田です。
>> ご返信くださいまして、誠にありがとうございます。
>>
>> >DBサーバは2台で構成され、1台がMaster、もう1台がSlaveで、
>> >ストリーミングレプリケーションを組んでいた、
>> >であっていますか?
>>
>> はい、おっしゃる通りです。
>> アプリケーションサーバからは、pgpool-II(マスタースレーブモード)経由でデータベースサーバへアクセスしております。
>>
>>
>> >更新系SQLは、両方のサーバへ発行される構造となっておりましたため、
>> >この部分が分かりません。
>> >ストリーミングレプリケーション + ホットスタンバイの構成だと、
>> >そもそもSlave側は参照専用で、更新はMaster側にだけしか
>> >発行できないのですが。。。
>>
>> そもそもMasterへしか発行されないはずの更新系SQLが、現在はSlaveへも発行されるようになってしまっております。
>>
>> このようなことになってしまったことの原因を突き止めようしておりますが、調査に苦戦している状況でございます。
>>
>> ご多用のところ大変恐縮でございますが、何卒よろしくお願い申し上げます。
>>
>>
>> 吉田
>>
>>
>> On 2013/06/17, at 18:57, 朝倉 佑貴<asakura.yuuki @ nttcom.co.jp>  wrote:
>>
>>> 朝倉と申します。
>>>
>>> サーバ構成がよくわからないので、教えてください。
>>> DBサーバは2台で構成され、1台がMaster、もう1台がSlaveで、
>>> ストリーミングレプリケーションを組んでいた、
>>> であっていますか?
>>>
>>>
>>>> 更新系SQLは、両方のサーバへ発行される構造となっておりましたため、
>>> この部分が分かりません。
>>> ストリーミングレプリケーション + ホットスタンバイの構成だと、
>>> そもそもSlave側は参照専用で、更新はMaster側にだけしか
>>> 発行できないのですが。。。
>>>
>>>
>>> Master側に発行した更新が、Slave側に反映されなくなった、
>>> ということなら、Slave側がpromoteされてしまった可能性を
>>> 考えます。
>>>
>>> この線で調査するなら、
>>> ①それぞれのサーバで、「pg_controldata<PGDATA>」を実行して、
>>> TimeLineIDを確認する
>>> ②Master側で、「SELECT * FROM pg_stat_replication」を実行して、
>>> レプリケーションの状態を確認する
>>> といった調査方法があると思います。
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> (2013/06/17 18:25), Keiji Yoshida wrote:
>>>> 吉田と申します。
>>>> お世話になります。
>>>> 初めて投稿させて頂きます。
>>>>
>>>> 現在、Rails+PostgreSQL(9.1.4)で構築されたWEBアプリケーションを、約半年間運用しています。
>>>>
>>>> DBサーバは2台あり、ストリーミング・レプリケーションでデータの同期を行っています。
>>>>
>>>> 今までは問題なかったのですが、昨日急に、サーバ間でのデータの同期が行われなくなってしまいました(片方のサーバのみデータが更新される状態となってしまいました)。
>>>> 更新系SQLは、両方のサーバへ発行される構造となっておりましたため、
>>>> あるデータは1号機のみに存在し、またあるデータは2号機のみ存在するという、どちらのDBサーバも、独自のデータを抱える状態となってしまいました。
>>>>
>>>> どちらのDBサーバへ発行されたSQLも正常終了しているため、両方ともPostgreSQLのプロセスは正常に稼働していると認識しています。
>>>>
>>>> 現在、以下の不明点を抱えております。
>>>>
>>>> (1)なぜ同期できなくなったのか?
>>>> (2)どのように同期処理を再開させるか?
>>>> (3)どのようにデータを復旧させるか?
>>>>
>>>> 上記不明点の解消を試みておりますが、どのように調査を進めたら良いかが分からず、作業が止まっている状態です。
>>>>
>>>> 「こう調査すべき」、「このログを確認すべき」、「このようなことが原因として考えられるため、この点を確認すべき」など、もし考えられる点がございましたら、お知恵をお借りできませんでしょうか?
>>>>
>>>> お忙しいところお手数おかけ致しますが、何卒よろしくお願い申し上げます。
>>>>
>>>> 吉田
>>>>
>>>>



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