あなたの質問に対する直接の答えは「はい」ですが、実行しているMySQLのバージョンによって異なります。MySQL 5.5より前は、レプリケーションは次のように動作しました。
- マスターがSQLを実行する
- マスターログのSQLイベントをバイナリログに記録する
- スレーブがマスターバイナリログからSQLイベントを読み取る
- スレーブはI / Oスレッド経由でリレーイベントにSQLイベントを保存します
- スレーブがSQLスレッドを介してリレーログから次のSQLイベントを読み取る
- スレーブがSQLを実行する
- スレーブは、SQLイベントの完全な実行のマスターを確認します
MySQL 5.5以降では、準同期レプリケーションを使用して、レプリケーションは次のように動作します。
- マスターがSQLを実行する
- マスターログのSQLイベントをバイナリログに記録する
- スレーブがマスターバイナリログからSQLイベントを読み取る
- スレーブがSQLイベントの受信のマスターを確認する
- スレーブはI / Oスレッド経由でリレーイベントにSQLイベントを保存します
- スレーブがSQLスレッドを介してリレーログから次のSQLイベントを読み取る
- スレーブがSQLを実行する
- スレーブは、SQLイベントの完全な実行のマスターを確認します
この新しいパラダイムにより、スレーブをマスターにさらに同期させることができます。
それにもかかわらず、ネットワーク内のレイテンシは、MySQLセミシンクレプリケーションを妨げ、古いスタイルの非同期レプリケーションに戻る可能性があります。どうして ?スレーブがトランザクションを確認せずにタイムアウトが発生した場合、マスターは非同期複製に戻ります。少なくとも1つの準同期スレーブが追いつくと、マスターは準同期レプリケーションに戻ります。
UPDATE 2011-08-08 14:22 EDT
MySQL 5.5半同期レプリケーションの設定は簡単です
ステップ1)これらの4行を/etc/my.cnfに追加します
[mysqld]
plugin-dir=/usr/lib64/mysql/plugin
#rpl_semi_sync_master_enabled
#rpl_semi_sync_master_timeout=5000
#rpl_semi_sync_slave_enabled
ステップ2)MySQLを再起動します
service mysql restart
ステップ3)MySQLクライアントでこれらのコマンドを実行します
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
ステップ4)plugin-dirオプションの後に3つのrpm_semi_syncオプションのコメントを外します
[mysqld]
plugin-dir=/usr/lib64/mysql/plugin
rpl_semi_sync_master_enabled
rpl_semi_sync_master_timeout=5000
rpl_semi_sync_slave_enabled
ステップ5)MySQLを再起動します
service mysql restart
全部できた !!!次に、通常どおりMySQLレプリケーションをセットアップします。