분산 데이터베이스 아키텍처를 활용한 고가용성 MySQL 클러스터 구축 방법
인터넷의 발달과 함께 데이터베이스의 고가용성과 확장성에 대한 요구가 점점 높아지고 있습니다. 분산 데이터베이스 아키텍처는 이러한 요구 사항을 해결하는 효과적인 방법 중 하나가 되었습니다. 이 기사에서는 분산 데이터베이스 아키텍처를 사용하여 고가용성 MySQL 클러스터를 구축하는 방법을 소개하고 관련 코드 예제를 제공합니다.
MySQL 마스터-슬레이브 복제는 MySQL에서 제공하는 기본 고가용성 솔루션입니다. 마스터-슬레이브 복제를 통해 데이터 백업 및 읽기-쓰기 분리가 가능합니다. 먼저 마스터 라이브러리와 여러 슬레이브 라이브러리를 만들어야 합니다. 3개의 서버, 즉 마스터 서버(192.168.1.100)와 2개의 슬레이브 서버(192.168.1.101 및 192.168.1.102)가 있다고 가정합니다.
기본 서버에서 다음을 구성합니다.
my.cnf 구성 파일에 다음 콘텐츠를 추가합니다.
server-id=1 log-bin=mysql-bin
MySQL에서 복제할 사용자를 생성하고 복제 권한을 부여합니다.
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'192.168.1.%' IDENTIFIED BY 'password'; FLUSH PRIVILEGES;
실행 바이너리 로그 기록을 시작하는 다음 명령:
FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS;
다음 단계에서 사용될 표시된 파일 및 위치를 기록합니다.
다음과 같이 슬레이브 서버를 구성합니다.
my.cnf 구성 파일에 다음 콘텐츠를 추가합니다.
server-id=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]는 마스터 서버에 기록된 파일 및 위치로 대체됩니다.
모든 슬레이브 서버를 구성하려면 위 단계를 반복하세요.
마스터-슬레이브 복제 클러스터를 구축한 후 읽기-쓰기 분리를 사용하여 데이터베이스 성능을 더욱 향상시킬 수 있습니다. 읽기-쓰기 분할은 읽기 작업을 슬레이브 서버에 배포하고 쓰기 작업을 마스터 서버에 보냅니다. 이를 통해 주 서버의 부하를 줄이고 읽기 작업의 동시성 성능을 향상시킬 수 있습니다.
먼저 마스터 서버에서 다음 구성을 수행합니다.
my.cnf 구성 파일에 다음 콘텐츠를 추가합니다.
log-slave-updates
다음 명령을 실행하여 마스터 서버를 다시 시작합니다.
SET @@GLOBAL.read_only=ON;
수행 슬레이브 서버에서 다음과 같이 구성합니다.
my.cnf 구성 파일에 다음 콘텐츠를 추가합니다.
read-only
다음 명령을 실행하여 슬레이브 서버를 다시 시작합니다.
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')"); ?>
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!