Comment utiliser la réplication maître-esclave de MySQL pour implémenter une architecture de séparation lecture-écriture
Dans les applications Web traditionnelles, les opérations de lecture et d'écriture sont généralement connectées au même serveur de base de données. À mesure que les applications se développent et que les volumes d’accès augmentent, cette architecture peut facilement entraîner des goulots d’étranglement dans les performances des bases de données. Afin de résoudre ce problème, la réplication maître-esclave de MySQL peut être utilisée pour implémenter une architecture de séparation lecture-écriture. Cet article explique comment utiliser la réplication maître-esclave de MySQL pour obtenir une séparation lecture-écriture et fournit des exemples de code correspondants.
(1) Ouvrez le fichier de configuration my.cnf de la base de données principale et ajoutez la configuration suivante à la fin :
# 设置为主数据库 server-id=1 log-bin=mysql-bin
(2) Redémarrez la base de données principale base de données esclave :
$ sudo service mysql restart
(1) Ouvrez le fichier de configuration my.cnf de la base de données esclave et ajoutez la configuration suivante à la fin :
# 设置为从数据库 server-id=2 relay-log=mysql-relay-bin
(2 ) Redémarrez la base de données esclave :
$ sudo service mysql restart
Créer un utilisateur de réplication
Créez un utilisateur pour la réplication sur la base de données principale et accordez les autorisations correspondantes. Exécutez la commande suivante :
mysql> CREATE USER 'replication'@'%' IDENTIFIED BY 'password'; mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%'; mysql> FLUSH PRIVILEGES;
Démarrer la réplication maître-esclave
Exécutez la commande suivante sur la base de données esclave pour démarrer la réplication maître-esclave :
mysql> CHANGE MASTER TO MASTER_HOST='主数据库IP', MASTER_USER='replication', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=0; mysql> START SLAVE;
Vérifier la réplication maître-esclave
Exécutez la commande suivante sur la base de données esclave pour afficher l'état de la réplication maître-esclave :
mysql> SHOW SLAVE STATUS G
Assurez-vous que les deux paramètres suivants ont la valeur "YES" :
Slave_IO_Running: Yes Slave_SQL_Running: Yes
Si une erreur se produit, vous devez vérifier que la configuration de la réplication et la connexion à la base de données sont correctement configurées.
Ce qui suit est un exemple de code utilisant le langage Java pour montrer comment connecter la base de données maître-esclave pour terminer l'opération de séparation en lecture-écriture :
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class ReadWriteSeparationExample { public static void main(String[] args) { // 读操作连接从数据库 Connection readConn = null; String readUrl = "jdbc:mysql://从数据库IP:端口/数据库名"; String readUser = "用户名"; String readPassword = "密码"; try { readConn = DriverManager.getConnection(readUrl, readUser, readPassword); Statement readStmt = readConn.createStatement(); ResultSet readResult = readStmt.executeQuery("SELECT * FROM 表名"); while (readResult.next()) { // 处理查询结果 } readResult.close(); readStmt.close(); readConn.close(); } catch (SQLException e) { e.printStackTrace(); } // 写操作连接主数据库 Connection writeConn = null; String writeUrl = "jdbc:mysql://主数据库IP:端口/数据库名"; String writeUser = "用户名"; String writePassword = "密码"; try { writeConn = DriverManager.getConnection(writeUrl, writeUser, writePassword); Statement writeStmt = writeConn.createStatement(); writeStmt.execute("INSERT INTO 表名 VALUES(1, '数据')"); writeStmt.close(); writeConn.close(); } catch (SQLException e) { e.printStackTrace(); } } }
Ce qui précède sont les étapes et les exemples de code pour utiliser la réplication maître-esclave de MySQL pour implémenter l'architecture de séparation lecture-écriture. Grâce à cette architecture, les opérations de lecture peuvent être allouées à la base de données esclave, améliorant ainsi efficacement les performances et la stabilité du système. J'espère que cela aide!
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!