mysql主従レプリケーション遅延問題の詳細について

1720 ワード

mysqldbaの面接で質問がありました.
msyql replicationメカニズムの実現原理を説明し、mysqlマスターライブラリを停止せずに、データが一致しないslaveのデータベースノードをリカバリするにはどうすればいいですか?
MySQLのレプリケーション(replication)は、1つのMySQL instace(Masterと呼ばれる)から別のMySQL instance(Slaveと呼ばれる)に非同期のレプリケーションです.レプリケーション全体の実装は主に3つのプロセスによって行われ、2つのプロセスはSlave(SqlプロセスとIOプロセス)、もう1つのプロセスはMaster(IOプロセス)にあります.
新浪のある大牛の言葉を引用すると、mysqlレプリケーションはbinlogに基づく単一スレッドの非同期レプリケーションプロセスである.MySQL Replicationレプリケーションの基本手順は、1、Slave上のIOプロセスがMasterに接続され、指定されたログファイルの指定された場所(または最初のログ)から後のログ内容を要求することです.
 
  
mysql> CHANGE MASTER TO
            ->     MASTER_HOST='master_host_name',
            ->     MASTER_USER='replication_user_name',
            ->     MASTER_PASSWORD='replication_password',
            ->     MASTER_LOG_FILE='recorded_log_file_name',
            ->     MASTER_LOG_POS=recorded_log_position;

2.Masterは、SlaveのIOプロセスからの要求を受信した後、コピーを担当するIOプロセスにより、要求情報に基づいてログ指定位置を定めた後のログ情報を読み出し、SlaveのIOプロセスに戻る.返却情報には、ログに含まれている情報に加えて、今回返却された情報がMaster側のbin-logファイルの名前とbin-logの場所まで含まれている.
3、SlaveのIOプロセスは情報を受信した後、受信したログ内容をSlave側のrelay-logファイルの最後尾に順次追加し、読み取ったMaster側のbin-logのファイル名と位置をmaster-infoファイルに記録し、次の読み取り時に分かるように高速Master「あるbin-logのどの位置から後ろのログ内容が必要なのか、送ってください」
4、SlaveのSqlプロセスはrelay-logに新たにコンテンツが追加されたことを検出すると、すぐにrelay-logのコンテンツがMaster側で実際に実行されたときの実行可能なコンテンツとなり、自身で実行されることを解析する
操作手順:(1)メインサーバにログインし、メインサーバの状態mysql>show master statusを表示する.現段階のmasterのデータオフセット量の値を見つけます.
(2)スレーブサーバにログインし、同期操作を実行する.mysql>stop slave;mysql>change master toは直接この価値のある位置に位置決めします.ここでもslaveに対応する位置を示すことに相当する.mysql > start slave;
(3)サーバからのステータスの表示mysql>show slave status