>  기사  >  백엔드 개발  >  PHP에서 MongoDB 마스터-슬레이브 복제의 자동 전환을 구현하는 방법

PHP에서 MongoDB 마스터-슬레이브 복제의 자동 전환을 구현하는 방법

WBOY
WBOY원래의
2023-05-15 23:31:341400검색

인터넷 애플리케이션의 발전에 따라 데이터의 양이 증가하고 높은 데이터 가용성에 대한 요구 사항도 점점 더 높아지고 있습니다. MongoDB의 마스터-슬레이브 복제 기능은 이 문제를 매우 잘 해결할 수 있습니다. 마스터-슬레이브 복제를 통해 데이터를 여러 노드에 백업할 수 있으며, 마스터 노드에 장애가 발생하면 자동으로 슬레이브 노드로 전환되어 데이터 가용성과 내결함성을 보장합니다. . 능력.

이 글에서는 PHP를 통해 MongoDB 마스터-슬레이브 복제 자동 전환을 구현하는 방법을 소개하겠습니다.

MongoDB 마스터-슬레이브 복제 원칙

MongoDB 마스터-슬레이브 복제는 마스터 노드의 데이터를 여러 슬레이브 노드에 동기화하여 데이터 백업을 달성하는 데이터 백업 방법입니다. 마스터 노드는 쓰기 작업을 수신 및 수행하고 이러한 작업을 oplog(작업 로그)에 기록한 다음 oplog의 작업을 모든 슬레이브 노드에 동기화합니다. 결과적으로 마스터 노드에 장애가 발생하면 자동으로 슬레이브 노드로 전환되어 데이터 가용성을 보장할 수 있습니다.

MongoDB 마스터-슬레이브 복제에서는 기본 노드를 마스터 노드로 설정하고 나머지 노드는 보조 노드를 슬레이브 노드로 설정할 수 있습니다. 마스터 노드는 쓰기 작업을 수신 및 실행하고 이러한 작업을 슬레이브 노드에 동기화하는 역할을 담당합니다. 마스터 노드가 다운되면 MongoDB는 자동으로 새 마스터 노드를 선택하고 새 쓰기 작업을 모든 슬레이브 노드에 동기화합니다.

MongoDB 마스터-슬레이브 복제 자동 전환을 구현하는 PHP 방법

MongoDB 마스터-슬레이브 복제 자동 전환을 구현하려면 MongoDB에서 제공하는 PHP 확장 라이브러리와 일부 관련 PHP 함수를 사용해야 합니다.

  1. MongoDB 마스터-슬레이브 노드 연결

PHP에서 MongoDB 마스터-슬레이브 노드를 연결하는 코드는 다음과 같습니다.

$mongo = new MongoClient("mongodb://主节点IP:27017,从节点IP:27017");
$db = $mongo->selectDB("db_name");

여기서는 MongoClient 클래스를 사용하여 MongoDB 마스터-슬레이브 노드를 연결합니다. 마스터 노드의 IP 주소와 포트를 사용할 수도 있고, 슬레이브 노드의 IP 주소와 포트를 사용할 수도 있습니다. 연결에 성공한 후 selectDB() 함수를 통해 사용할 데이터베이스를 선택합니다.

  1. 현재 노드가 마스터 노드인지 확인

MongoDB의 isMaster() 함수를 사용하여 현재 노드가 마스터 노드인지 확인할 수 있습니다. isMaster() 함수는 노드 유형, 마스터 노드인지 여부 등과 같은 현재 노드에 대한 일부 정보가 포함된 배열을 반환합니다. 현재 노드가 마스터 노드인 경우 배열의 ismaster 키 값은 true입니다.

$mongo = new MongoClient("mongodb://主节点IP:27017,从节点IP:27017");
$db = $mongo->selectDB("db_name");
$isMaster = $db->command(array("isMaster" => 1));
if ($isMaster["ismaster"] == true) {
    echo "当前为主节点";
} else {
    echo "当前为从节点";
}

여기서는 command() 함수를 통해 MongoDB 명령을 실행합니다. 여기서 isMaster는 MongoDB에 내장된 명령입니다. 반환된 isMaster 배열을 기반으로 현재 노드가 마스터 노드인지 확인합니다.

  1. 마스터 노드로 전환

현재 노드가 슬레이브 노드라면 마스터 노드로 만들어야 합니다. rs.initiate() 명령을 사용하여 현재 노드를 기본 노드로 만들 수 있습니다.

$mongo = new MongoClient("mongodb://主节点IP:27017,从节点IP:27017");
$db = $mongo->selectDB("db_name");
$isMaster = $db->command(array("isMaster" => 1));
if ($isMaster["ismaster"] == true) {
    echo "当前为主节点";
} else {
    $db->command(array("replSetInitiate" => array("_id" => "rs0")));
    echo "已将从节点切换为主节点";
}

여기에서는 replSetInitiate() 함수를 통해 MongoDB의 rs.initiate() 명령을 실행하여 현재 노드를 마스터 노드로 전환합니다. rs0은 복제본 세트의 이름이며 실제 상황에 따라 수정될 수 있습니다.

  1. 슬레이브 노드로 전환

현재 노드가 마스터 노드이고 현재 노드가 다운되거나 장애가 발생한 경우 슬레이브 노드를 마스터 노드로 만들어야 합니다. rs.stepDown() 명령을 사용하여 현재 노드를 슬레이브 노드로 전환할 수 있습니다.

$mongo = new MongoClient("mongodb://主节点IP:27017,从节点IP:27017");
$db = $mongo->selectDB("db_name");
$isMaster = $db->command(array("isMaster" => 1));
if ($isMaster["ismaster"] == true) {
    $db->command(array("replSetStepDown" => 1));
    echo "已将主节点切换为从节点";
} else {
    echo "已是从节点";
}

여기에서는 replSetStepDown() 함수를 통해 MongoDB의 rs.stepDown() 명령을 실행하여 현재 노드를 슬레이브 노드로 전환합니다.

요약

이 글에서는 PHP를 통해 MongoDB 마스터-슬레이브 복제 자동 전환을 구현하는 방법을 소개합니다. 크게 MongoDB 마스터-슬레이브 노드 연결, 현재 노드가 마스터 노드인지 판단, 슬레이브 노드를 마스터 노드로 전환으로 나누어집니다. 마스터 노드 및 마스터 노드 전환 슬레이브 노드의 4단계. 위의 방법을 통해 MongoDB 마스터-슬레이브 복제 중에 데이터의 가용성과 내결함성을 보장하여 더욱 강력하고 효율적으로 만들 수 있습니다.

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.