2009-04-27 9 views
4

이것은 시나리오 :MySQL 데이터베이스 복제

  1. 나는 데이터베이스 MySQL 서버를 가지고, 이제 consolidateddb를 호출 할 수 있습니다. 이 데이터베이스 여러 데이터베이스에서 여러 테이블의 통합
  2. 나는 원래 데이터베이스와 다른 MySQL 서버를 가지고 있으며,이 데이터베이스는 프로덕션 데이터베이스이며 매일 업데이 트됩니다.
  3. 회사는 프로덕션 데이터베이스의 각 테이블에있는 각 업데이트/삽입/삭제를 consolidateddb의 해당 테이블에 복사하려고합니다.

복제를 수행할까요? 복제는 데이터베이스에 대한 데이터베이스에서 수행되지만 다른 데이터베이스에 속한 테이블에서는 하나의 대상 데이터베이스에 수행되지 않습니다.

제 설명이 명확 해졌기를 바랍니다. 감사.

편집 : 각 데이터베이스의 모든 테이블을 단일 슬레이브로 재귀 적으로 복사 할 수 있습니까? 아니면 못생긴 해결책입니까?

+0

consoliddb가 슬레이브 서버의 별도 dbs에 모든 것을 저장하는 데 어떤 이유가 있습니까? – Louis

답변

0

Replicating Different Databases to Different Slaves을 확인하십시오. 어떤 식 으로든 도움이되는지 확인하십시오.

+0

다른 마스터 데이터베이스를 다른 마스터 데이터베이스에있는 모든 테이블을 포함하는 슬레이브로 복제하는 것은 오히려 반대입니다. 왜 나 한테 물어 보지 마, 나는 방금이 괴물을 물려 받았다. – Moutaz

0

MySQL 문 기반 복제 (기본 복제)는 슬레이브에서 마스터에서 실행 된 것과 똑같은 명령문을 실행하여 작동합니다. 여기에는 테이블이있는 데이터베이스에 대한 정보가 포함됩니다.

MySQL은 데이터베이스간에 복제 명령문을 이동하는 기본 제공 방법을 제공하지 않습니다 (예 : "insert into db1.table1 ..."-> "insert into db2.table1 "). 실시간으로 복제 로그를 수동으로 변경하여 속임수를 쓸 수도 있지만, out-of-the-bod MySQL 복제는 아닙니다.

0

그것을 해낼 수 있습니다. 무료 다운로드이며 테이블 보관과 같은 최적화 도구를 전문으로합니다. 과거의 프로젝트에서 특정 데이터를 다른 DB 등에 복제하기 위해이 데이터를 사용했습니다. 시간 또는 기타 여러 요소를 기반으로 할 수 있습니다.

0

내가 아는 한 최선을 다해 복제본 (MySQL 4 이상)을 설정하고 my.cnf 파일에 특정 테이블 만 처리하거나 마스터 테이블에 특정 테이블 만 기록하도록 두 가지 방법 중 하나를 사용하여 문제를 해결할 수 있습니다 . 여기

일부 기술에 대한 가이드 : 나는 복제 설정에 거의 문제가

http://www.onlamp.com/pub/a/onlamp/2006/04/20/advanced-mysql-replication.html

, 내 모든 문제는 특히 등 재부팅

11
후, DB를 동기화하려고왔다

몇 가지 사항을 정리하려면 현재의 MySQL 실습에 따라 적절하게 이름을 지어 봅시다. 데이터베이스는 데이터베이스 서버입니다. 스키마는 데이터베이스 인스턴스입니다. 데이터베이스 서버에는 여러 스키마가있을 수 있습니다. 테이블은 스키마 내에 있습니다.

은 마스터/프로덕션 서버의으로 정의되어 있으므로 스키마 또는 테이블을 복제하려는 경우 복제가 도움이됩니다.복제는 마스터에서 실행되는 모든 sql 문의 바이너리 로그를 슬레이브로 전달함으로써 작동합니다. 슬레이브는 슬레이브가 순차적으로 실행되는 것처럼 실행합니다.

모든 데이터를 복제하도록 선택할 수도 있고 일부 스키마 또는 일부 테이블 만 선택할 수도 있습니다.

다른 스키마에서 테이블을 선택하여 하나의 스키마로 복제 할 수 없으며 테이블이 특정 스키마에 속합니다.

그런데 중요한 고지. 복제 서버 을 여러 마스터의 슬레이브가 될 수 없습니다. 페더레이션 된 테이블을 사용하여이를 모방 할 수는 있지만 데이터를 통합 서버에 복사하지 않고 여러 서버의 데이터가 하나의 서버에있는 것처럼 표시합니다.

복제본 보너스는 통합 서버가 항상 데이터를 업데이트한다는 것입니다.

2

각 마스터에서 바이너리 로그를 가져 와서 mysqlbinlog으로 구문 분석 한 다음이를 통합 된 시스템으로 실행할 수 있습니다.

뭔가 매우 약처럼 :

mysqlbinlog [binary log files] | mysql -h consolidated 

당신은 논리를 래핑하는 간단한 응용 프로그램 (난 당신이 필요한 경우가 떠들썩한 파티에서 할 수있는 의심) 어떤 종류의 필요 했어.