Ticket #35833

運用補助ツール"pg-rex_slave_start"でベースバックアップ未取得起動に失敗する

Open Date: 2015-12-11 20:48 Last Update: 2015-12-15 17:38

Reporter:
Owner:
(None)
Status:
Closed
Component:
(None)
MileStone:
(None)
Priority:
1 - Lowest
Severity:
1 - Lowest
Resolution:
Fixed
File:
None

Details

お世話になります。

postgre8 + 有償クラスタウェアの構成から、
実績と情報豊富なPG-REX構成へDBリプレースを計画しております。
テスト環境にて検証をしておりましたところ、
"PG-REX運用補助ツール"にて想定外の動作を確認したため、報告させて頂きます。

<構成>
OS:CentOS 6.7 (64bit) ※仮想
Postgresql:9.4.5 ※ソースインストール
Pacemaker:1.1.13-1
corosync:2.3.4-1
pg-rex_operation_tools_script:1.6.1-1


<現象>
pg-rex_slave_start実行後、「This node takes a base backup from master.Are you sure? (y/n) n」選択にnを回答すると、
下記エラーが出力され、起動に失敗いたします。

Use of uninitialized value $lsn1 in pattern match (m//) at /usr/local/share/perl5/PGRex/common.pm line 893, <STDIN> line 1.
Failed to parse the location of xlog.

yを回答した場合は正常に起動いたします。


/usr/local/share/perl5/PGRex/common.pmを確認したところ、
関数"sub compare_lsn"内で$lsn1が取得できていないようです。

    886 sub compare_lsn
    887     my ($lsn1, $lsn2) = @_;  ←★ここで取得できていない
    888     my $lsn1_left_field;
    889     my $lsn1_right_field;
    890     my $lsn2_left_field;
    891     my $lsn2_right_field;
    892
    893     if ($lsn1 !~ /^([0-9A-F]+)\/([0-9A-F]{7,8}+)$/){ ←★エラー発生はココ
    894         printlog("ERROR", COMMON_MS0013);
    895     }


以上、宜しくお願いいたします。

Ticket History (2/2 Histories)

2015-12-11 20:48 Updated by: yukiya_hayashi
  • New Ticket "運用補助ツール"pg-rex_slave_start"でベースバックアップ未取得起動に失敗する" created
2015-12-15 17:38 Updated by: yukiya_hayashi
  • Type Update from Bugs to Support Request
  • Resolution Update from None to Fixed
  • Status Update from Open to Closed
  • Ticket Close date is changed to 2015-12-15 17:38
Comment

お世話になっております。
解決できましたので以下報告させて頂きます。

【原因】
コマンド"pg_xlogdump"がインストールされていなかったため

【対応】
以下コマンドにて"pg_xlogdump"のインストールを実施

# cd /usr/local/src/postgresql-9.4.5/contrib/pg_xlogdump
make
make install

【該当箇所】/usr/local/bin/pg-rex_slave_startの以下
    371         # pg_xlogdump の出力結果から現在の XLOG 位置を取得
    372         my $my_current_xlog_location;
    373         my $another_current_xlog_location;
    374         $command = "$SU - $pg_command_user -c \"$command_path{'pg_xlogdump'} $master_cib_value{'pgdata'}/pg_xlog/$my_controldata_value{'wal_filename'} $master_cib_value{'pgdata'}/pg_xlog/$my_current_xlog_filename 2> /dev/null | $        TAIL -1\""; ←★ココ
    375         $result = exec_command($command);
    376         if ($result =~ /.*lsn:\s+([0-9A-F\/]+).*/){
    377             $my_current_xlog_location = $1;
    378         }
 }}}

Attachment File List

No attachments

Edit

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Login