MySQL 5.7.18 マスタースレーブレプリケーション設定(マスター 1 台とスレーブ 1 台)チュートリアルの詳細な説明

MySQL 5.7.18 マスタースレーブレプリケーション設定(マスター 1 台とスレーブ 1 台)チュートリアルの詳細な説明

1. 複製原理

マスター サーバーはバイナリ ログ ファイルに更新を書き込み、ログのローテーションを追跡するためにファイルのインデックスを維持します。これらのログには、スレーブ サーバーに送信された更新が記録されます。スレーブがマスターに接続すると、スレーブがログで読み取った最後の正常な更新の場所がマスターに通知されます。スレーブは、その時点から発生するすべての更新を受信し、その後ブロックして、マスターからの新しい更新の通知を待機します。

MySQL は、レプリケーション機能を実行するために 3 つのスレッドを使用します (マスターに 1 つ、スレーブに 2 つ)。START SLAVE が発行されると、スレーブは I/O スレッドを作成してマスターに接続し、バイナリ ログに記録されたステートメントを送信します。マスターは、バイナリ ログの内容をスレーブに送信するスレッドを作成します。

このスレッドは、プライマリ サーバー上の Binlog Dump スレッドです。スレーブ サーバーの I/O スレッドは、マスター サーバーの Binlog Dump スレッドによって送信されたコンテンツを読み取り、そのデータをスレーブ サーバーのデータ ディレクトリ内のローカル ファイル (リレー ログ) にコピーします。 3 番目のスレッドは SQL スレッドであり、リレー ログを読み取り、ログに含まれる更新を実行するためにスレーブ サーバーによって作成されます。

2. サーバーの準備

オペレーティング システムのバージョン: Red Hat Enterprise Linux Server リリース 6.7 (Santiago)

マスター IP: 172.16.115.245 ホスト名: mysql2 server_id: 245

スレーブ IP: 172.16.115.247 ホスト名: mysql3 server_id: 247

MySQL 5.7.18がマスターサーバーとスレーブサーバーの両方にインストールされました

3. マスタースレーブレプリケーションの実装の詳細

1. マスター サーバー上のサーバーの接続アカウントを設定し、REPLICATION SLAVE 権限を付与します。

'repl@20170509' によって識別される 'repl'@'%' に *.* のレプリケーション スレーブを許可します。

2. マスター設定ファイルmy.cnfを変更する

サーバーID = 245
log_bin = /data/mysqllog/3306/bin_log/binlog

これら 2 つの値を設定する必要があります。設定後、MySQL を再起動します。

3. マスター上の全データをバックアップする

mysqldump -uroot -p'password' --master-data=2 --single-transaction -R --triggers -A > /backup/all.sql

例:

--master-data=2 は、バックアップ時のマスターの Binlog 位置と位置を記録することを意味します。
--single-transaction は一貫性のあるスナップショットを取得することを意味します
-Rはストアドプロシージャと関数のバックアップを意味します
--triggres はバックアップトリガーを意味します
-Aはすべてのライブラリをバックアップすることを意味します

4. メインライブラリをバックアップするときに、binlogの名前と場所を確認します。

マスターステータスを表示します。
mysql> マスターステータスを表示します。
+---------------+----------+-------------+------------------+-------------------+
| ファイル | 位置 | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+-------------+------------------+-------------------+
| binlog.000004 | 79394496 | | | |
+---------------+----------+-------------+------------------+-------------------+

または、バックアップしたデータベースファイルに移動して確認します: vi all.sql

5. スレーブライブラリ構成ファイルmy.cnfを変更する

server-id = 247 (一意、メインデータベースと同じにすることはできません。通常はサーバー IP の最後の 3 桁に設定されます)
log_bin = /data/mysql/logdir/3306/bin_log/binlog
innodb_file_per_table = オン
スキップ名解決 = オン
リレーログ = /data/mysql/logdir/3306/リレーログ/リレー.log
binlog 形式 = 行
ログスレーブ更新 = true

read_only=ON (読み取り専用モード)

設定後、MySQLを再起動します。

6. スレーブサーバーでマスターバックアップを復元する

mysql -u root -p 'パスワード' < all.sql

7. スレーブ ライブラリを停止し、マスター/スレーブ パラメータを構成して、スレーブ ライブラリを開きます。

mysql> stop slave; #スレーブを停止mysql>CHANGE MASTER TO MASTER_HOST='172.16.115.245',MASTER_USER='repl', MASTER_PASSWORD='repl@20170509',MASTER_LOG_FILE='binlog.000004',MASTER_LOG_POS=154;
mysql> start slave; #レプリケーションを開始mysql> show slave status\G
************************** 1. 行 ****************************
Slave_IO_State: マスターがイベントを送信するのを待機中
マスターホスト: 172.16.115.245
マスターユーザー: repl
マスターポート: 3306
接続再試行: 60
マスターログファイル: binlog.000004
読み取りマスターログ位置: 104634190
リレーログファイル: relay.000003
リレーログ位置: 104632819
リレーマスターログファイル: binlog.000004
スレーブIO実行中: はい
スレーブSQL実行中: はい
レプリケート_Do_DB: 
レプリケート_無視_DB: 
テーブルの複製: 
無視テーブルを複製: 
Replicate_Wild_Do_Table: 
Replicate_Wild_Ignore_Table: 
最終エラー番号: 0
最終エラー: 
スキップカウンタ: 0
実行マスターログ位置: 104634190
リレーログスペース: 104634713
Until_Condition: なし
ログファイルまで: 
ログ位置まで: 0
マスターSSL許可: いいえ
マスターSSLCAファイル: 
マスターSSLCAパス: 
マスターSSL証明書: 
マスターSSL暗号: 
マスターSSLキー: 
マスターより遅れている秒数: 0
Master_SSL_Verify_Server_Cert: いいえ
最終IOエラー番号: 0
最後のIOエラー: 
最終SQLエラー番号: 0
最後のSQLエラー: 
Replicate_Ignore_Server_Ids: 
マスターサーバー ID: 245
マスター_UUID: 4f545573-3170-11e7-b903-000c29462d8c
マスター情報ファイル: /data/mysql/datadir/3306/data/master.info
SQL_遅延: 0
SQL_残り遅延: NULL
Slave_SQL_Running_State: スレーブはすべてのリレーログを読み取りました。さらに更新を待機しています。
マスター再試行回数: 86400
マスターバインド: 
最終IOエラータイムスタンプ: 
最終SQLエラータイムスタンプ: 
マスターSSL証明書: 
マスターSSLCrlパス: 
取得済み_Gtid_Set: 
実行されたGtidセット: 
自動位置: 0
Replicate_Rewrite_DB: 
チャンネル名: 
マスター TLS バージョン:

