MySQL의 마스터-슬레이브 복제를 사용하여 읽기-쓰기 분리 아키텍처를 구현하는 방법

WBOY
풀어 주다: 2023-08-02 09:21:29
원래의
847명이 탐색했습니다.

MySQL의 마스터-슬레이브 복제를 사용하여 읽기-쓰기 분리 아키텍처를 구현하는 방법

기존 웹 애플리케이션에서 읽기 및 쓰기 작업은 일반적으로 동일한 데이터베이스 서버에 연결됩니다. 애플리케이션이 개발되고 액세스 볼륨이 증가함에 따라 이 아키텍처는 쉽게 데이터베이스 성능 병목 현상을 일으킬 수 있습니다. 이 문제를 해결하기 위해 MySQL의 마스터-슬레이브 복제를 사용하여 읽기-쓰기 분리 아키텍처를 구현할 수 있습니다. 이 기사에서는 MySQL의 마스터-슬레이브 복제를 사용하여 읽기-쓰기 분리를 달성하는 방법을 소개하고 해당 코드 예제를 제공합니다.

  1. 환경 준비
    먼저 서버에 MySQL이 설치되어 있는지 확인하고, 마스터 데이터베이스와 슬레이브 데이터베이스가 정상적으로 통신할 수 있는지 확인하세요. MySQL이 아직 설치되지 않은 경우 공식 설명서에 따라 설치 및 설정하세요.
  2. 메인 데이터베이스 구성
    메인 데이터베이스에서 다음을 구성합니다:

(1) 메인 데이터베이스의 구성 파일 my.cnf를 열고 마지막에 다음 구성을 추가합니다.

# 设置为主数据库 server-id=1 log-bin=mysql-bin
로그인 후 복사

(2) 메인 데이터베이스를 다시 시작합니다. 데이터베이스:

$ sudo service mysql restart
로그인 후 복사
로그인 후 복사
  1. 슬레이브 데이터베이스 구성
    슬레이브 데이터베이스에서 다음을 구성합니다.

(1) 슬레이브 데이터베이스의 구성 파일 my.cnf를 열고 마지막에 다음 구성을 추가합니다.

# 设置为从数据库 server-id=2 relay-log=mysql-relay-bin
로그인 후 복사

(2 ) 슬레이브 데이터베이스 재시작:

$ sudo service mysql restart
로그인 후 복사
로그인 후 복사
  1. 복제 사용자 생성
    메인 데이터베이스에 복제할 사용자를 생성하고 해당 권한을 부여합니다. 다음 명령을 실행합니다:

    mysql> CREATE USER 'replication'@'%' IDENTIFIED BY 'password'; mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%'; mysql> FLUSH PRIVILEGES;
    로그인 후 복사
  2. 마스터-슬레이브 복제 시작
    슬레이브 데이터베이스에서 다음 명령을 실행하여 마스터-슬레이브 복제를 시작합니다.

    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;
    로그인 후 복사
  3. 마스터-슬레이브 복제 확인
    슬레이브 데이터베이스에서 다음 명령을 실행합니다. 마스터-슬레이브 복제 상태를 보려면:

    mysql> SHOW SLAVE STATUS G
    로그인 후 복사

    다음 두 매개 변수의 값이 "YES"인지 확인하세요.

    Slave_IO_Running: Yes Slave_SQL_Running: Yes
    로그인 후 복사

    오류가 발생하면 복제 구성과 데이터베이스 연결이 올바르게 설정되었는지 확인해야 합니다.

  4. 읽기-쓰기 분리 달성
    마스터-슬레이브 복제가 성공적으로 구성되면 읽기-쓰기 분리가 가능합니다. 애플리케이션에서는 읽기 작업을 위해 슬레이브 데이터베이스가 연결되고 쓰기 작업을 위해 마스터 데이터베이스가 연결됩니다. 이를 통해 데이터베이스 리소스를 효과적으로 활용하고 시스템 성능과 안정성을 향상시킬 수 있습니다.

다음은 읽기-쓰기 분리 작업을 완료하기 위해 마스터-슬레이브 데이터베이스를 연결하는 방법을 보여주기 위해 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!