ホームページ >データベース >mysql チュートリアル >データの冗長化と拡張の実現:クラスタ環境におけるMySQLマスタースレーブレプリケーション技術の適用事例
データの冗長化と拡張の実現:クラスタ環境におけるMySQLマスター・スレーブ・レプリケーション技術の適用事例
はじめに:
インターネットの発展に伴い、データ量は増加傾向にあります。データ量の増加 ユーザー数の継続的な増加に伴い、従来のスタンドアロン データベースでは、高い同時実行性と高可用性のニーズを満たすことができなくなりました。この文脈において、分散データベースは一般的なソリューションの 1 つとなっています。 MySQL のマスター/スレーブ レプリケーション テクノロジは、最も一般的に使用されているリレーショナル データベースの 1 つとして、分散データベースでも広く注目されています。この記事では、クラスタ環境でデータの冗長化と拡張を実現するための MySQL マスター/スレーブ レプリケーション テクノロジの適用事例と、対応するコード例を紹介します。
1. MySQL マスター/スレーブ レプリケーション テクノロジの概要
MySQL マスター/スレーブ レプリケーション テクノロジは、バイナリ ログに基づくデータ レプリケーション方法です。マスター データベースの変更操作をリアルタイムでバイナリ ログに記録し、バイナリ ログをスレーブ データベースに送信して再生することで、マスター データベースとスレーブ データベース間のデータの一貫性を確保します。クラスター環境では、複数のスレーブ ライブラリを異なるサーバーにデプロイすることで、データの冗長性と拡張性を実現できます。
2. クラスター環境の展開
[mysqld]
server-id=1
log_bin=mysql-bin
binlog_format=row
[mysqld]
server-id=2
relay_log=mysql-relay-bin
read_only=1
3. クラスタ環境の構築
CREATE USER 'replication'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON . TO 'replication'@'%';
CHANGE MASTER TO
MASTER_HOST ='192.168.1.100',
MASTER_USER='レプリケーション',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=123456;
START SLAVE;
次に、次のコマンドを使用してレプリケーションのステータスを確認します:
SHOW SLAVE STATUSG;
表示内容の「Slave_IO_Running」と「Slave_SQL_Running」が両方とも「Yes」であれば、レプリケーションは正常に実行されています。
4. アプリケーション ケース: データの冗長性と拡張
クラスター環境では、読み取りおよび書き込みリクエストを複数のスレーブ ライブラリに分散して、データの冗長性と拡張を実現できます。以下は、データの冗長性と拡張の効果を示す簡単なアプリケーション ケースです。
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;
INSERT INTO user
(name
, age
) VALUES ('Alice', 25), ('Bob', 30) ), ('Chris', 35);
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 サイトの他の関連記事を参照してください。