2013-05-09 3 views
0

MASTER-SLAVE mysql 복제 설정이 필요합니다.mysql 복제 슬레이브에 손실 된 데이터를 얻는 방법

갑자기 슬래시가 추락했습니다. 그리고 MASTER는 아무 문제없이 일했습니다. 이제 저는 SLAVE를 다시 시작했습니다. 그리고 잘 작동합니다. 데이터 동기화가 완료되었습니다.

하지만 문제는 슬레이브가 다운되었을 때 데이터가 슬레이브에없는 것입니다. (새로운 테이블과 일부 테이블의 행).

은 또한 마스터의 최신 위치에

CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.xxxxxx', MASTER_LOG_POS=xxxxx 

했다. 그러나 잃어버린 테이블과 행 SLAVE에 오지 않습니다. (행 수가 일부 테이블의 마스터보다 작음)

참고 : 현재 데이터 동기화가 작동합니다. 그러나 문제는 잃어버린 데이터를 얻을 수 없다는 것입니다.

전체 프로세스를 다시 거치지 않고 master 데이터베이스를 다시 시작하지 않고 데이터를 가져올 수있는 방법이 있습니까?

감사

답변

1

이 슬레이브가 동기화 얻을 때 나는 그것을 할 방법입니다 .... 마스터에

... 슬레이브 그런

# mysqldump -u user -p --all_databases --master-data > all_mysql_data.sql 

...

# mysql -u user -p -e 'slave stop;' 

# mysql -u user -p < all_mysql_data.sql 

# mysql -u user -p -e 'slave start;' 

# mysql -u user -p -e 'show slave status\G;' 

귀하의 버전은 mysqldump입니다. --all_databases 및 --master-data 옵션에주의하십시오. 매우 강력한 주주. ;)

+0

답변 해 주셔서 감사합니다. 슬레이브에서 기존 데이터 (데이터베이스)를 제거해야합니까? 또한 모든 데이터베이스가 아닌 두 개의 데이터베이스 만 필요합니다. 또한 마스터 위치를 다시 슬레이브로 설정할 필요가 없습니까? 동기화가 어떻게 될지 다른 방법은? –

+2

테이블을 삭제할 필요가 없으며 덤프 파일에'DROP TABLE IF EXISTS ... '가 포함됩니다. --master-data 옵션은 덤프 파일에'CHANGE MASTER TO ...'행을 추가합니다. 내가 말한 것처럼 그것에 대해 읽으십시오. 그런 다음 덤프 파일을 작성하여 열고 내부를 살펴보십시오. – MrCleanX