MySQL의 마스터-슬레이브 복제를 사용하여 읽기-쓰기 분리 아키텍처를 구현하는 방법
기존 웹 애플리케이션에서 읽기 및 쓰기 작업은 일반적으로 동일한 데이터베이스 서버에 연결됩니다. 애플리케이션이 개발되고 액세스 볼륨이 증가함에 따라 이 아키텍처는 쉽게 데이터베이스 성능 병목 현상을 일으킬 수 있습니다. 이 문제를 해결하기 위해 MySQL의 마스터-슬레이브 복제를 사용하여 읽기-쓰기 분리 아키텍처를 구현할 수 있습니다. 이 기사에서는 MySQL의 마스터-슬레이브 복제를 사용하여 읽기-쓰기 분리를 달성하는 방법을 소개하고 해당 코드 예제를 제공합니다.
(1) 메인 데이터베이스의 구성 파일 my.cnf를 열고 마지막에 다음 구성을 추가합니다.
# 设置为主数据库 server-id=1 log-bin=mysql-bin
(2) 메인 데이터베이스를 다시 시작합니다. 데이터베이스:
$ sudo service mysql restart
(1) 슬레이브 데이터베이스의 구성 파일 my.cnf를 열고 마지막에 다음 구성을 추가합니다.
# 设置为从数据库 server-id=2 relay-log=mysql-relay-bin
(2 ) 슬레이브 데이터베이스 재시작:
$ sudo service mysql restart
복제 사용자 생성
메인 데이터베이스에 복제할 사용자를 생성하고 해당 권한을 부여합니다. 다음 명령을 실행합니다:
mysql> CREATE USER 'replication'@'%' IDENTIFIED BY 'password'; mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%'; mysql> FLUSH PRIVILEGES;
마스터-슬레이브 복제 시작
슬레이브 데이터베이스에서 다음 명령을 실행하여 마스터-슬레이브 복제를 시작합니다.
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;
마스터-슬레이브 복제 확인
슬레이브 데이터베이스에서 다음 명령을 실행합니다. 마스터-슬레이브 복제 상태를 보려면:
mysql> SHOW SLAVE STATUS G
다음 두 매개 변수의 값이 "YES"인지 확인하세요.
Slave_IO_Running: Yes Slave_SQL_Running: Yes
오류가 발생하면 복제 구성과 데이터베이스 연결이 올바르게 설정되었는지 확인해야 합니다.
다음은 읽기-쓰기 분리 작업을 완료하기 위해 마스터-슬레이브 데이터베이스를 연결하는 방법을 보여주기 위해 Java 언어를 사용하는 샘플 코드입니다.
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(); } } }
위는 MySQL의 마스터-슬레이브 복제를 사용하기 위한 단계 및 코드 예제입니다. 읽기-쓰기 분리 아키텍처를 구현합니다. 이 아키텍처를 통해 읽기 작업을 슬레이브 데이터베이스에 할당하여 시스템의 성능과 안정성을 효과적으로 향상시킬 수 있습니다. 도움이 되었기를 바랍니다!
위 내용은 MySQL의 마스터-슬레이브 복제를 사용하여 읽기-쓰기 분리 아키텍처를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!