分散データベース アーキテクチャを使用して高可用性 MySQL クラスターを構築する方法
インターネットの発展に伴い、データベースの高可用性とスケーラビリティに対する要求がますます高まっています。分散データベース アーキテクチャは、これらのニーズを解決する効果的な方法の 1 つとなっています。この記事では、分散データベース アーキテクチャを使用して高可用性 MySQL クラスターを構築する方法を紹介し、関連するコード例を示します。
MySQL マスター/スレーブ レプリケーションは、MySQL が提供する基本的な高可用性ソリューションです。マスター/スレーブ レプリケーションを通じて、データのバックアップと読み取り/書き込みの分離を実現できます。まず、マスター ライブラリと複数のスレーブ ライブラリを作成する必要があります。 3 台のサーバー、つまりマスター サーバー (192.168.1.100) と 2 台のスレーブ サーバー (192.168.1.101 および 192.168.1.102) があるとします。
メイン サーバーで次の設定を行います:
my.cnf 設定ファイルに次の内容を追加します:
server-id=1 log-bin=mysql-bin
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'192.168.1.%' IDENTIFIED BY 'password'; FLUSH PRIVILEGES;
FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS;表示されたファイルと位置を記録します。これは後のステップで使用されます。
server-id=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] を、マスター サーバーに記録されているファイルと位置に置き換えます。
log-slave-updates
SET @@GLOBAL.read_only=ON;
read-only
SET @@GLOBAL.read_only=OFF;
<?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')"); ?>
<?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 クラスターを構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。