マスターとスレーブの概念に基づいて、MySQL を使用したレプリケーションの可能性を発見しています。
しかし、スレッドが実際にどのように機能するかについての詳細な情報は見つかりません
(このウェブサイトでも:http://dev.mysql.com/doc/refman/5.0/en/replication-implementation-details.html)
私は3つのスレッドがあることを知っています:
スレーブ SQL スレッド : スレーブのデータベースでリクエストを実行します
スレーブ I/O スレッド : マスターへの接続、バイナリ ファイルの読み取り、スレーブへの要求の書き込み
Master Binlog dump thread : 接続されているすべての I/O スレッドにバイナリ ファイルのコピーを送信します。
また、彼らがこのプロセスに従っていることも知っています。
- まず、I/O スレッドがマスターに接続します
- マスターは Binlog ダンプ スレッドを作成します
- スレーブ スレッドは、バイナリ ログの最新バージョンを取得するためにマスター スレッドに問い合わせます。
- マスター スレッドは、バイナリ ログのコピーをマスター スレッドに送信します。
- スレーブ スレッドはコピーを読み取り、そのコンテンツをスレーブ ホストに書き込みます (これらの新しい要求を実行できるスレーブ SQL スレッド用)。
それはそれでよいのですが、その後の I/O スレッドの動作はどうでしょうか。マスターではまだ接続されていますが、マスター データベースで新しい書き込み要求が行われるとどうなりますか? 本当のプロセスは何ですか?
さまざまな可能性を見つけましたが、それらが良いものかどうかはわかりません:
-
最新のスレーブは、ほとんどの場合、マスターの OS キャッシュにまだキャッシュされているイベントを読み取ります。そのため、バイナリ ログ イベントをスレーブにフィードするためにマスターで物理ディスクを読み取ることはありません。
-
新しい要求がバイナリ ログ ファイルに書き込まれると、マスター スレッドはそれを接続されているすべての I/O スレッドに送信します。
これは StackOverflow に関する私の最初の投稿です。私の質問が理解できることを願っています。
前もって感謝します !:)