Replication
교승
Last updated
교승
Last updated
레플리케이션을 알아보기 전에 가용성이라는 용어에 대해서 알고 넘어가야 한다.
가용성(Availability)이란 컴퓨터나 서버, 네트워크, 프로그램 등이 정상적으로 사용 가능한 정도를 말한다. MongoDB를 이용하고자 하는 유저의 경우 MongoDB를 통해 데이터베이스를 이용하려는 목적으로 MongoDB에 접속한다. 하지만 항상 접속이 안된다면, 이는 가용성이 떨어진다고 할 수 있다. 따라서 서비스하는 모든 서버나 데이터베이스 등은 대부분 항상 이용 가능한 상태를 추구하고, 이를 고가용성(High-Availability) 이라고 한다.
MongoDB에서 레플리케이션(Replication)이란 고가용성(High-Availability)을 위해서 데이터베이스를 복제하는 것을 뜻한다. 여기서 고가용성은 위에서 언급한 바와 같이 데이터베이스에 항상 이용 가능한 상태를 추구하는 것이고, 데이터베이스를 복제한다는 것은 데이터베이스 내의 내용물을 다른 MongoDB 인스턴스에 복제한다는 것이다. 여기서 MongoDB 인스턴스는 MongoDB 프로그램 하나라고 생각하면 되며, 일반적으로 컴퓨터 한대마다 하나씩 켜져있다.
고가용성을 위해 데이터베이스를 복제하는 이유에 대해서 알아보자. 예를들어 서버 1대에 MongoDB를 설치하고 운용한다고 가정해 보았을 때, 컴퓨터가 고장나면 우리는 더이상 데이터베이스에 접속할 수 없다. 하지만 3대의 컴퓨터에 MongoDB를 설치하고 이들을 레플리케이션으로 묶었다면, 한대의 컴퓨터가 고장나더라도 나머지 2대의 컴퓨터에서 MongoDB가 동작되고 있기 때문에 우리는 여전히 데이터베이스에 접근할 수 있다.
MongoDB에서 레플리케이션은 각각의 MongoDB 인스턴스를 지정하여 엮을 수 있다.
MongoDB에는 크게 2가지 종류의 레플리케이션 노드가 존재한다. 하나는 프라이머리(Primary) 노드이고, 세컨더리(Secondary) 노드이다. MongoDB에서 일어나는 트랜젝션은 크게 읽기와 쓰기로 나눌 수 있는데, 각각의 노드마다 이를 수행하는 역할이 다르다. 프라이머리 노드의 경우 읽기와 쓰기가 모두 가능하고, 세컨더리 노드의 경우 읽기만 가능하다. 이를 나눈 이유는 ....., 실제로 보내는 데이터는 프라이머리에서 oplog 를 보내고 이를 세컨더리 노드에서 다시 실행하는 방법으로 복제하게 된다.