1データの損失
1.1非同期レプリケーションによるデータ損失
マスター→スレーブの複製は非同期であるため、データの一部がスレーブにコピーされておらず、マスターがダウンしている可能性があります。このとき、データのこれらの部分は失われます。
1.2スプリットブレインによるデータ損失
スプリットブレイン、つまり、マスターが通常のネットワークから突然切断され、他のスレーブマシンに接続できないマシンですが、実際にはマスターはまだ実行されています。
このとき、歩哨はマスターがダウンしていると考え、他のスレーブをマスターに切り替えるための選挙を開始する場合があります。
この時点で、クラスターには2つのマスター、いわゆるスプリットブレインが存在します。
この時点でスレーブはマスターに切り替えられますが、クライアントが新しいマスターに切り替える時間がなかった可能性があり、古いマスターに書き込み続けているデータも失われる可能性があります。
したがって、古いマスターが再度復元されると、新しいマスターのスレーブとして一時停止され、自身のデータがクリアされ、データが新しいマスターから再度コピーされます。
2非同期レプリケーションとスプリットブレインによって引き起こされるデータ損失を解決します
min-slaves-to-write 1
min-slaves-max-lag 10
少なくとも1つのスレーブが必要であり、データの複製と同期の遅延は10秒を超えることはできません。
すべてのスレーブが一度、データ複製と同期の遅延が10秒を超えると、この時点で、マスターはそれ以上要求を受信しなくなります。
上記の2つの構成により、非同期レプリケーションとスプリットブレインによって引き起こされるデータ損失を減らすことができます。
2.1非同期レプリケーションでのデータ損失を減らす
min-slaves-max-lagの構成により、スレーブがデータを複製し、ack遅延が長すぎると、マスターがダウンした後に失われるデータが多すぎる可能性があると見なされ、その後書き込みが行われることが保証されます。要求は拒否されます。マスターがダウンしている場合、データの一部がスレーブに同期されていないために発生するデータ損失は、制御可能な範囲内で減少します。
2.2スプリットブレインによるデータ損失を減らす
マスターにスプリットブレインがあり、他のスレーブとの接続が失われた場合、上記の2つの構成により、指定された数のスレーブを指定された数のスレーブに送信できず、スレーブがそれ以上の確認メッセージを送信しないようにすることができます。 10秒を超えると、クライアントの書き込み要求を直接拒否します。
このようにして、スプリットブレイン後の古いマスターはクライアントからの新しいデータを受け入れず、データの損失が回避されます。
上記の構成により、スレーブとの接続が失われ、10秒後にスレーブがあなたを確認しなかった場合、新しい書き込み要求は拒否されます。
したがって、スプリットブレインシナリオでは、最大10秒のデータが失われます。
3関連情報
- ブログ投稿は簡単ではありません、注意と賞賛に一生懸命働いたすべての人、ありがとう