답변:
개인적으로 MS SQL 방법과 MySQL 방법의 푸시를 사용했습니다. 왜? Windows에는 32 비트 및 64 비트 MySQL ODBC 드라이버가 준비되어 있으며 연결된 서버를 설정하는 것은 쉽지 않습니다. MS SQL에서 연결된 많은 MySQL 서버가 있습니다. 또한 linux / unix에서 MS SQL에 연결하는 것이 항상 좋은 것은 아니며 일반적으로 모든 기능을 사용할 수는 없습니다. FreeTDS에는 한계가 있습니다. 당신은 나중에보다 빨리 그들을 때릴 수 있으므로 그냥 건너 뛰지 마십시오. 이 모든 것은 * nix에서 MySQL을 실행한다고 가정합니다. 그렇지 않은 경우 50/50에 조금 더 가까워 지지만 "실제"데이터베이스가 아닌 것처럼 들리므로 MS SQL에서 가져 오기를 계속 선택하므로 ETL 또는 처리에 대한 부하가 더 이상적입니다. GoldenGate 솔루션은 흥미롭게 들리지만 무료가 아니라고 확신합니다.
MS SQL에 복제하는 MySQL 및 Oracle 데이터베이스 모두에서 이러한 종류의 시나리오를 설정 한 것을 고려할 때 가장 효과적인 팁을 제공합니다.
팁이 도움이 되길 바랍니다!
동일한 질문이 StackOverflow에서 해결되었습니다 : MySQL에서 MSSQL 로의 복제 .
해결 방법이 있지만 매우 쉬운 해결책은 아닌 것 같습니다.
MySQL DB에서 MSSQL DB로 필요한 데이터를 가져 오기 위해 SSIS 패키지를 작성해야한다고 생각합니다. SSIS를 사용하면 다양한 소스에서 데이터를 가져올 수 있습니다. 그런 다음 Windows 작업 스케줄러 또는 SQL 작업을 사용하여 패키지를 예약 할 수 있어야합니다.
복제로 인해 로그 배송이나 그와 비슷한 것을 의미한다면 운이 없다고 생각합니다. 그러나 MySQL 데이터베이스를 연결된 서버로 설정하고 고유 한 복제 구성표를 롤업 할 수 있습니다. 가장 간단한 방법은 truncate 및 insert 문을 사용하여 모든 테이블을 주기적으로 스냅 샷하는 것입니다. 요구 사항에 따라 복잡성을 추가하십시오.
이를 위해 GoldenGate for MySQL 및 MS SQL 을 사용할 수 있습니다 . 양쪽에 GoldenGate 제품을 설치 한 다음 균일 한 복제를 진행하십시오.
또는 "스냅 샷"복제의 경우 Python (또는 이와 유사한) 스크립트를 사용하여 두 데이터 소스 ( UnixODBC 및 FreeTDS 를 사용하여 MS SQL에 연결 )에 간단히 연결 하고 SELECT
각 행에 대해 한쪽에서 수행되는 테이블을 반복 할 수 있습니다. INSERT
다른쪽에. MSSQL에는 트랜잭션이 있고 대상이므로 트랜잭션을 시작하고 DELETE
모든 테이블의 모든 항목을 복사하고 복사본을 수행 COMMIT
하면 대상의 연결된 사용자와 관련이있는 한 즉시 표시됩니다 (일관되지 않은 경우). 물론 소스에서).