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 で誤って削除したメッセージ ファイルを復元する方法

推薦する

インデックスを設計する際の原則は何ですか? インデックスの障害を回避するにはどうすればよいでしょうか?

目次主キーインデックス頻繁にクエリされるフィールドのインデックスを作成する大きなフィールドのインデッ...

CSS BEM 記述標準の詳細な説明

BEM は、Web 開発に対するコンポーネントベースのアプローチです。ユーザー インターフェイスを独...

Deepin Linuxでカーネルを手動でアップグレードする方法

deepinとUbuntuどちらもdebianをベースにしたディストリビューションであり、ここではU...

Nginx は動的と静的の分離を実装します 例の説明

ウェブサイトの解析を高速化するために、動的ページと静的ページを異なるサーバーで解析して、解析速度を向...

Windows Server2014 にセキュリティを適用して MySQL をインストールする際のエラーに対する完璧な解決策

理由はインストール後にきちんとアンインストールされなかったためです。この問題を解決するには、次の点に...

docker システムコマンドセットの使用

目次docker システム df docker システム プルーンdocker systemc 情報...

Linux deb パッケージの解凍、変更、その他の操作方法のコード例

さまざまな理由により、debパッケージ内のさまざまなファイルの内容を直接変更する必要がある場合があり...

Docker JVM メモリ使用量の表示

1. Docker コンテナのホスト マシンに入り、指定されたイメージを実行しているコンテナ ID ...

JS はデータ URL をどのように理解するのでしょうか?

目次概要データ URL の使用を開始するデータURL構文複数言語の文字列のBase64エンコードとデ...

JavaScript における call、apply、bind の実装原則の詳細な説明

目次序文電話使用法成し遂げるシンプルな実装バージョン:アップグレード版:適用する使用法成し遂げるバイ...

Windows10 での MySQL msi インストール チュートリアル (画像とテキスト付き)

1. ダウンロード1. MySQL msi 公式 Web サイトから最新のダウンロードをクリックす...

VMware 仮想マシン ブリッジ モードでインターネットにアクセスできない問題を解決する方法

ステップ1: ローカルイーサネットプロパティをチェックして、VMwareブリッジプロトコルがインスト...

moment.jsの時間と日付の処理の詳細な説明

月曜日から日曜日の時間形式の変換(Y --- 年 M --- 月 D--- 日) : : : : :...

Node.jsサービスDockerコンテナアプリケーション実践のまとめ

この記事では、Docker コマンドの使用とインストールについては説明しません。Docker を基礎...