안녕하세요.
윈도우 환경에서 데이터베이스 이중화 또는 복제 또는 미러링 등을 하고 싶습니다.
A현장, B현장이 각각 데이타베이스가 있고 C현장에 두 현장의 데이터베이스를 동일하게 보관하고 있으면 하고요
A현장에 문제가 발생하면 C현장으로 접속을 하는 구조를 하고 싶거든요.
방법론적으로 부탁드립니다.
이중화 또는 복제 또는 미러링 이라는 부분은
크게 OS와, DB로 나뉩니다. 이 둘을 따로 생각해야 할 것 같네요.
일단 OS 입장에서 A 호스트에 장애가 있으면 B 호스트가 정확하게 A 호스트와 같은 역할을 하게 만들겠다는 것이라면, 먼저 OS 클러스트링 부터 구축하셔야 합니다.
이 부분은 PostgreSQL에서 지원하지 않습니다.
PostgreSQL은 스트리밍 복제 기능만 제공합니다.
자세한 이야기는
http://postgresql.kr/docs/current/high-availability.html
Windows 환경에서의 복제는 마이크로소프트 클러스터 기능을 이용하면 될 것 같고요.
이것을 이용할 경우는
노드 두개에 하나의 공유 디스크를 사용합니다.
대기 서버로 사용하는 노드는 그 공유 디스크를 마운트 하지 않고, 있다가 운영 서버 장애로 failover 가 일어나면, 대기 서버가 그 공유 디스크를 마운트 해서 데이터베이스를 실행해서 운영하는 방식입니다.
다음 DB 차원의 복제는 클러스터에서 제공하는 failover 기능이 없습니다.
즉, 운영 서버의 변경 분을 대기 서버에 계속 반영하고 있다가,
운영 서버 장애가 생기면, 대기 서버를 운영 서버로 전환하는 일을 직접 구현해야합니다.
스트리밍 복제에 대한 예제들은 웹 페이지에 참 많이 있습니다.
그거 보고 하시면 될 것 같네요.
예전에 제가 썼던 글도 있네요.
http://postgresql.kr/blog/postgresql_ha.html
좀 오래된 글이여서 최신버전용에 대해서는 약간 다르지만, 참고 하셔도 좋을 듯합니다.
slony 를 쓰셨네요!
이놈은 저도 모릅니다.
부디 성공하시길.