ホームページ > データベース > mysql チュートリアル > MySQLマスタースレーブレプリケーションの原理と構成

MySQLマスタースレーブレプリケーションの原理と構成

黄舟
リリース: 2017-02-22 11:02:34
オリジナル
1299 人が閲覧しました



動作原理図:

MySQLマスタースレーブレプリケーションの原理と構成

マスタースレーブレプリケーションの原理:

実際のレプリケーションアーキテクチャの大部分は非同期レプリケーションです。 レプリケーションの基本プロセスは次のとおりです:

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 マスター/スレーブ レプリケーション

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 である必要があります。

MySQLマスタースレーブレプリケーションの原理と構成8. マスターとスレーブの同期を確認します

マスター mysql にデータベース abc を作成し、mysql から同期が成功していることを確認します。

mysql> start slave;
ログイン後にコピー
スレーブの起動時に報告されたエラー: 「Last_IO_Error: バイナリ ログからデータを読み取るときにマスターから致命的なエラー 1236 が発生しました: 'バイナリ ログ インデックス ファイルの最初のログ ファイル名が見つかりませんでした'」

解決策:エラーは「スレーブによってマスターに設定されたバイナリ ファイル名または pos 値が一致しません。」です。

最初にログをフラッシュし、次にマスター データベースのステータスを確認し、ログ ファイル名と位置の値を確認します。

次に、スレーブで次のコマンドを実行します: CHANGE MASTER TO MASTER_LOG_FILE='binary log name ', MASTER_LOG_POS = value;

最後に同期プロセスを開始します: start smile;

上記は、MySQL マスター/スレーブ レプリケーションの原理と構成内容です。その他の関連内容については、PHP 中国語 Web サイト (www. php.cn)!

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート