두 데이터베이스 간의 MySQL 데이터베이스 동기화


81

우리는 MySql 백엔드와 함께 다양한 상점에서 Java PoS (Point of Sale) 애플리케이션을 실행하고 있습니다. 상점의 데이터베이스를 호스트 서버의 데이터베이스와 동기화하고 싶습니다.

상점에서 일부 변경이 발생하면 호스트 서버에서 업데이트되어야합니다. 어떻게해야합니까?



쉽게 할 수 있습니까 ?? 얼마나 걸릴까요?
peedee

2
@peedee MySQL 복제는 설정하기가 매우 쉽습니다. 몇 가지 명령과 초기 동기화. 처음으로 30 분 정도 걸렸습니다.
ceejayoz

2
좋은 질문의 자리는 같은 목적을 위해 같은 것을 궁금해하는 것이 었습니다]
codefreaK

MySQL 복제 기능을 사용하거나 데이터베이스 동기화를 수행하는 몇 가지 도구를 사용할 수 있습니다. 여기에 나열되어 있습니다. stackoverflow.com/questions/52583/…
Peter Venderberghe

답변:


60

복제를 만드는 것은 그리 어렵지 않습니다.

다음은 몇 가지 좋은 자습서입니다.

http://aciddrop.com/2008/01/10/step-by-step-how-to-setup-mysql-database-replication/

http://www.ghacks.net/2009/04/09/set-up-mysql-database-replication/

http://dev.mysql.com/doc/refman/5.5/en/replication-howto.html

http://www.lassosoft.com/Beginners-Guide-to-MySQL-Replication

여기에 명심해야 할 몇 가지 간단한 규칙이 있습니다 (물론 더 많은 것이 있지만 이것이 주요 개념입니다).

  1. 데이터 쓰기를 위해 1 대의 서버 (마스터)를 설정합니다.
  2. 데이터를 읽기 위해 하나 이상의 서버 (슬레이브)를 설정합니다.

이렇게하면 오류를 방지 할 수 있습니다.

예 : 스크립트가 마스터와 슬레이브의 동일한 테이블에 삽입되면 중복 기본 키 충돌이 발생합니다.

"슬레이브"는 마스터와 동일한 정보를 보유하고 있지만 데이터를 직접 추가 할 수없는 "백업"서버로 볼 수 있습니다. 마스터 서버 지침 만 따르십시오.

참고 : 물론 마스터에서 읽을 수 있고 슬레이브에 쓸 수 있지만 동일한 테이블 (마스터에서 슬레이브로, 슬레이브에서 마스터로)에 쓰지 않도록하십시오.

모든 것이 정상인지 확인하기 위해 서버를 모니터링하는 것이 좋습니다.

추가 도움이 필요하면 알려주세요.


예, 쇼핑 = 마스터, 서버 = 슬레이브
Book Of Zeus

이제 마스터 하나를 구성했고 하나의 슬레이브 데이터베이스에 연결하겠습니다. 이렇게하면 마스터에 대한 모든 변경 사항이 슬레이브에 반영되고 슬레이브의 변경 사항이 마스터에도 반영됩니다 ??
peedee

예, 설정이 좋으면 즉시! 마스터에 레코드를 삽입하고 테스트 할 슬레이브에서 선택을 수행 할 수 있습니다. 통과하면 설정이 완료됩니다!
Book Of Zeus

안녕 친구 ... 나는 노예에 오류 1045가 있습니다. 그 이유는 무엇입니까? 당신은 어떤 생각이 있습니까?
peedee

ERROR 1045 : 액세스가 사용자에 대한 거부 : '루트 @ localhost를'(사용 비밀번호 : NO)와 dev.mysql.com/doc/refman/5.1/en/access-denied.html
제우스의 책

23

세 가지 접근 방식 :

  1. 고전적인 클라이언트 / 서버 접근 방식 : 상점에 데이터베이스를 배치하지 마십시오. 응용 프로그램이 서버에 액세스하도록하기 만하면됩니다. 물론 VPN을 설정하는 것이 더 좋지만 단순히 연결을 SSL 또는 ssh로 래핑하는 것이 합리적입니다. 장점 : 데이터베이스가 원래 생각했던 방식입니다. 단점 : 대기 시간이 길고 복잡한 작업이 느려지면 저장 프로 시저를 사용하여 왕복 횟수를 줄여야 할 수 있습니다.

  2. 복제 된 마스터 / 마스터 : @Book Of Zeus가 제안한대로. 단점 : 설정이 다소 복잡하고 (특히 여러 매장이있는 경우) 매장 머신이 고장 나면 전체 시스템이 손상 될 수 있습니다. 장점 : 읽기 작업이 완전히 로컬이고 쓰기 작업이 비동기식으로 전파되므로 응답 성이 향상됩니다.

  3. 오프라인 작업 + 동기화 단계 : 모든 작업을 로컬에서 수행하고 수시로 (1 시간에 한 번, 매일, 매주 등) 마지막 동기화 작업의 모든 새 / 수정 된 레코드로 요약을 작성하고 서버로 보냅니다. 장점 : 네트워크 없이도 작업 할 수 있고 빠르고 쉽게 확인할 수 있습니다 (요약을 읽을 수있는 경우). 단점 : 실시간 정보가 없습니다.


10
세 번째 유형의 db 동기화 (오프라인 작업 + 동기화)를 설정해야합니다. 이에 대해 자세히 알아보고 싶습니다. 이걸 구글링 할 수 없습니다. 내가 참조 할 수있는 책 / 기사입니까?
abhishek77in

10

SymmetricDS가 답입니다. 한 방향 또는 양방향 비동기 데이터 복제로 여러 가입자를 지원합니다. 웹 및 데이터베이스 기술을 사용하여 원하는 경우 거의 실시간으로 관계형 데이터베이스간에 테이블을 복제합니다.

필요에 맞는 포괄적이고 강력한 Java API.


인터넷이없는 일부 지역에 별도의 db가있는 내부 서버가 있고 데이터베이스 웹 호스팅에 온라인 구매자가 있고 내부 데이터베이스 구매를 라이브로 마이그레이션하려는 경우 둘 사이의 자동 증분에 어떤 일이 발생하는지 조언 해 주시겠습니까? 둘 다 같은 이드를 예약했다면 지저분 해 지겠지!? 그래서 (내부 DB에서 수행 된 작업을 ID 자동 증가 및 테이블 간의 관계에 영향을주지 않고 라이브로 동기화해야합니다)
shareef

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.