p4 failover

スタンバイサーバにフェイルオーバーします。

構文規則

            p4 failover [-y] [ -m | [-i] -s serverID ] [-w waitForQuiesce][-v verificationTime][failoverMessage]
        

説明

スタンバイサーバの管理者が、現在のマスターサーバからそのスタンバイサーバへのフェイルオーバープロセスを開始できるようになります。ここでは、マスターサーバはスタンバイサーバによってジャーナルコピーが作成されるサーバです(「p4 journalcopy」を参照)。「master」サーバはエッジサーバになることもできます。「standby」サーバは「standby」または「forwarding-standby」サーバのいずれかになります。

フェイルオーバープロセスにマスターサーバが含まれていない場合、「mandatory」スタンバイサーバにフェイルオーバーすると、この新しいマスターサーバがダウンストリームのレプリカより優先されます(「p4 server」の「オプション」を参照)。

  • ローカルの高可用性スタンバイサーバの場合は、フェイルオーバー先としてmandatoryスタンバイサーバを使用することをお勧めします。
  • リモートの障害回復スタンバイサーバの場合は、フェイルオーバー空きとしてnomandatoryスタンバイサーバを使用することをお勧めします。

詳細については、『Helix Coreサーバ管理者ガイド』の「バックアップとリカバリ」の章に記載されている「フェイルオーバー」を参照してください。

2020.2以降のリリース

2020.2より前のリリース

マスターサーバがフェイルオーバーに参加していない状態で、コマンドラインで-sオプションを指定せずにmandatoryスタンバイサーバからフェイルオーバーを実行すると、マスターサーバのserverIDに対するスタンバイサーバ仕様のReplicatingFromフィールドが確認されます。

これまでは、マスターサーバが稼働していない状態でmandatoryスタンバイサーバからフェイルオーバーを実行するには、-s <serverID>オプションを指定する必要がありました。

フェイルオーバー処理の一部として、ジャーナルコピーとプルスレッドの停止が実行されるようになりました。startup.N構成可能変数を使用してpull -Lスレッド、pull -uスレッド、またはjournalcopyスレッドを設定することにより、これらのスレッドが自動的に再起動するようになりました。

フェイルオーバー処理が失敗した場合、これまでは、journalcopyスレッドとpullスレッドを手動で再起動する必要がありました。

オプション

-y

フェイルオーバー処理を実行します。このオプションを指定せずにp4 failoverを実行すると、どのような処理が実行されるのかが 表示されるだけで、実際の処理は実行されません。

重要

-yオプションを指定して処理を実行する前に、フェイルオーバーを実行した場合の動作に関するレポートを慎重に確認してください。フェイルオーバープロセス中、エンドユーザクライアントはサーバに対してコマンドを発行することはできません。

-v フェイルオーバーコマンドを実行する前に行うverificationTimeの値を秒単位で指定します。デフォルト値の300秒は、フェイルオーバーを実行する1~300秒前に更新されたすべてのファイルの内容が検証されることを意味します。これにより、新しいマスターサーバでフェイルオーバープロセスが完了すると、ファイルの内容が適切な状態になります。 適切なファイルの内容が新しいマスターサーバで受信されると同時に、フェールオーバーコマンドが実行されます。 有効な値の範囲は、0秒(検証は実行されない)から43200秒(12時間)までです。

-w

マスターサーバでコマンドの完了を待機する期間(秒単位)です。このquiesceWaitの期間が経過すると、アクティビティを問わず、すべてのユーザコマンドが停止されます。

-wを指定しない場合、quiesceWaitの値はデフォルトで60になります。

待機期間は0 (即時)から3600秒(1時間)の範囲で任意の整数値を設定できます。

quiesceWaitの期間中にフェイルオーバーをキャンセルするには、Ctrl-Cを押します。

-i

元のマスターサーバがアクセス可能であっても、元のマスターサーバを無視します。

このオプションと-mオプションを同時に指定することはできません。

マスターサーバがアクセス可能なときに-iフラグを使用すると、2つのマスターサーバで異なるデータセットが処理されるという望ましくない「スプリットブレイン」が発生する可能性があります。

-m

マスターサーバはフェイルオーバーに参加する必要があります(-iオプションは使用できません)。スタンバイサーバがマスターサーバにアクセスできない場合、フェイルオーバーは実行されません。

-s

既存のマスターサーバがフェイルオーバーに参加する場合、新しいマスターサーバは自動的に古いマスターサーバのserverIDを取得するため、このオプションは必要ありません。

注意

2020.2よりも前のリリースでは、スタンバイサーバがマスターサーバにアクセスできない場合に、このオプションでマスターサーバのserverIDを指定する必要がありました。

2020.2以降のリリースでは、スタンバイサーバがマスタサーバにアクセスできない場合に、コマンドラインで-sオプションを指定せずにコマンドを実行すると、マスターサーバのserverIDに対するスタンバイサーバ仕様のReplicatingFromフィールドが確認されるようになりました。

failoverMessage

マスターサーバがフェイルオーバー処理に参加する場合、フェイルオーバーの処理中、エンドユーザがマスターサーバで新しいコマンドを起動しようとすると、エンドユーザにfailoverMessageというテキストが表示されます。デフォルトのメッセージは次のとおりです。

現在、サーバはフェイルオーバーモードになっています。フェイルオーバーが完了してから、もう一度実行してください。

failoverMessageは、p4 failoverコマンドの最後の引数として指定する必要があります。以下に例を示します。

p4 failover -w 90 -v 500 -y The Perforce server is undergoing scheduled maintenance

引用符は必要ありません。

g-opts

グローバルオプション」を参照してください。

使用上の注意点

ファイル引数でリビジョン指定子を使用できるか? ファイル引数でリビジョン範囲を使用できるか? 最低限必要なアクセスレベル

適用外

適用外

super

関連コマンド

ジャーナルデータをマスターサーバからスタンバイレプリカのローカルファイルシステムにコピーする

p4 journalcopy

追加または更新されたファイルの内容を(複製されたジャーナルデータに従って)コピーする

p4 pull -u

p4 journalcopyで作成したジャーナルコピーファイルからジャーナルレコードを取得し、 ジャーナルレコードをスタンバイサーバのデータベースに適用する

p4 pull -L