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

MySQL マスター/スレーブ レプリケーションの原理と構成を分析する

怪我咯
怪我咯オリジナル
2017-04-06 18:10:551482ブラウズ

動作原理図:

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

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;

最後に同期プロセスを開始します: スレーブを開始します;

以上がMySQL マスター/スレーブ レプリケーションの原理と構成を分析するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。