動作原理図:
マスタースレーブレプリケーションの原理:
実際のレプリケーションアーキテクチャの大部分は非同期レプリケーションです。 レプリケーションの基本プロセスは次のとおりです:
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 ‘sync’@‘192.168.1.2’ 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 から同期が成功していることを確認します。mysql> start slave;