2011-10-17 4 views
1

외부 프로그램에서 MySQL 데이터베이스에 글을 청취 할 수 있는지 궁금합니다. 하나의 서버에서 변경 사항을 듣고 HTTP를 통해 변경 사항을 다른 서버로 보내고 싶습니다.MySQL 글쓰기를 듣는 방법이 있습니까?

+0

복제 란 무엇입니까? –

답변

1

두 가지 가능한 솔루션 : 복제 (가능한 경우) 또는 database triggers을 사용하십시오.

1

가능한 경우 복제 (Kris에서 언급 한대로)가 가장 좋은 옵션입니다. 그러나 어떤 이유로 복제가 사용 사례에서 작동하지 않는다고 가정합니다. 특히, HTTP를 통해 보내야한다고 언급합니다. 각 업데이트에서 HTTP를 통해 다른 서버에서 실행되는 REST 서비스를 호출하는 방법을 따라 뭔가를해야한다고 가정합니다. 이것이 유스 케이스라면 복제가 가능한 옵션이 아닌 것 같습니다.

하나의 옵션이 트리거가됩니다. MySQL에서 사용할 수있는 함수를 알고있어 트리거 내에서 직접 REST 서비스를 호출 할 수는 없습니다. 또한 모든 데이터베이스 업데이트에 대해 대기 시간을 크게 늘릴 수 있기를 바랍니다. 대신 업데이트, 삭제 또는 삽입이 필요한 테이블에서 발생할 때마다 로컬 테이블에 기록하는 트리거를 추가하는 것이 좋습니다. 이것은 일종의 "감사"테이블 일 것입니다. 그런 다음이 테이블을 읽는 배치 프로세스/cron 작업을 빌드하고 다른 서버에서 실행중인 외부 REST 서비스를 동 기적으로 호출합니다.

다른 옵션은 데이터베이스에 액세스하는 데 사용되는 언어에 따라 다릅니다. 예를 들어, Java를 사용하는 경우 모든 업데이트에 코드를 삽입 할 수있는 "프록시"JDBC 드라이버가 있습니다.

또 다른 옵션은 바이너리 로그에 로그 아웃하도록 MySQL을 구성하는 것입니다. 그런 다음 바이너리 로그를 구문 분석하고 위에 제안 된대로 일괄/cron 프로세스를 사용할 수 있지만 "감사"테이블을 읽는 대신 바이너리 로그를 읽습니다. 데이터베이스가 두 위치에서 정확히 동일한 경우 복제를 설정할 수 있습니다. 다른 것이 없다면 바이너리 로그를 복원 할 수있는 원격 서버 (플랫폼에 따라 다름)로 바이너리 로그를 가져 오는 프로세스를 고안 할 수 있어야한다. http://dev.mysql.com/doc/refman/5.0/en/binary-log.html을 참조하십시오.

관련 문제