ホームページ >データベース >mysql チュートリアル >データの冗長化と拡張の実現:クラスタ環境におけるMySQLマスタースレーブレプリケーション技術の適用事例

データの冗長化と拡張の実現:クラスタ環境におけるMySQLマスタースレーブレプリケーション技術の適用事例

WBOY
WBOYオリジナル
2023-09-08 16:36:331010ブラウズ

データの冗長化と拡張の実現:クラスタ環境におけるMySQLマスタースレーブレプリケーション技術の適用事例

データの冗長化と拡張の実現:クラスタ環境におけるMySQLマスター・スレーブ・レプリケーション技術の適用事例

はじめに:
インターネットの発展に伴い、データ量は増加傾向にあります。データ量の増加 ユーザー数の継続的な増加に伴い、従来のスタンドアロン データベースでは、高い同時実行性と高可用性のニーズを満たすことができなくなりました。この文脈において、分散データベースは一般的なソリューションの 1 つとなっています。 MySQL のマスター/スレーブ レプリケーション テクノロジは、最も一般的に使用されているリレーショナル データベースの 1 つとして、分散データベースでも広く注目されています。この記事では、クラスタ環境でデータの冗長化と拡張を実現するための MySQL マスター/スレーブ レプリケーション テクノロジの適用事例と、対応するコード例を紹介します。

1. MySQL マスター/スレーブ レプリケーション テクノロジの概要
MySQL マスター/スレーブ レプリケーション テクノロジは、バイナリ ログに基づくデータ レプリケーション方法です。マスター データベースの変更操作をリアルタイムでバイナリ ログに記録し、バイナリ ログをスレーブ データベースに送信して再生することで、マスター データベースとスレーブ データベース間のデータの一貫性を確保します。クラスター環境では、複数のスレーブ ライブラリを異なるサーバーにデプロイすることで、データの冗長性と拡張性を実現できます。

2. クラスター環境の展開

  1. メイン ライブラリの構成
    まず、サーバー上に MySQL メイン ライブラリを構築する必要があります。使用しているオペレーティング システムが Linux で、データベースのバージョンが MySQL 5.7 であると仮定します。以下は、一般的に使用されるメイン ライブラリ設定パラメータの一部です:

[mysqld]
server-id=1
log_bin=mysql-bin
binlog_format=row

  1. スレーブ ライブラリの構成
    MySQL スレーブ ライブラリを他のサーバーに構築します。スレーブ データベースのサーバー ID は一意であり、マスター データベースとは異なる必要があることに注意してください。以下はスレーブ ライブラリの設定例です:

[mysqld]
server-id=2
relay_log=mysql-relay-bin
read_only=1

3. クラスタ環境の構築

  1. メインライブラリの設定
    メインライブラリ上で、レプリケーション用のユーザーを作成し、対応する権限を与える必要があります。作成したユーザー名が replication で、パスワードが 123456 であるとします。対応する SQL コマンドは次のとおりです。

CREATE USER 'replication'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON . TO 'replication'@'%';

  1. スレーブ データベースの設定
    スレーブ データベースで、メインに接続するように構成する必要があります。データ複製用のデータベース。メイン データベースの IP アドレスは 192.168.1.100、ユーザー名は replication、パスワードは 123456、スレーブ データベースの ID は 2 であるとします。対応する SQL コマンドは次のとおりです。

CHANGE MASTER TO
MASTER_HOST ='192.168.1.100',
MASTER_USER='レプリケーション',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=123456;

  1. レプリケーションの開始
    スレーブ ライブラリを設定した後、レプリケーション機能を開始する必要があります。まず、次のコマンドを実行してレプリケーションを開始します:

START SLAVE;

次に、次のコマンドを使用してレプリケーションのステータスを確認します:

SHOW SLAVE STATUSG;

表示内容の「Slave_IO_Running」と「Slave_SQL_Running」が両方とも「Yes」であれば、レプリケーションは正常に実行されています。

4. アプリケーション ケース: データの冗長性と拡張
クラスター環境では、読み取りおよび書き込みリクエストを複数のスレーブ ライブラリに分散して、データの冗長性と拡張を実現できます。以下は、データの冗長性と拡張の効果を示す簡単なアプリケーション ケースです。

  1. テスト テーブルの作成
    ユーザー情報を保存するためのテスト テーブルをメイン データベースに作成します。

CREATE TABLE user (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(20 ) NOT NULL,
age INT(3) NOT NULL,
主キー (id)
) ENGINE=INNODB DEFAULT CHARSET=utf8;

  1. テスト データの挿入
    メイン ライブラリにテスト データを挿入します。

INSERT INTO user (name, age) VALUES ('Alice', 25), ('Bob', 30) ), ('Chris', 35);

  1. クエリ データ
    アプリケーションでは、任意のスレーブ ライブラリに読み取りリクエストを送信できます。アプリケーション サーバーに IP アドレスが 192.168.1.101 と 192.168.1.102 の 2 つのスレーブ ライブラリがあると仮定します。次のコード例を使用して読み取りリクエストを送信できます:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

パブリック クラス ReadRequestDemo {

public static void main(String[] args) {
    String url = "jdbc:mysql://192.168.1.101:3306/test";
    String username = "username";
    String password = "password";

    try {
        Connection conn = DriverManager.getConnection(url, username, password);
        String sql = "SELECT * FROM user";
        Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery(sql);

        while (rs.next()) {
            int id = rs.getInt("id");
            String name = rs.getString("name");
            int age = rs.getInt("age");
            System.out.println("id=" + id + ", name=" + name + ", age=" + age);
        }

        rs.close();
        stmt.close();
        conn.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

}

上記のコード例を通して、スレーブ ライブラリがメイン ライブラリに挿入されたテスト データを返すことがわかります。複数のスレーブ ライブラリを構成しているため、読み取りリクエストを異なるスレーブ ライブラリに分散することができ、それによってデータの冗長化と拡張が実現されます。

結論:
MySQL のマスター/スレーブ レプリケーション テクノロジーをクラスター環境に適用した場合、マスター データベースと複数のスレーブ データベースを構築することでデータの冗長化と拡張を実現します。適切な構成とチューニングを通じて、システムの同時実行パフォーマンスとスケーラビリティを向上させることができます。同時に、マスター/スレーブ レプリケーション テクノロジは、データの高可用性と災害復旧機能も提供します。多数の同時読み取り操作を処理する必要があるアプリケーション シナリオの場合、MySQL マスター/スレーブ レプリケーション テクノロジは検討する価値のあるソリューションです。

以上がデータの冗長化と拡張の実現:クラスタ環境におけるMySQLマスタースレーブレプリケーション技術の適用事例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。