いわゆるカスケード レプリケーションでは、マスター サーバーが 1 つのスレーブ サーバーにのみデータを同期し、その後スレーブ サーバーがバックエンドのすべてのスレーブ サーバーにデータを同期することで、マスター サーバーの書き込み負荷と複製されたデータのネットワーク IO が軽減されます。 1. マスターサーバーを構成する 1. メイン設定ファイルを変更する vim /etc/my.cnf [mysql]設定ブロックの下に次の2行の設定を追加します。 [mysql] log_bin # バイナリログを有効にする server_id=1 # 現在のノードにグローバルに一意のIDを設定する 2. 設定を有効にするためにMySQLサービスを再起動します。 systemctl 再起動 mairadb 3. コピー権限を持つユーザーアカウントを作成する 'replpass' によって識別される 'repluser'@'HOST' に *.* 上のレプリケーション スレーブを許可します。 コマンド分析:
このコマンドの目的は、repluserがデータベースのすべての内容をコピーすることを許可することです。 2. リレースレーブサーバーの構成 1. メイン設定ファイルを変更する vim /etc/my.cnf [mysql]設定ブロックに次の2行の設定を追加します。 [mysqld] ログビン server_id=2 #現在のノードにグローバルに一意の ID 番号を設定します。read_only=ON #スレーブ サーバーを読み取り専用に制限します。「注意: この制限は SUPER 権限を持つユーザーには無効です」 log_slave_updates #この項目の目的は、マスターサーバーのバイナリログをローカルマシンに記録し、そのバイナリログをバックエンドの他のスレーブサーバーにコピーすることです。 2. 設定を有効にするためにMySQLサービスを再起動します。 systemctl で mariadb を再起動します。 3. レプリケーション権限を持つユーザーアカウントを使用してプライマリサーバーに接続し、レプリケーションスレッドを開始します。 マスターを変更 MASTER_HOST='host', #マスターホストのIPアドレスを指定 MASTER_USER='repluser'、#マスターの承認済みユーザー名を指定します。MASTER_PASSWORD='replpass'、#承認済みユーザーのパスワードを指定します。MASTER_LOG_FILE='mysql-bin.xxxxx'、#マスター サーバーのコピー元となるバイナリ ログを指定します。MASTER_LOG_POS=#; #バイナリ ログの位置。マスター サーバーでこのコマンドを実行して表示できます。show master logs; レプリケーションスレッドIO_THREADとSQL_THREADを開始します。 スレーブを起動します。 4. リレースレーブサーバの状態を確認する MariaDB [(なし)]> スレーブを起動します。 クエリは正常、影響を受けた行は 0 行 (0.00 秒) MariaDB [(なし)]> スレーブステータスを表示\G ************************** 1. 行 **************************** Slave_IO_State: マスターがイベントを送信するのを待機中 マスターホスト: 192.168.68.7 マスターユーザー: repluser マスターポート: 3306 接続再試行: 60 マスターログファイル: mariadb-bin.000001 読み取りマスターログ位置: 557 リレーログファイル: mariadb-relay-bin.000002 リレーログ位置: 843 リレーマスターログファイル: mariadb-bin.000001 Slave_IO_Running: はい「NO の場合はスレッドが起動していないことを意味するので特に注意してください」 Slave_SQL_Running: はい「NO の場合は特に注意してください。スレッドが起動していないことを意味します」 レプリケート_Do_DB: レプリケート_無視_DB: テーブルの複製: 無視テーブルを複製: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: 最終エラー番号: 0 最終エラー: スキップカウンタ: 0 実行マスターログポジション: 557 リレーログスペース: 1139 Until_Condition: なし ログファイルまで: ログ位置まで: 0 マスターSSL許可: いいえ マスターSSLCAファイル: マスターSSLCAパス: マスターSSL証明書: マスターSSL暗号: マスターSSLキー: Seconds_Behind_Master: 0 「この項目は同期時間を示します。0 は即時同期を意味します。」 Master_SSL_Verify_Server_Cert: いいえ 最終IOエラー番号: 0 最後のIOエラー: 最終SQLエラー番号: 0 最後のSQLエラー: Replicate_Ignore_Server_Ids: マスターサーバーID: 1 3. バックエンドスレーブ構成 1. 設定ファイルを変更する vim /etc/my.cnf [mysql]設定ブロックに次の2行の設定を追加します。 [mysqld] server_id=3 #現在のノードにグローバルに一意のID番号を設定します。read_only=ON #スレーブサーバーを読み取り専用に制限します。「注意: この制限は、SUPER権限を持つユーザーには無効です」 2. 設定を有効にするためにMySQLサービスを再起動します。 systemctl で mariadb を再起動します。 3. レプリケーション権限を持つユーザーアカウントを使用してプライマリサーバーに接続し、レプリケーションスレッドを開始します。 マスターを変更 MASTER_HOST='リレーホスト', #リレースレーブホストのIPを指定 MASTER_USER='repluser'、#マスターの承認済みユーザー名を指定します。MASTER_PASSWORD='replpass'、#承認済みユーザーのパスワードを指定します。MASTER_LOG_FILE='mysql-bin.xxxxx'、#リレースレーブサーバーがコピーを開始するバイナリログを指定します。MASTER_LOG_POS=#; #バイナリログの位置。スレーブサーバーでこのコマンドを実行して表示できます。show master logs; レプリケーションスレッドIO_THREADとSQL_THREADを開始します。 スレーブを起動します。 4. スレーブサーバーのステータスを確認する MariaDB [(なし)]> スレーブを起動します。 クエリは正常、影響を受けた行は 0 行 (0.00 秒) MariaDB [(なし)]> スレーブステータスを表示\G ************************** 1. 行 **************************** Slave_IO_State: マスターがイベントを送信するのを待機中 マスターホスト: 192.168.68.17 マスターユーザー: repluser マスターポート: 3306 接続再試行: 60 マスターログファイル: mariadb-bin.000001 読み取りマスターログ位置: 557 リレーログファイル: mariadb-relay-bin.000002 リレーログ位置: 843 リレーマスターログファイル: mariadb-bin.000001 Slave_IO_Running: はい「NO の場合はスレッドが起動していないことを意味するので特に注意してください」 Slave_SQL_Running: はい「NO の場合は特に注意してください。スレッドが起動していないことを意味します」 レプリケート_Do_DB: レプリケート_無視_DB: テーブルの複製: 無視テーブルを複製: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: 最終エラー番号: 0 最終エラー: スキップカウンタ: 0 実行マスターログポジション: 557 リレーログスペース: 1139 Until_Condition: なし ログファイルまで: ログ位置まで: 0 マスターSSL許可: いいえ マスターSSLCAファイル: マスターSSLCAパス: マスターSSL証明書: マスターSSL暗号: マスターSSLキー: Seconds_Behind_Master: 0 「この項目は同期時間を示します。0 は即時同期を意味します。」 Master_SSL_Verify_Server_Cert: いいえ 最終IOエラー番号: 0 最後のIOエラー: 最終SQLエラー番号: 0 最後のSQLエラー: Replicate_Ignore_Server_Ids: マスターサーバーID: 1 5.最後に、マスターサーバーでデータベーステストを作成し、同期されているかどうかを確認します。 カスケードレプリケーション機能
要約する
以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Centos8 に nginx をインストールするための詳細なチュートリアル (画像とテキスト)
>>: Vue でインスタント通信を実現するために MQTT サーバーを使用する手順を記録します。
以前、MySQLがローカルでは接続できるのにリモートでは接続できないという問題に遭遇したことがありま...
MySQL公式サイトのダウンロードアドレス: https://dev.mysql.com/downl...
Text の height 属性が定義されている場合、Text に入力されたテキストは垂直方向に中央...
目次1. メモリモデルとランタイムデータ領域2. マインドマップと凡例3. オブジェクトはJVMから...
序文数日前、偶然、コーナーの四角形が欠落している機能に遭遇しました。最初に頭に浮かんだのは、必要な場...
現象システムは Linux システムカーネルを正常にコンパイルできましたが、SVN をインストールし...
目次Vueのレスポンシブシステムの基本原則1. Object.definePropertyの使い方を...
.y { background: url(//img.jbzj.com/images/o_y.pn...
1. Dockerネットワークを作成する docker ネットワーク作成 kong-net 2. デ...
ミラーリングも Docker のコアコンポーネントの 1 つです。ミラーリングはコンテナ操作の基盤で...
MySQL データベースにデータを挿入します。以前はよく使われていた INSERT INTO テーブ...
アプリをテストしたいが、それを携帯電話で実行したくない場合があります。この場合、仮想マシンを使用して...
はじめに: この記事ではreact-native-cliで作成したサンプル プロジェクト (Andr...
Tomcat は Web コンテナとして広く知られています。Java を学び始めたときから現在の仕事...
この記事の例では、カスケードセレクターを実装するためのelementUIの具体的なコードを参考までに...