Réalisation de la redondance et de l'expansion des données : cas d'application de la technologie de réplication maître-esclave MySQL dans un environnement de cluster
Introduction :
Avec le développement d'Internet, la quantité croissante de données et le nombre croissant d'utilisateurs, les standards traditionnels Les bases de données à elles seules ne sont plus en mesure de répondre aux besoins de haute concurrence et de haute disponibilité. Dans ce contexte, les bases de données distribuées sont devenues l’une des solutions les plus appréciées. En tant que l'une des bases de données relationnelles les plus couramment utilisées, la technologie de réplication maître-esclave de MySQL a également reçu une grande attention dans les bases de données distribuées. Cet article présentera les cas d'application de la technologie de réplication maître-esclave MySQL pour obtenir la redondance et l'expansion des données dans un environnement de cluster, et fournira des exemples de code correspondants.
1. Introduction à la technologie de réplication maître-esclave MySQL
La technologie de réplication maître-esclave MySQL est une méthode de réplication de données basée sur des journaux binaires. Il enregistre les opérations de modification sur la base de données maître dans le journal binaire en temps réel et transmet le journal binaire à la base de données esclave pour relecture, garantissant ainsi la cohérence des données entre les bases de données maître et esclave. Dans un environnement de cluster, nous pouvons réaliser la redondance et l'expansion des données en déployant plusieurs bibliothèques esclaves sur différents serveurs.
2. Déploiement de l'environnement de cluster
[mysqld]
server-id=1
log_bin=mysql-bin
binlog_format=row
[mysqld]
server-id=2
relay_log=mysql-relay-bin
read_only=1
Construction de l'environnement de cluster
CREATE USER 'replication'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON . TO 'replication' @'%';
CHANGE MASTER TO
MASTER_HOST='192.168.1.100',
MASTER_USER='replication',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=123456;
START SLAVE ;
Ensuite, vérifiez l'état de la réplication via la commande suivante :
SHOW SLAVE STATUSG;
Si "Slave_IO_Running" et "Slave_SQL_Running" dans le contenu affiché sont tous deux "Oui", cela signifie que la réplication s'exécute normalement.
4. Cas d'application : redondance et expansion des données
Dans un environnement de cluster, nous pouvons distribuer des requêtes de lecture et d'écriture à plusieurs bibliothèques esclaves pour obtenir la redondance et l'expansion des données. Ce qui suit est un cas d’application simple pour démontrer l’effet de la redondance et de l’expansion des données.
CREATE TABLE user
(user
(
id
INT(11) NOT NULL AUTO_INCREMENT,
name
VARCHAR(20) NOT NULL,
age
INT(3) NOT NULL,
PRIMARY KEY (id
)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
INSERT INTO user
(name
, age
id
INT(11) NOT NULL AUTO_INCREMENT,
name
VARCHAR(20) NOT NULL,age
INT(3) NOT NULL,id
)Insérer les données de test
Insérer quelques tests sur la bibliothèque principale données.
utilisateur
(nom
, âge
) VALEURS ('Alice', 25), ('Bob', 30), ( 'Chris', 35 ans);
Requête de données
Dans l'application, nous pouvons envoyer des requêtes de lecture à n'importe quelle bibliothèque esclave. Supposons que notre serveur d'applications dispose de deux bibliothèques esclaves dont les adresses IP sont 192.168.1.101 et 192.168.1.102. Nous pouvons envoyer des requêtes de lecture via l'exemple de code suivant :import java.sql.Connection ;
import java.sql.
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(); } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!