2014-05-21 1 views
0

Google Cloud SQL을 MASTER (버전 5.5.37)로 사용하고 ROW 기반 복제를 사용하여 EC2 슬레이브 (또한 5.5.37)로 복제 (단일 데이터베이스에서 replicate-do-db in my.cnf)Google Cloud MySQL 행 기반 복제 데이터 유형 오류

모든 테이블이 정의 된 마스터를 mysqldump하고 복제를 시작하면 아무런 문제가 없습니다. 내가

CREATE TABLE site_users(id INT NOT NULL AUTO_INCREMENT, nick VARCHAR(20), PRIMARY KEY (id)); 
INSERT INTO site_users(nick) VALUES("Bob"); 

모든 마스터에 잘 작동 수행하는 경우

문제는 있지만, 슬레이브에 나는 변환 할 수 없습니다 1677

테이블의 컬럼 1 '(DB_NAME) .site_users'오류 얻을 유형에서 'VARCHAR (60)'를 입력하려면 'VARCHAR (20)'

I 슬레이브에게 질의

DESCRIBE site_users; 

응답은 마스터에있는대로 정확하게 정의 된 테이블을 보여줍니다. 다른 VARCHAR 길이로 실험 할 때 마스터가 보내는 크기는 항상 테이블의 예상 크기의 3 배입니다. 예를 들어 nick이 varchar (100)이면 "varchar (300) ... 형식을 변환 할 수 없습니다"라는 오류가 발생합니다.

편집 : SLAVE를 인스턴스화 할 때이 테이블을 포함하는 데이터베이스가 모두 "mysql"데이터베이스처럼 덤프되는 경우 MASTER의 다른 많은 설정도 복사된다는 점을 제외하면 모든 것이 올바르게 작동합니다. 일들이 끝나기로되어 있니? 이것은 처음으로 replicate-do-db를 사용하여 단일 데이터베이스에서 복제를 설정하는 것입니다.

+0

마스터 및 슬레이브에서 해당 테이블에 대한'SHOW CREATE TABLE'은 무엇입니까? 차이점이 있습니까? –

+0

site_users | CREATE TABLE'site_users' ( 'nick'varchar (50) DEFAULT NULL ) ENGINE = InnoDB DEFAULT CHARSET = latin1 | 단일 열 테이블에서도 오류가 발생했기 때문에 원래 질문에있는 id 열을 제거했음을 유의하십시오. 'mysql'데이터베이스와이 테이블을 포함하는 데이터베이스를 모두 슬레이브를 인스턴스화하는 데 사용하는 mysqpdump에 복사하면 테이블을 생성 한 후 마스터의 삽입이 슬레이브에 올바르게 복제됩니다. 분명히 다른 많은 설정이 복사되기 때문에이 작업을 수행해야한다는 것이 기괴한 것 같습니다. – user3571068

+0

Cloud SQL의 기본 문자 집합은 UTF8입니다. 'SHOW CREATE TABLE'이 마스터와 슬레이브 모두에서 정확한 것을 보여줄 수 있습니까? –

답변

0

슬레이브의 테이블은 마스터의 테이블과 동일한 문자 세트를 가져야합니다. 마스터에서 SHOW CREATE TABLE을 수행하고 해당 명령을 사용하여 슬레이브에 테이블을 작성하는 것입니다.

Cloud SQL의 기본 문자 집합은 현재 utf8입니다.