8. マスターとスレーブ関連のプロセスを表示する

マスター Binlog ダンプ スレッド:

mysql> プロセスリストを表示 \G
************************** 1. 行 ****************************
識別子: 13
ユーザー: repl
ホスト: 172.16.115.247:44602
デシベル: NULL
コマンド: Binlog ダンプ
時間: 76514
状態: マスターはすべてのバイナリログをスレーブに送信しました。さらに更新を待機しています。
情報: NULL

スレーブ IO/SQL スレッド:

mysql> プロセスリストを表示 \G
************************** 1. 行 ****************************
識別子: 10
ユーザー: システムユーザー
ホスト: 
デシベル: NULL
コマンド: 接続
時間: 81148
状態: マスターがイベントを送信するのを待機中
情報: NULL
************************** 2. 行 ****************************
識別子: 12
ユーザー: システムユーザー
ホスト: 
デシベル: NULL
コマンド: 接続
時間: 5
状態: リレーログからイベントを読み取り中
情報: NULL

9. この時点で、マスター スレーブ構成は完了です。マスター サーバーでデータベース、テーブル、その他の操作を作成し、スレーブ データベースが同期されているかどうかを確認できます。

要約する

上記は、編集者が紹介した MySQL 5.7.18 マスタースレーブレプリケーション (マスター 1 台とスレーブ 1 台) の構築方法に関する詳細なチュートリアルです。皆様のお役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。編集者がすぐに返信します。

以下もご興味があるかもしれません:
  • MySQLマスタースレーブデータベース構築方法の詳細な説明
  • Docker コンテナを使用して MySql マスター スレーブ レプリケーションを構築する
  • MySQL 5.7 Docker のマスタースレーブレプリケーションアーキテクチャの構築に関するチュートリアル
  • MySQL マスタースレーブレプリケーションの読み書き分離構造の詳細な説明
  • Docker ベースの MySQL マスタースレーブレプリケーション環境を構築するための実装手順
  • MySQL マスタースレーブ構築(複数のマスターと 1 つのスレーブ)の実装アイデアと手順

<<:  Nginx の add_header ディレクティブに注意する必要があるのはなぜですか?

>>:  Linux で誤って削除したメッセージ ファイルを復元する方法

推薦する

フレックスレイアウトとposition:absolute/fixedの競合の詳細な説明

以前、プロジェクトを開発しているときに、flex レイアウトと position:absolute/...

面接官がmysqlのcharとvarcharの違いを尋ねたとき

目次charとvarcharの違いcharとvarcharの違い上記は、MySQL における cha...

Kafka の Docker デプロイメントと Spring Kafka 実装

この記事は主にDockerによるKafkaのデプロイとSpring Kafkaの実装について紹介しま...

Nginx設定の原理と実装プロセスの詳細な説明https

Linuxユーティリティcertbotを使用してhttps証明書を生成するこのツールは Let&#...

React.Childrenの詳しい使い方

目次1. React.Children.map 2. React.Children.forEach ...

MySQL クエリの重複データ (重複データを削除し、ID が最も小さいデータのみを保持します)

開発の背景:最近、私はバッチ データを MySQL データベースにインポートする機能に取り組んでいま...

jQueryはシャトルボックス機能を実現する

この記事では、シャトルボックス機能を実現するためのjQueryの具体的なコードを参考までに紹介します...

Nginx のパフォーマンスを向上させるための提案

Web アプリケーションが 1 台のマシンでのみ実行される場合、パフォーマンスを向上させるのは非常に...

HTML のメタタグの簡単な比較

メタ タグは、ファイル情報を定義し、検索エンジンによる検索を容易にするために Web ページ ファイ...

フロントエンドJSサンドボックスを実装するいくつかの方法についての簡単な説明

目次序文iframeはサンドボックスを実装しますdiffメソッドを使用したサンドボックスの実装プロキ...

Sublime Text - ブラウザのショートカットキーを設定するための推奨方法

コード効果を異なるブラウザで表示することはよくあることなので、異なるショートカットキーを使用して対応...

Dockerが正常に起動しない原因と解決策を詳しく解説

1. Docker 起動時の異常なパフォーマンス: 1. ステータスが繰り返し再起動している場合は、...

Nginx 仮想ホストを構成する 3 つの方法 (ドメイン名に基づく)

Nginx は、IP ベースの仮想ホスト構成、ポート ベースの仮想ホスト構成、ドメイン名ベースの仮...

JS で美しい条件式を書く方法についての簡単な説明

目次複数の条件文複数属性オブジェクトスイッチステートメントを置き換えるデフォルトパラメータとデストラ...

3つのDocker Nginxログの処理の詳細な説明

社内の同僚は Nginx ログの標準出力、つまりコンソール経由の処理を必要としているため、まずログを...