ホームページ >データベース >mysql チュートリアル >MySQL でマスター/スレーブ レプリケーション アーキテクチャを迅速に構築する方法

MySQL でマスター/スレーブ レプリケーション アーキテクチャを迅速に構築する方法

PHPz
PHPz転載
2023-05-30 10:01:331445ブラウズ

MySQL でマスター/スレーブ レプリケーション アーキテクチャを迅速に構築する方法

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

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

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

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

MySQL でマスター/スレーブ レプリケーション アーキテクチャを迅速に構築する方法

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

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

MySQL でマスター/スレーブ レプリケーション アーキテクチャを迅速に構築する方法

2. 実装

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

  1. マスターになりましょう。 first データベース内のデータが変更されると、変更レコードが binlog ログに書き込まれます。

  2. スレーブ データベースは、一定期間内にマスター データベースの binlog ログを検出し、変更が発生した場合はマスター ログ ファイルの情報を要求します。

原理を理解した後、マスター/スレーブ レプリケーションを有効にするための前提条件を知る必要があります。

  1. マスター ノードはバイナリ ログ ログを有効にする必要があります。 (mysql はデフォルトでは有効にしません) binlog)

  2. スレーブ ノード、binlog ファイルと同期オフセットを指定します

  • マスターノードのIPを指定します

  • マスターノードを実行するためのユーザー名とパスワード

これで大まかには理解できたので、次は1 つのマスターと 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 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 でマスター/スレーブ レプリケーション アーキテクチャを迅速に構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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