데이터베이스 마스터-슬레이브 복제를 구현하는 PHP 방법

PHPz
풀어 주다: 2023-05-17 20:02:01
원래의
1249명이 탐색했습니다.

지속적인 비즈니스 발전과 비즈니스 규모의 증가로 단일 데이터베이스의 성능이 수요를 충족하기 어려운 경우가 많기 때문에 데이터베이스 클러스터링이 매우 중요한 방향이 되었습니다. 데이터베이스 클러스터에서 마스터-슬레이브 복제는 매우 일반적이고 중요한 기술입니다. 마스터-슬레이브 복제를 통해 마스터 데이터베이스의 데이터를 슬레이브 데이터베이스에 실시간으로 동기화하여 데이터의 보안과 신뢰성을 보장할 수 있습니다. 또한 데이터베이스의 로드 용량과 성능이 향상됩니다.

이 기사에서는 PHP를 사용하여 데이터베이스 마스터-슬레이브 복제를 구현하는 방법을 소개합니다. 데이터베이스 마스터-슬레이브 복제를 구현하면 높은 동시성을 처리할 때 데이터의 일관성과 가용성을 더 잘 보장할 수 있습니다.

1. 데이터베이스 마스터-슬레이브 복제란 무엇인가요?

데이터베이스 마스터-슬레이브 복제는 마스터 데이터베이스의 데이터를 슬레이브 데이터베이스에 동기화하여 고가용성 및 로드 밸런싱을 달성하는 데이터베이스 클러스터 기술입니다. 마스터-슬레이브 복제에서 마스터 데이터베이스는 데이터 쓰기 요청을 수신하고 쿼리 요청을 처리하는 데이터베이스이며, 슬레이브 데이터베이스는 마스터 데이터베이스를 기반으로 동기화하여 마스터 데이터베이스의 실시간 백업을 수행합니다.

마스터 데이터베이스와 슬레이브 데이터베이스 간의 데이터 동기화는 일반적으로 비동기식 또는 반동기식 방법을 사용합니다. 마스터 데이터베이스는 자체 데이터 변경 이벤트를 로컬 바이너리 로그에 기록하고 슬레이브 데이터베이스는 마스터 데이터베이스에서 바이너리 로그를 가져옵니다. 동기화를 위해 로컬 데이터베이스에 구문 분석하고 적용합니다. 이를 통해 데이터 일관성과 가용성을 동시에 보장할 수 있으며, 기본 데이터베이스의 성능에 큰 영향을 미치지 않습니다.

2. PHP에서 데이터베이스 마스터-슬레이브 복제를 구현하는 단계

  1. 마스터 데이터베이스 구성

먼저 마스터 데이터베이스의 데이터 변경 이벤트를 기록하려면 마스터 데이터베이스에서 바이너리 로그를 활성화해야 합니다. MySQL 구성 파일에 다음 구성을 추가하여 바이너리 로그 기능을 활성화할 수 있습니다:

log-bin=mysql-bin
server-id=1

log-bin 매개변수는 지정된 바이너리 로그 파일의 이름이며 사용자 정의할 수 있습니다. server-id 매개변수는 클러스터에 있는 마스터 데이터베이스의 고유 식별자를 지정합니다. 서로 다른 마스터 노드와 슬레이브 노드는 서로 다른 ID를 가져야 합니다.

  1. 슬레이브 데이터베이스 구성

슬레이브 데이터베이스에서는 마스터-슬레이브 복제 관련 매개변수를 구성하고 슬레이브 노드의 고유 식별자와 마스터 노드의 IP 주소 및 포트 번호를 설정해야 합니다. MySQL 구성 파일에 다음 구성을 추가할 수 있습니다:

server-id=2
relay-log=mysql-relay-bin
relay-log-index=mysql-relay-bin.index
replicate-do-db= mydb #동기화해야 할 데이터베이스 이름
master-host=192.168.1.1 #마스터 노드의 IP 주소
master-user=repl #슬레이브 노드를 마스터 노드에 연결하는 사용자
master-password =repl123 # 마스터 노드에 연결하기 위한 슬레이브 노드의 비밀번호
master -port=3306 # 마스터 노드의 포트 번호

여기서 server-id는 클러스터에 지정된 슬레이브 노드의 고유 식별자입니다. Relay-log-index는 지정된 슬레이브 노드의 릴레이 로그 파일 이름과 릴레이 로그 인덱스입니다. File name은 슬레이브 노드에 동기화해야 하는 데이터베이스의 이름을 지정합니다. 동기화가 필요한 경우, 이 매개변수는 반복적으로 설정될 수 있습니다. 마스터-* 시리즈 매개변수는 마스터 노드에 연결되는 슬레이브 노드와 관련된 정보를 구성합니다.

  1. PHP 코드 구현

데이터베이스 마스터-슬레이브 복제 프로세스를 구현하는 PHP 코드를 구현하려면 먼저 mysql_connect 함수를 통해 동작해야 하는 데이터베이스에 연결한 후, 해당 데이터베이스의 SQL 문을 지정해야 합니다. 쿼리 및 슬레이브 노드에서 데이터를 읽어야 하는지 여부를 확인합니다. MYSQL_CLIENT_MASTER, MYSQL_CLIENT_SLAVE 파라미터를 설정하여 현재 연결된 데이터베이스가 마스터 노드인지 슬레이브 노드인지 지정할 수 있습니다. 코드 예시는 다음과 같습니다.

//마스터 노드에 연결
$conn = mysql_connect("192.168.1.1", "root", "password", null, MYSQL_CLIENT_MASTER);

//쓰기 작업 수행
mysql_query ("테이블1 값에 삽입 ​​('test', '123')");

//슬레이브 노드 연결
$conn = mysql_connect("192.168.1.2", "root", "password", null, MYSQL_CLIENT_SLAVE);

// 읽기 작업 실행
$res = mysql_query("select * from table1");

위 코드를 통해 마스터 노드와 슬레이브 노드의 연결 전환 및 바인딩 작업을 별도로 수행할 수 있습니다. , 데이터베이스를 효과적으로 구현할 수 있습니다. 마스터-슬레이브 복제 기능.

3. 요약

데이터베이스 마스터-슬레이브 복제는 고가용성 및 로드 밸런싱을 달성하는 데 중요한 데이터베이스 클러스터 기술입니다. PHP를 통해 마스터-슬레이브 복제를 구현하면 높은 동시성을 처리할 때 데이터의 일관성과 가용성을 더 잘 보장할 수 있습니다. 위의 단계와 코드 예제를 통해 데이터베이스 마스터-슬레이브 복제를 구현하는 대다수 PHP 개발자에게 도움이 되기를 바랍니다.

위 내용은 데이터베이스 마스터-슬레이브 복제를 구현하는 PHP 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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