ホームページ >データベース >mysql チュートリアル >分散データベース アーキテクチャを使用して高可用性 MySQL クラスターを構築する方法

分散データベース アーキテクチャを使用して高可用性 MySQL クラスターを構築する方法

WBOY
WBOYオリジナル
2023-08-02 16:29:131559ブラウズ

分散データベース アーキテクチャを使用して高可用性 MySQL クラスターを構築する方法

インターネットの発展に伴い、データベースの高可用性とスケーラビリティに対する要求がますます高まっています。分散データベース アーキテクチャは、これらのニーズを解決する効果的な方法の 1 つとなっています。この記事では、分散データベース アーキテクチャを使用して高可用性 MySQL クラスターを構築する方法を紹介し、関連するコード例を示します。

  1. MySQL マスター/スレーブ レプリケーション クラスターの構築

MySQL マスター/スレーブ レプリケーションは、MySQL が提供する基本的な高可用性ソリューションです。マスター/スレーブ レプリケーションを通じて、データのバックアップと読み取り/書き込みの分離を実現できます。まず、マスター ライブラリと複数のスレーブ ライブラリを作成する必要があります。 3 台のサーバー、つまりマスター サーバー (192.168.1.100) と 2 台のスレーブ サーバー (192.168.1.101 および 192.168.1.102) があるとします。

メイン サーバーで次の設定を行います:

  1. my.cnf 設定ファイルに次の内容を追加します:

    server-id=1
    log-bin=mysql-bin
  2. # # MySQL でレプリケーション用のユーザーを作成し、レプリケーション権限を付与します:

    GRANT REPLICATION SLAVE ON *.* TO 'replication'@'192.168.1.%' IDENTIFIED BY 'password';
    FLUSH PRIVILEGES;

  3. 次のコマンドを実行してバイナリ ログの記録を開始します:

    FLUSH TABLES WITH READ LOCK;
    SHOW MASTER STATUS;

    表示されたファイルと位置を記録します。これは後のステップで使用されます。

スレーブ サーバーで次を構成します:

  1. my.cnf 構成ファイルに次の内容を追加します:

    server-id=2

  2. 次のコマンドを実行して、スレーブ サーバーをマスター サーバーに接続します。

    CHANGE MASTER TO 
     MASTER_HOST='192.168.1.100',
     MASTER_USER='replication',
     MASTER_PASSWORD='password',
     MASTER_LOG_FILE='[MASTER_LOG_FILE]',
     MASTER_LOG_POS=[MASTER_LOG_POS];
    START SLAVE;

    [MASTER_LOG_FILE] と [MASTER_LOG_POS] を、マスター サーバーに記録されているファイルと位置に置き換えます。

上記の手順を繰り返して、すべてのスレーブ サーバーを構成します。

    MySQL 読み取り/書き込み分離クラスターの構築
マスター/スレーブ レプリケーション クラスターを構築した後、読み取り/書き込み分離を使用してデータベースのパフォーマンスをさらに向上させることができます。読み取り/書き込み分割では、読み取り操作がスレーブ サーバーに分散され、書き込み操作がマスター サーバーに送信されます。これにより、メイン サーバーの負荷が軽減され、読み取り操作の同時実行パフォーマンスが向上します。

まず、メイン サーバーで以下を構成します。

  1. my.cnf 構成ファイルに次の内容を追加します。

    log-slave-updates

  2. 次のコマンドを実行してマスター サーバーを再起動します。

    SET @@GLOBAL.read_only=ON;

スレーブ サーバーで次の設定を行います。 cnf 設定ファイル 次の内容を追加します。

read-only

  1. 次のコマンドを実行してスレーブ サーバーを再起動します。

    SET @@GLOBAL.read_only=OFF;

  2. 次に、設定する必要があります。アプリケーション分離での読み取りと書き込み。 PHP を使用してアプリケーションを開発すると仮定し、簡略化されたサンプル コードを以下に示します。

    <?php
    $readConn = new mysqli('192.168.1.101', 'username', 'password', 'database');
    $writeConn = new mysqli('192.168.1.100', 'username', 'password', 'database');
    
    // 读操作
    $result = $readConn->query("SELECT * FROM table");
    
    // 写操作
    $writeConn->query("INSERT INTO table (column1, column2) VALUES ('value1', 'value2')");
    ?>

  3. MySQL シャーディング クラスターの構築

MySQL シャーディングは、データの分散ストレージです。データベースのスケーラビリティを向上させるために複数のサーバーを使用します。シャードクラスターはデータを複数のシャードに分割し、各シャードにデータの一部を保存します。シャーディングを行う前に、まずアプリケーションでシャーディング ルールを定義する必要があります。
  1. 以下は、ユーザー ID に基づいてシャード ストレージのロジックを実装するサンプル コードです。
  2. <?php
    $user_id = 1;
    $shard_id = $user_id % 3;
    
    $conn = new mysqli('192.168.1.10' . $shard_id, 'username', 'password', 'database');
    
    $result = $conn->query("SELECT * FROM table WHERE user_id = " . $user_id);
    ?>
実際にシャード クラスターを構築する場合は、複数のデータベース サーバーを作成し、対応する構成を行う必要があります。各データベース サーバーはデータの一部を保存し、アプリケーションのシャーディング ルールを通じてデータの読み取りと書き込みを行います。

概要

MySQL マスター/スレーブ レプリケーション クラスター、読み取り/書き込み分離クラスター、およびシャード クラスターを構築することで、可用性の高い MySQL クラスターを実現し、パフォーマンスとスケーラビリティを向上させることができます。データベース。実際のアプリケーションでは、データのバックアップとリカバリ、フェイルオーバーなどの問題も考慮する必要があり、対応する構成と最適化を実行する必要があります。上記のコード例と構成が、読者が分散データベース アーキテクチャを理解し、適用するのに役立つことを願っています。

以上が分散データベース アーキテクチャを使用して高可用性 MySQL クラスターを構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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