詳細かつ実用的なMySQLのマスタースレーブのレプリケーション

まず、マスター・スレーブ原理をコピーします

1.1基本的な紹介

MySQLの組み込みのレプリケーションは、大きな、高性能なアプリケーションを構築するための基礎です。システムは、このような段階的な機構の複数までの数百万に分配MySQLは、特定のホストが他のホスト(スレーブ)MySQLデータにコピーされ、命令が再び達成しました。一つ以上の他のサーバがサーバからとして動作しながら、複製中のサーバは、プライマリサーバとして機能します。マスターサーバーの更新ローカルバイナリログファイルに書き込まれたログ・サイクルを追跡するために、インデックスファイルを保持します。これらのログ・レコードが更新するように、サーバから送信することができます。マスターサーバーからの接続は、それがプライマリサーバに通知したとき、それ以来、すべての更新は、更新サーバがログを読み込み、最後に成功した場所、マスターサーバーの発生から、サーバから受信し、新しい更新通知を待ちます。 

注意:あなたがマスターを設定すると、すべてのデータがコピーからマスターサーバー上で更新する必要があります。そうしないと、サーバー上の表から、メインサーバと更新に関するユーザーリストの更新間の競合を避けるために注意する必要があります。


1.2 MySQLのサポートコピー種別

  • ベースの文をコピーします。メインサーバで実行するどのようなSQL文、サーバーは自動的に再びそれから、再実行します。いいえそうしないと、サーバー上の表から、メインサーバと更新に関するユーザーリストの更新間の競合を避けるために注意する必要がありません。構成された:binlog_format = 'STATEMENT'

  • 行ベースのレプリケーション。MySQLの5.0のサポートから始めて、むしろ再びサーバからのコマンドを実行するよりも、過去の変更の内容をコピーし、コンフィギュレーション:binlog_format =「ROW」

  • 複製の混合型。それは文に基づいて発見された場合、デフォルトステートメントベースレプリケーションでは、正確に複製することができない、コンフィギュレーション、行ベースのレプリケーションを使用します:binlog_formatは=「MIXED」


1.3マスタースレーブのレプリケーションは、問題を解決することができます

  • プライマリ・データベースの問題は、スレーブデータベース(高可用性と耐障害性)に切り替えることができます

  • 別のデータベース・レベル(圧力マスターノードを減少させるために負荷分散)を読み取ることができます

  • ライブラリからバックアップ・データベースとして使用することができます


共通から1.4実現のマスターコピー

aea74b8cc91ee5017fd5e21b805462cf.png

マスターマルチスレーブレプリケーションのアーキテクチャ

シナリオ:

マスターライブラリ内の圧力が非常に大きいシーンが複数の別個の読み取りを配置することによって達成し、マスターコピーアーキテクチャから書くことができます要求を読んで、リアルタイム要件が大量に、ライブラリから複数の読み出し要求をスケジュールすることによって、特に高い負荷分散ではありませんメイン読み取りライブラリの圧力を低下させます。メインライブラリーの異常なダウンタイムの場合には、ライブラリーは、サービスを提供し続け、メインライブラリーからスイッチすることができ

    注意事項:

    • スレーブが一定量に、スレーブがマスタしたときの負荷とネットワーク帯域幅が深刻な問題となります。

    • スレーブ異なるプレイ異なる役割(例えば、異なる索引、または異なるストレージエンジンを使用して)

    • バックアップマスターとして、スレーブによってのみ複製します

    • リモートスレーブと、災害復旧のために。

マルチレベルのレプリケーションのアーキテクチャ

シナリオ:

マスターマルチスレーブ・アーキテクチャほとんどが要求する場面圧、特に大きな需要が、主なライブラリーI / Oネットワークの圧力を読み、ライブラリが大きくなるにつれて圧力が増加し、マルチレベルのレプリケーション・アーキテクチャの使用は解決することができます解決することができますメインシナリオでは、プライマリ・データベースの追加のI / Oとネットワーク圧力からより。しかし、主な図書館でマルチレベルのデータ・レプリケーションのシナリオは、ちょうど大きなのマスターコピーからコピーよりも、マルチシーンの経験の間に、遅延ライブラリからの読み出しに達する前に二度経験していることに注意してください

     注意事項:

    • 長い遅延のリスクがあるかもしれません

    • この方式は、サードパーティのソフトウェアの使用、例えばスレーブ+ LVS + keepalivedの高可用性と組み合わせることができます。

デュアルマスター・レプリケーション・アーキテクチャ

シナリオ:

