Monday, January 20, 2014

MySQLのレプリケーションは追いつくことができます

Original post: http://anothermysqldba.blogspot.com/2014/01/can-mysql-replication-catch-up.html

だから、複製は、最近のMySQL 5.6で改善された。 しかし、人々はまだ5.1および5.5を使用しているので、それらの改善点のいくつかは、現実の世界をヒットするのを待つ必要があります。

私は最近、地理位置レプリケーションソリューションでこの方向に移動しました。 国の一部は、MySQL 5.1のサーバを持っていたし、国の他の部分は、新しいMySQL 5.6サーバがインストールされていた。

(控えめに言っても、数時間かかった)セカンダリサーバにプライマリから初期データのバックアップを取得する問題に対処した後、私は追いつくの複製とついていく可能性が決めなければならなかった。 プライマリサーバはいくつかの大きなクエリを持っていたし、最適化が常に起動するには良い場所です。 私は、セカンダリサーバが引っ張って速く私も最初にできる限り適用しなければならなかった。

だからここにチェックして、レプリケーションになると心に留めておくべきいくつかあります。 私はこの上で働いていたように私の思考のための支援を、以下のいくつかのリンクを追加した。

レプリケーションは非常にI / Oの重いことができます。 アプリケーションによっては。 ブ ログサイトでは、多くの書き込みがレプリケーションのI / Oに光であることはありませんが、頻繁に書かれており、更新されたプライマリサーバは、それらが有効になっている場合relay_logsと binary_logsをたくさん書いてReplication Serverにつながるとしている。 バイナリログには、バックアップを実行するか、このサーバが他の人にプライマリにするかもしれない可能にするために、セカンダリ上で有効にすることができます。

私は、データディレクトリとは別のデータ·パーティションにログを分割します。
これは、my.cnfファイルに設定されているリレーログ-

InnoDBのバッファプールは既に10GB以上の値に設定されました。 これは、このサーバーのたくさんいた。
サーバーは背後に90,000秒であった。

だから私は、サーバーにいくつかの調整を行うために開始され、最終的にはこれらの設定になってしまった。 付与されたすべてのサーバーが異なっている。

MySQLの>を@ sync_relay_log_info \ G
*************************** 1。 行***************************
@ @ sync_relay_log_info:0
セット内の1行(0.08秒)

MySQLの> @選択innodb_flush_log_at_trx_commit \ G
*************************** 1。 行***************************
@ @ innodb_flush_log_at_trx_commit:2
セット内の1行(0.00秒)

MySQLの> @選択log_slave_updates \ G
*************************** 1。 行***************************
@ @ log_slave_updates:0

MySQLの> @選択sync_binlog \ G
*************************** 1。 行***************************
@ @ sync_binlog:0
セット内の1行(0.00秒)

MySQLの> @選択max_relay_log_sizeを \ G
*************************** 1。 行***************************
@ @ max_relay_log_sizeを:268435456

私は、レプリケーション·キャッチアップを支援する様々な設定やオプションをモニターして、私はバイナリログがオフになっています。 それはしばらく時間がかかった。 私はこの時間枠内で働いていたとして、あなたは上記を参照の設定の一部は、または適用されていない場合があります。 まだそれは戻って0秒に追いつくでした。 今、あなたは、これらの設定の多くは、上記のバイナリログとその周辺関連していることに気づくかもしれません。 だから私は少しのテストを実行しました。 だから、私はビンログを再起動し、使用可能に。 私は後で、サーバー上でチェックインし、万秒以上の背後にそれを発見した。 だから私は、もう一度再起動し、binログを無効に。 これは、15分以内のプライマリサーバと(0秒の後ろ)に追いついた。 私はAurimas「使用ツールは 、私はそれは同様に追いつく見守る。 あなたが前にそれを使用していない場合、それは非常に素晴らしく、便利なツールです。

これは是非、プライマリサーバが、ACID準拠している必要がありますです。 このセットアップを使用すると、キャッシュ用のOSに依存し、クリーンアップしている。 これは、サーバーが他の人に情報を供給するための主リードサーバとして使用されている。 また、はい、地理位置レプリケーションがプライマリサーバで最新の状態に保つことができることを意味します。

あなたは、スレーブを停止する必要がある場合は、それはまだすぐに何を追いつくだろうか?

どのように、なぜあなたは、スレーブを停止しないのは、私の最初の反応である。 あなたが使用することの習慣を身に取得する必要があり、STOP SLAVE SQL_THREADを 、代わりに、STOP SLAVE ;これはリレーログがデータを収集し、ちょうどあなたのプライマリサーバに適用しないように続けることができます。 だから、それは後でリレーログを移入するのにかかる時間を短縮することを利用することができます。

あなたのためのいくつかの追加の読書: