ホームページ  >  記事  >  データベース  >  MySQL の詳細な分析によるマスター/スレーブ レプリケーション アーキテクチャの迅速な構築

MySQL の詳細な分析によるマスター/スレーブ レプリケーション アーキテクチャの迅速な構築

WBOY
WBOY転載
2022-03-11 18:01:311529ブラウズ

この記事では、mysql に関する関連知識を提供します。主に、マスター/スレーブ レプリケーション アーキテクチャを迅速に構築する方法に関する関連問題を紹介します。MySQL データベースが提供するマスター/スレーブ レプリケーション機能は、簡単に構築できます。データを複数のサーバーに自動バックアップすることでデータベースを拡張し、データのセキュリティを大幅に強化することを実現しましたので、皆様のお役に立てれば幸いです。

MySQL の詳細な分析によるマスター/スレーブ レプリケーション アーキテクチャの迅速な構築

推奨学習: mysql チュートリアル

1. マスター/スレーブのレプリケーションと読み取りと書き込みの分離

1.1 マスター/スレーブ レプリケーション (データ レベル)

マスター/スレーブ レプリケーションは、読み取り/書き込み分離の前提条件です。 MySQLデータベースが提供するマスタスレーブレプリケーション機能は、複数サーバ上のデータの自動バックアップを容易に実現し、データベースの拡張を実現し、データのセキュリティを大幅に強化します。同時に、マスター/スレーブ レプリケーションを実装した後、読み取りと書き込みの分離を実装することで、データベースの負荷パフォーマンスをさらに向上させることができます。

図に示すのは、マスター/スレーブ レプリケーションの一般的な実装プロセスです。

MySQL の詳細な分析によるマスター/スレーブ レプリケーション アーキテクチャの迅速な構築

1.2 読み取りと書き込みの分離 (ビジネス レベル)

読み取りと書き込みの分離はマスター/スレーブ レプリケーションに基づいており、データベースのマスター/スレーブ レプリケーションのみが行われます。読み書きの分離をさらに実現するために。読み取りと書き込みの分離は、すべてのクエリ操作がサブデータベースで実行され、すべての書き込み操作がメイン データベースで実行されると理解できます。データがメイン データベースに書き込まれた後、データはマスター/スレーブ レプリケーションを通じてサブデータベースにバックアップされ、データの整合性が確保されます。

MySQL の詳細な分析によるマスター/スレーブ レプリケーション アーキテクチャの迅速な構築

2. 実装

まずマスター/スレーブ レプリケーションの原理を理解しましょう:

  1. まず、次のデータになります。マスター データベース 変更が発生すると、変更レコードが binlog ログに書き込まれます。
  2. スレーブ データベースは、一定期間内にマスター データベースの binlog ログを検出し、変更が発生した場合はマスター ログ ファイルの情報を要求します。

その原理を理解した後、マスター/スレーブ レプリケーションを有効にするための前提条件を知る必要があります。
  1. マスター ノードは binlog ログを有効にする必要があります (mysql は有効にします)。デフォルトでは binlog が有効になっていません)
  2. スレーブ ノード、binlog ファイル、および同期オフセットを指定します
    • マスター ノードの IP を指定します
    • マスターノードを実行するためのユーザー名とパスワード

これで大まかには理解できたので、これを使ってデータベースモデルを構築しましょう。マスターと 1 つのスレーブを使用して、データベースのマスター/スレーブ設定の構成プロセスをデモンストレーションします。

CentOSサーバーを2台用意し、事前にmysql5.7をインストールしておきます。

2.1 マスター サーバーの binlog ログを開きます。

mysql の my.cnf ファイルを編集します: (インストール方法が異なり、ファイルの場所も異なる場合があります。特定の問題は次のセクションで分析されます)詳細~)

vim /etc/my.cnf
元のファイルには次の内容が含まれていないため、自分で追加する必要があります。私の側では、myslave データベース内のデータのマスター/スレーブ レプリケーションを実行します。

server-id = 1 #server-id 服务器唯一标识log_bin = master-bin 
#log_bin 启动MySQL二进制日志log_bin_index = master-bin.index
binlog_do_db = myslave #binlog_do_db 指定记录二进制日志的数据库 这两个指定可以不添加binlog_ignore_db = mysql 
#binlog_ignore_db 指定不记录二进制日志的数据库
次のコマンドを使用して、mysql を再起動します。 Linux のバージョンが異なれば、コマンドも異なる場合があります。

service mysql restart
正常に起動した後、次のステートメントを通じて bin-log のオープン ステータスを確認できます: (Navicat で直接クエリするだけです)

show variables like 'log_bin%';
MySQL の詳細な分析によるマスター/スレーブ レプリケーション アーキテクチャの迅速な構築

2.2リモート アクセス

#允许远程用户访问
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.221.131' IDENTIFIED BY '123456' WITH GRANT OPTION;
#刷新
FLUSH PRIVILEGES;

2.3 スレーブ ノードの構成
  • まずマスター ノードで次のコマンドを実行して、マスター ノードのステータスを把握し、次の図に示す情報を取得します。 。

show master status;
MySQL の詳細な分析によるマスター/スレーブ レプリケーション アーキテクチャの迅速な構築
  • 関連構成の変更

    vim /etc/my.cnf
    関連情報の追加:

    server-id = 2  #唯一标识relay-log = slave-relay-bin
    relay-log-index = slave-relay-bin.index
    replicate-do-db=myslave #备份数据库 对应master中设置的,可以不设置replicate-ignore-db=mysql #忽略数据库
    必ず再起動してください。 service;
service mysql restart
  • スレーブノードで以下のコマンドを実行します。

    change master to master_host='192.168.221.128',master_user='root',master_password='123456',master_log_file='binlog.000009',master_log_pos=2339;
    master_log_file は最初のステップで取得したファイル名です;

    master_log_pos は最初のステップで取得した同期位置です;
  • スレーブ同期の開始
  • start slave;
  • 同期状態を確認すると、下図のような状態になり、マスタとスレーブの同期が正常に確立されています。テーブル テストはメイン データベースで作成できます。

    show slave status\G
    MySQL の詳細な分析によるマスター/スレーブ レプリケーション アーキテクチャの迅速な構築
  • 推奨学習: mysql 学習チュートリアル

    ###

    以上がMySQL の詳細な分析によるマスター/スレーブ レプリケーション アーキテクチャの迅速な構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。