2013-03-26 1 views
1

MySQL을 사용하여 데이터를 저장하는 웹 앱이 있습니다. 웹 앱은 내부 용입니다 (인터넷을 통해 제공되지 않음).여러 지역에 걸쳐 MySQL 데이터베이스 동기화

이제이 응용 프로그램을 3 개 이상의 지점 (지사)에 배포해야합니다. 데이터를 동기화 할 수 있어야합니다 (한 위치에서 생성 된 항목은 다른 지점 위치에서 사용할 수 있어야 함).

요구 사항

    각 위치에 읽기 및 로컬 기록/
  • 데이터베이스가 하루에 한을 동기화되어 자신의 네트워크에
  • (아마도 SSH를 통해 스크립트를 통해) 웹 응용 프로그램 + MySQL 데이터베이스의
  • 지역의 인스턴스 각 위치는 동일한 데이터를 갖습니다.

UUID (고유 식별자)를 만들고 소스 비트 (원래 위치) 및 동기 비트 (new = 0)를 사용하여 각 행을 인코딩하는 것이 유일한 방법입니다. , synced = 1) 그런 다음 스크립트를 작성하여 각 위치에 매일 밤 SSH를 보내고 각 위치에 = 내 소스 및 동기화 = 0 행을 추가하십시오 ...이 스크립트는 짐작하고 매우 우아하지만 신뢰할 수는 없지만 확실하지 않습니다 그 밖에 할일.

클라이언트는 인터넷 연결이 실패하면 앱이 로컬로 작동 할 수 있기를 원하지만 야간 스크립트 나 다른 방법을 통해 다른 브랜치간에 동기화가 유지되는 것을 두려워합니다. 제가 말했듯이, 이미 총 3 곳이 있으며, 아마도 올해 말에 더 많이 들어올 것입니다.

아키텍처에 대한 조언을 보내 주시면 감사하겠습니다.

추신. 보안상의 이유로 데이터베이스를 인터넷에 연결하지 않습니다. 그러나 모든 제안에 열려 있습니다.

감사합니다.

+0

데이터에 삭제 또는 업데이트가 없으면 매일 밤 새 행을 삽입하는 것이 간단하지만 업데이트 또는 삭제가있는 경우 수행하려고하면 많은 고통을 느끼게됩니다. 그것을 손으로.참조 설명서에서 '복제'를 확인하십시오. http://dev.mysql.com/doc/refman/5.6/en/replication.html – Barranka

+0

수정하십시오. 중대한 통증 (변화가 없을 경우조차도 위험한 상황 임) –

답변

1

클라이언트는 이러한 아키텍처 결정에 따라 하드웨어, 개발 및 유지 관리에 드는 추가 비용으로 인해 많은 비용이 소요될 수 있습니다. 미션 크리티컬 한 데이터 입력 요구 사항이없는 한, 모든 지점 위치에서 하드웨어 스택을 복제하는 것은 약간의 미친 기대 일 수 있습니다.

물론, 그들은 당신이 이것을 설정할 VPN을 가지고 있지 않다면, 서버에서 서버로 데이터를 복제하기 위해 열린 인터넷을 통해 데이터를 이동해야 할 필요가 있습니다. 데이터를 마이그레이션/병합하는 데 필요한 일일 프로세스를 갖추려면 마음이 들떠 있고 전체 시동기가 없어야합니다. 그것은 매우 복잡한 문제입니다. 어떤 종류의 master-master 데이터베이스 복제 클러스터가 필요할 것입니다. 다행히도 MySQL은이를 수행 할 수있는 기능을 제공합니다. 불행하게도,이 질문을 여기에서해야하는 경우 아마도 약간의 어려움이 될 수도있는 무언가를 설정하고 바로 잡기가 복잡 할 수 있습니다.

데이터베이스 보안에 관한 한, 서버를 보호하기 위해 적절한 예방 조치를 취하는 한 MySQL 데이터베이스를 인터넷에 호스팅하는 것에 대해 걱정할 필요가 없습니다. 아마도 네트워크 수준에서 포트 3306 (및 SSH 액세스의 경우 22) 및 웹 응용 프로그램 서버 (들)의 IP 주소에만 액세스가 허용되기 시작합니다. 또한 액세스 할 특정 알려진 호스트의 트래픽 만 받아들이도록 MySQL 사용자 계정을 설정하는 것도 포함됩니다.

+0

3 곳의 진료소입니다. 그들은 여러 지역에 걸쳐 전자 차트를 공유 할 수 있기를 원합니다. 현재 하드웨어는 매우 비싸지 않은 Synology 서버 (위치 당 $ 1,500 ~ = ok)입니다. 또한 서버를 로컬 파일 서버로 사용하므로 어쨌든 하드웨어를 계획합니다. 포트 3306과 22를 열어 각 위치에서 고정 IP로 제한 할 수 있습니다. 트릭은 로컬 읽기/쓰기 및 그 이후의 업데이트에 대한 접근 방식입니다. 동기화가 매우 어렵다는 것을 알고 있습니다. 나는 이것을 미친 듯이 연구하려고 노력했다. –

+0

나는 synologies에서 실행되는 VPN 서버를 가지고 있으며 각 컴퓨터가 집에서 데이터베이스로 작업하기 위해 VPN을 사용합니다. SSH도 실행 중입니다. –

+0

또한이 설정을 고려 중입니다 : 1. 로컬 (속도) 읽기, 2. 마스터 서버 (위치 중 하나)에 쓰기. 3. 하루 종일 마스터 데이터베이스를 각 위치에 재배포하여 모두 업데이트되도록 스크립트를 만듭니다. 문제는 여기 다시 인터넷이 가동되어야합니다. 타임 워너가 망쳐서 환자를 볼 수 없기 때문에 환자는 매우 무서워합니다. –

관련 문제