분산 데이터베이스 아키텍처를 사용하여 고가용성 MySQL 클러스터를 구축하는 방법

WBOY
풀어 주다: 2023-08-02 16:29:13
원래의
1515명이 탐색했습니다.

분산 데이터베이스 아키텍처를 활용한 고가용성 MySQL 클러스터 구축 방법

인터넷의 발달과 함께 데이터베이스의 고가용성과 확장성에 대한 요구가 점점 높아지고 있습니다. 분산 데이터베이스 아키텍처는 이러한 요구 사항을 해결하는 효과적인 방법 중 하나가 되었습니다. 이 기사에서는 분산 데이터베이스 아키텍처를 사용하여 고가용성 MySQL 클러스터를 구축하는 방법을 소개하고 관련 코드 예제를 제공합니다.

  1. MySQL 마스터-슬레이브 복제 클러스터 구축

MySQL 마스터-슬레이브 복제는 MySQL에서 제공하는 기본 고가용성 솔루션입니다. 마스터-슬레이브 복제를 통해 데이터 백업 및 읽기-쓰기 분리가 가능합니다. 먼저 마스터 라이브러리와 여러 슬레이브 라이브러리를 만들어야 합니다. 3개의 서버, 즉 마스터 서버(192.168.1.100)와 2개의 슬레이브 서버(192.168.1.101 및 192.168.1.102)가 있다고 가정합니다.

기본 서버에서 다음을 구성합니다.

  1. my.cnf 구성 파일에 다음 콘텐츠를 추가합니다.

    server-id=1
    log-bin=mysql-bin
    로그인 후 복사
  2. MySQL에서 복제할 사용자를 생성하고 복제 권한을 부여합니다.

    GRANT REPLICATION SLAVE ON *.* TO 'replication'@'192.168.1.%' IDENTIFIED BY 'password';
    FLUSH PRIVILEGES;
    로그인 후 복사
  3. 실행 바이너리 로그 기록을 시작하는 다음 명령:

    FLUSH TABLES WITH READ LOCK;
    SHOW MASTER STATUS;
    로그인 후 복사

    다음 단계에서 사용될 표시된 파일 및 위치를 기록합니다.

다음과 같이 슬레이브 서버를 구성합니다.

  1. my.cnf 구성 파일에 다음 콘텐츠를 추가합니다.

    server-id=2
    로그인 후 복사
  2. 다음 명령을 실행하여 슬레이브 서버를 마스터 서버에 연결합니다.

    CHANGE MASTER TO 
     MASTER_HOST='192.168.1.100',
     MASTER_USER='replication',
     MASTER_PASSWORD='password',
     MASTER_LOG_FILE='[MASTER_LOG_FILE]',
     MASTER_LOG_POS=[MASTER_LOG_POS];
    START SLAVE;
    로그인 후 복사

    Change [MASTER_LOG_FILE ] 및 [MASTER_LOG_POS]는 마스터 서버에 기록된 파일 및 위치로 대체됩니다.

모든 슬레이브 서버를 구성하려면 위 단계를 반복하세요.

  1. MySQL 읽기-쓰기 분리 클러스터 구축

마스터-슬레이브 복제 클러스터를 구축한 후 읽기-쓰기 분리를 사용하여 데이터베이스 성능을 더욱 향상시킬 수 있습니다. 읽기-쓰기 분할은 읽기 작업을 슬레이브 서버에 배포하고 쓰기 작업을 마스터 서버에 보냅니다. 이를 통해 주 서버의 부하를 줄이고 읽기 작업의 동시성 성능을 향상시킬 수 있습니다.

먼저 마스터 서버에서 다음 구성을 수행합니다.

  1. my.cnf 구성 파일에 다음 콘텐츠를 추가합니다.

    log-slave-updates
    로그인 후 복사
  2. 다음 명령을 실행하여 마스터 서버를 다시 시작합니다.

    SET @@GLOBAL.read_only=ON;
    로그인 후 복사

수행 슬레이브 서버에서 다음과 같이 구성합니다.

  1. my.cnf 구성 파일에 다음 콘텐츠를 추가합니다.

    read-only
    로그인 후 복사
  2. 다음 명령을 실행하여 슬레이브 서버를 다시 시작합니다.

    SET @@GLOBAL.read_only=OFF;
    로그인 후 복사

다음으로 구성해야 합니다. 애플리케이션에서 읽기-쓰기 분리. PHP를 사용하여 애플리케이션을 개발한다고 가정하면 다음은 단순화된 샘플 코드입니다.

<?php
$readConn = new mysqli('192.168.1.101', 'username', 'password', 'database');
$writeConn = new mysqli('192.168.1.100', 'username', 'password', 'database');

// 读操作
$result = $readConn->query("SELECT * FROM table");

// 写操作
$writeConn->query("INSERT INTO table (column1, column2) VALUES ('value1', 'value2')");
?>
로그인 후 복사
  1. MySQL 샤딩 클러스터 구축

MySQL 샤딩은 데이터를 여러 서버에 분산시켜 데이터베이스 확장성의 성능을 향상시키는 방법입니다. 샤딩된 클러스터는 데이터를 여러 개의 샤드로 나누고, 각 샤드는 데이터의 일부를 저장합니다. 샤딩하기 전에 먼저 애플리케이션에서 샤딩 규칙을 정의해야 합니다.

다음은 사용자 ID를 기반으로 샤딩된 저장소의 로직을 구현한 샘플 코드입니다.

<?php
$user_id = 1;
$shard_id = $user_id % 3;

$conn = new mysqli('192.168.1.10' . $shard_id, 'username', 'password', 'database');

$result = $conn->query("SELECT * FROM table WHERE user_id = " . $user_id);
?>
로그인 후 복사

실제로 샤딩된 클러스터를 구축할 때는 여러 개의 데이터베이스 서버를 생성하고 이에 맞게 구성해야 합니다. 각 데이터베이스 서버는 데이터의 일부를 저장하고 애플리케이션의 샤딩 규칙을 통해 데이터를 읽고 씁니다.

요약

MySQL 마스터-슬레이브 복제 클러스터, 읽기-쓰기 분리 클러스터, 샤딩 클러스터를 구축함으로써 가용성이 높은 MySQL 클러스터를 구현하고 데이터베이스의 성능과 확장성을 향상시킬 수 있습니다. 실제 응용에서는 데이터 백업 및 복구, 장애 조치(failover) 등의 문제도 고려해야 하며 이에 따른 구성 및 최적화가 수행되어야 합니다. 위의 코드 예제와 구성이 독자들이 분산 데이터베이스 아키텍처를 이해하고 적용하는 데 도움이 되기를 바랍니다.

위 내용은 분산 데이터베이스 아키텍처를 사용하여 고가용성 MySQL 클러스터를 구축하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