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 位置と位置を記録することを意味します。 4. メインライブラリをバックアップするときに、binlogの名前と場所を確認します。 マスターステータスを表示します。 mysql> マスターステータスを表示します。 +---------------+----------+-------------+------------------+-------------------+ | ファイル | 位置 | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +---------------+----------+-------------+------------------+-------------------+ | binlog.000004 | 79394496 | | | | +---------------+----------+-------------+------------------+-------------------+ または、バックアップしたデータベースファイルに移動して確認します: 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 台) の構築方法に関する詳細なチュートリアルです。皆様のお役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。編集者がすぐに返信します。 以下もご興味があるかもしれません:
|
<<: Nginx の add_header ディレクティブに注意する必要があるのはなぜですか?
>>: Linux で誤って削除したメッセージ ファイルを復元する方法
目次1. ヘルプ情報を使用する2. データベースの作成、削除、表示3. データベースに接続する4. ...
目次意味文法例1. 初期値initが渡されない2. 初期値を渡す場合3. アレイの重複排除4. Re...
目次1. コード分析2. ソースコードソースコード1. コード分析1.1 HTMLコード分析 <...
ウェブサイトを見るというのは、実は美しい女性を評価するようなものです。見た目を見るとき、私たちは見た...
サーバーとデータベースの構築方法を学ぶ必要があるため、最近は SQL 言語を独学で学び始めました。デ...
MySQL 8.0.12のダウンロードとインストールのチュートリアルは参考までに、具体的な内容は次の...
目次1. コンポーネント化とは何ですか? 2. 基本的な使い方序文:場合によっては、HTML 構造化...
RULES を使用すると、テーブルの内部境界のスタイルを制御できます。基本的な構文<TABLE...
最近、モバイル ページを開発しているときに、ページの幅が 100% の場合、高さは幅の半分になり、携...
mysql explain コマンドは、MySQL がインデックスを使用して選択ステートメントを処理...
この記事では、物流タイムライン効果を実現するためのVueの具体的なコードを例として紹介します。具体的...
今日は、ext3 や他の以前のファイル システムとの違いを含め、ext4 の歴史について説明します。...
目次 <テンプレート> <ul class="コンテナ">...
目次序文インストールと使用方法モジュラー管理Vuex の状態永続性要約する序文Vue 開発では、ユー...
この記事では、Vueの具体的なコード例を参考までに紹介します。具体的な内容は以下のとおりです。初心者...