デフォルトでは、ソースサーバーとレプリカサーバーは同じタイムゾーンであると想定します。 異なるタイムゾーンのサーバー間でレプリケートする場合は、ソースとレプリカの両方でタイムゾーンを設定する必要があります。 それ以外の場合、ソースのローカル時間に依存するステートメント (NOW()
または FROM_UNIXTIME()
関数を使用するステートメントなど) は正しくレプリケートされません。
ソースおよびレプリカのシステムタイムゾーン (system_time_zone
)、サーバーの現在のタイムゾーン (time_zone
のグローバル値) およびセッションごとのタイムゾーン (time_zone
のセッション値) の設定の組合せが正しい結果を生成していることを確認します。 特に、time_zone
システム変数が SYSTEM
の値に設定されていて、サーバーのタイムゾーンがシステムのタイムゾーンと同じであることを示している場合は、ソースとレプリカが異なるタイムゾーンを適用する可能性があります。 たとえば、ソースはバイナリログに次のステートメントを書き込むことができます:
SET @@session.time_zone='SYSTEM';
このソースとそのレプリカのシステムタイムゾーンの設定が異なる場合、レプリカグローバル time_zone
値がソースと一致するように設定されていても、このステートメントによってレプリカで予期しない結果が生成される可能性があります。 MySQL Server のタイムゾーン設定およびその変更方法の詳細は、セクション5.1.15「MySQL Server でのタイムゾーンのサポート」 を参照してください。
セクション17.5.1.14「レプリケーションとシステム関数」も参照してください。