組み込みの mySQL マスター/スレーブレプリケーションと比較して、時間の経過とともに高い信頼性 (データの整合性) を提供する、リアルタイムの mySQL データベース同期用のカスタム メカニズムを開発しました。
同期メカニズムは、定期的に 5 秒ごとにトリガーされる定期的なサイクルで動作し、次のフェーズで構成されます。
- masterデータベースは、ダンプ ファイルを生成するように命令されます。
mysqldump
- ダンプ ファイルは、スレーブデータベースを所有するリモート サーバーに送信されます。この転送は
rsync
、 のデルタ アルゴリズムとデータ圧縮を利用します。 - リモートサーバーは、続行するための確認を受信するのを待ちます
- リモート サーバーは、受信したダンプ ファイルをスレーブ MySQL データベースにインポートします。
- リモート サーバーは、同期サイクルが完了したことをローカル サーバーに確認します。
マスターとスレーブの間の不一致を防ぐために、ダンプ ファイルは で呼び出しているスレーブ データベース全体を削除しmysqldump
ます--add-drop-database
。
スレーブは mySQL デーモンを中断することなくダンプ ファイルをインポートするため、mySQLdrop database
がダンプ ファイルから命令を読み取った後、mySQL がすべてのテーブルの再作成を完了する前に、mySQL クライアントがまだ再作成されていないテーブルのデータベースは、彼の要求に失敗する可能性があります。
これが発生する可能性がありますか、それとも、再作成中にデータベースにアクセスしようとする最終的なクライアントが、その要求が実行されるまで静かに一時停止される可能性がありますか? そして最終的に、どのようなソリューションを適用できますか?