シナリオ筆圧に適用デュアルマスター/デュアルマスターフレームワークは、比較的大きい、またはDBAは、トラブルのライブラリから構造の重複を避けるためにダブルマスター/デュアルマスターアーキテクチャによってシーンからマスタースイッチを維持するために行う必要があります

     注意事項:

    • 最大の問題は、競合を更新することです。

    • 強力な、高性能なデータベースプラットフォームを作成することができ、レプリケーションおよびクラスタ一緒にMySQL Clusterのを使用することができ、


1.5マスタースレーブレプリケーションの動作

MySQLのバイナリログファイル(バイナリログファイル)間の基本的なデータレプリケーション。MySQLデータベースのバイナリログを有効にすると、マスターとして、すべての操作は、バイナリログ(ビンログ)ファイル、I / Oスレッドを経由してスレーブとして他のデータベースに記録し、そのデータベースへの「イベント」になりますマスタバイナリログファイルのビン・ログ・ダンプの変化の通信を維持し、マスターを監視し、見つけマスタバイナリログファイルが変更された場合、それは彼らのリレーログを変更するには、データをコピーしますが、その後、スレーブSQLスレッドが読み込みプライマリサーバとのデータの一貫性を確保するために、ログを中継し、再びイベントログのSQL命令を順次

シンプルは、大きく次の3つのステップに分け:

  • ステップ:各トランザクションが完了する前に、マスタデータが更新され、記録動作が連続したファイルに書き込まBINLOG。 

  • ステップ二つは:I / Oスレッドを開く軟膏、スレッドが共通のマスターで接続を開き、それがメインの仕事のbinlogダンププロセスです。進捗状況は、マスターに追いつくために読まれている場合、彼らは寝て、新しいイベントを生成するために、マスターを待つために行きます。最終的な目的リレーログにこれらのイベントを書き込みI / Oスレッド。 

  • 第三段階:SQLスレッドはリレーログを読み取り、順次SQLイベントログを実行するので、データは、プライマリ・データベースと一致しています。

20180302101134660.jpg

詳細説明:

  • マスターレコードのバイナリログ。各トランザクションの更新データの前に、マスターレコードのバイナリログ内のこれらの変化。MySQLバイナリログ書かれた文は、トランザクション・ログとクロス事務のタイムリーな実行を大都市。バイナリログに書き込まれたイベントが終了した後、マスターはトランザクションをコミットするためにストレージエンジンに通知します。

  • 独自のリレーログへのマスタバイナリログのコピーへの奴隷。まず、スレーブは、ワーカースレッド-I / Oスレッドを開始します。I / Oスレッドは、あなたがマスターを持っている場合でも、バイナリログイベントを読み始め、それを習得し、新しいイベントを待ち、その後、マスターの接続を開きます。Iは、/これらのイベントのOスレッドはリレーログに書き込まれます。

  • プロセスの最終ステップの処理SQLスレーブスレッド(SQLスレーブ・スレッド)。SQLはリレーログとデータをスレーブに更新されているイベントのリプレイからイベントを読み取る純血種。マスターは、一貫性のあるその他のデータ。限り、スレッドと通常OSのキャッシュにあるI / Oスレッド一貫したリレーログとして、そのオーバーヘッドは小さなリレーログです。

  • ここでは、マスターはまた、ワーカースレッドを持っており、他の接続は、MySQLのように、スレーブマスターは、接続がマスタースレッドを開始ようになります開きます。レプリケーション・プロセスは、非常に重要な制限があり - スレーブレプリケーションがシリアル化される上、それはスレーブ上で並列に動作することはできませんマスターのパラレル更新です。


二、MySQLの実際のマスター・スレーブ構成

2.1設定の簡単な実装手順

マスター: 

    - バイナリログを有効

    - ユニークなサーバIDを設定 

    - マスタバイナリログファイルの名前と場所を取得 

    - スレーブとマスターの通信のためのユーザーアカウントを作成

サーバーから: 

    - ユニークなサーバIDを設定 

    - マスター割り当てられたユーザーアカウントを使用してバイナリログを習得読みます 

    - スレーブ・サービスを有効にします

2.2構成に関する考慮事項

    • 各スレーブは、唯一のマスターを持つことができます。

    • 各スレーブは、唯一のユニークなサーバIDを持つことができます。

    • 各マスターは、多くのスレーブを持つことができます。

    • あなたがlog_slave_updatesを設定した場合、スレーブが拡散するために、他のスレーブのマスター、アップデートのマスターかもしれ

    • しかし、いくつかの単純な組み合わせをスレーブマスター以上を持つことができますが、我々は柔軟で強力なレプリケーション・アーキテクチャを構築することができます - MySQLは、マルチマスターレプリケーションをサポートしていません。



おすすめ

転載: blog.51cto.com/13777759/2403839
おすすめ