動作原理図:
マスタースレーブレプリケーションの原理:
は同期レプリケーションと非同期レプリケーションに分かれています。実際のレプリケーションアーキテクチャの大部分は非同期レプリケーションです。 レプリケーションの基本プロセスは次のとおりです:
1) スレーブの IO プロセスはマスターに接続し、指定されたログ ファイルの指定された位置 (またはログの先頭) からログの内容を要求します。 2). マスターは、スレーブの IO プロセスからのリクエストを受け取り、コピーを担当する IO プロセスは、
リクエスト情報に従って、ログの指定された場所以降のログ情報を読み取り、それをスレーブの IO プロセスに返します。ログに含まれる情報に加えて、返される情報には、bin ログ ファイルの名前と、返された情報がスレーブ側に到達した bin ログの場所も含まれます。 IOプロセスは情報を受信し、受信したログの内容をスレーブ側のリレーログファイルの末尾に順次追加し、マスター側で読み取ったbinログのファイル名と場所をマスター情報ファイルに記録します。次回読み取れるようにするため、マスターに「特定の bin ログのログの内容をどこから開始する必要がありますか? 送信してください。」と明確に伝えます 4)。リレーログに内容を追加しました。リレーログの内容は、実際にマスター側で実行する際にすぐに解析されて実行内容となり、単独で実行されます。
環境説明オペレーティングシステム: CentOS6.3_x64
マスターサーバーマスター: 192.168.0.202
スレーブサーバー: 192.168.0.203
1. MySQL マスター/スレーブ レプリケーション
mysql-5.5.30.tar.gz をインストールしました。ここでは省略します...
2. マスターサーバーとスレーブサーバーを変更します3. マスターサーバーとスレーブサーバーの mysql を再起動します
master服务器配置: vi /usr/local/mysql/etc/my.cnf [mysqld] server-id=202 #设置服务器唯一的id,默认是1,我们设置ip最后一段,slave设置203 log-bin=mysql-bin # 启用二进制日志 binlog-ignore-db = mysql,information_schema #忽略写入binlog的库 slave服务器配置: vi /usr/local/mysql/etc/my.cnf [mysqld] server-id=203 replicate-do-db = abc #只同步abc库 slave-skip-errors = all #忽略因复制出现的所有错误
4. メインサーバーでアカウントを作成し、スレーブを承認します
/etc/init.d/mysqld restart
5. メインデータベースのステータスを確認します
mysql> mysql -u root -p123.com mysql> GRANT REPLICATION SLAVE ON *.* to [email protected] identified by ‘1234.com’; #replication:复制
6.スレーブデータベース
mysql> show master status; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000002 | 263 | | | +------------------+----------+--------------+------------------+
7. スレーブ同期プロセスを開始し、ステータスを確認します
mysql> change master to -> master_host='192.168.0.202', -> master_user='sync', -> master_password='1234.com', -> master_log_file='mysql-bin.000002', -> master_log_pos=263; #Log和pos是master上随机获取的。这段也可以写到my.cnf里面。
ステータスが正常であることを示すには、Slave_IO_Running と Slave_SQL_Running の値が YES である必要があります。
8. マスターとスレーブの同期を確認します
マスター mysql にデータベースabc を作成し、mysql から同期が成功していることを確認します。 「Last_IO_Error: バイナリ ログからデータを読み取るときにマスターから致命的なエラー 1236 が発生しました: 'バイナリ ログ インデックス ファイルの最初のログ ファイル名が見つかりませんでした'」解決策:エラーは「スレーブによってマスターに設定されたバイナリ ファイル名または pos 値が一致しません。」です。 最初にログをフラッシュし、次にマスター データベースのステータスを確認し、ログ ファイル名と位置の値を確認します。 次に、スレーブで次のコマンドを実行します: CHANGE MASTER TO MASTER_LOG_FILE='binary log name ', MASTER_LOG_POS =value; 最後に同期プロセスを開始します: スレーブを開始します; 以上がMySQL マスター/スレーブ レプリケーションの原理と構成を分析するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。mysql> start slave;