마스터에서 슬레이브로 작업하는 mysql 복제가 필요합니다. (한번 시도해보십시오.)새로운 MYSQL 복제 만들기
데이터베이스가 상당히 크기 때문에 (100GB 이상) 새 슬레이브를 준비하는 데 몇 시간이 걸립니다.
데이터베이스에 MyIsam과 innoDB 엔진이 있고 둘 다 쓰여지고 있습니다. 내 유일한 선택은 마스터에서 새로운 슬레이브로 데이터 파일을 복사하는 것입니다. (또는 ROUND 2의 주제에서 나중에 참조 할 데이터베이스 덤프를 만드십시오)
전에 데이터베이스를 사용하는 모든 서비스를 실행하고 테이블에 대해 writelock을 만들거나 전체 데이터베이스를 종료해야합니까?
새 복제 서버에 데이터 디렉토리를 동기화 한 후 데이터베이스를 시작하고 테이블이있는 데이터베이스가있었습니다. 내가 0
오류 1에 007,324 위치에 bin.log 변경하여 없애있어 첫 번째 오류 :
140213 4시 52분 7초 [ERROR]는 치명적인 오류 1236있어 '첫 번째 로그를 찾을 수 없습니다 바이너리 로그에서 데이터를 읽을 때 마스터의 바이너리 로그 인덱스 파일에있는 파일 이름 140213 4:52:07 [주의] 슬레이브 I/O 스레드가 종료되고 'bin-log.007323'로그에 읽음, 위치 46774422
그 후 데이터베이스에서 새로운 문제가 발생했으며이 오류는 모든 테이블에서 나왔습니다.
오류 2 :
오류 '파일에 잘못된 정보 :'쿼리에 ./database/table.frm ''. 기본 데이터베이스 : '데이터베이스'.
뭔가 잘못 된 것 같습니다.
ROUND 2!
이 장면이 나면 오랜 서비스 중단없이이 작업을 수행 할 수 있다고 생각하기 시작했습니다.
마스터 데이터베이스가 이미 구성되었으며 다른 슬레이브에서도 정상적으로 작동합니다.
그래서 나는 인터넷 검색을했고 이것은 내가 생각해 낸 것입니다. MASTER_LOG_FILE을 찾는 GZIP (pigz)하여 DBDUMP을 한 후 서버를 노예로 이동 :
mysqldump --skip-lock-tables --single-transaction --flush-logs --master-data=2 -A > dbdump.sql
포장 및 이동 :
FLUSH TABLES WITH READ LOCK;
하는 덤프를 촬영 :
만들기 테이블에 잠금을 읽어 덤프의 MASTER_LOG_POS.
그 후 100GB가 넘고 시간이 걸리기 때문에 dbdump.sql을 가져오고 싶지 않습니다. 그래서 나는 SOURCE가 그것을위한 ok 옵션이 될 것이라고 생각한다. SLAVE 서버에서
: 나는 아직 테스트하지 않은
CREATE DATABASE dbdump;
USE dbdump;
SOURCE dbdump.db;
CHANGE MASTER TO MASTER_HOST='x.x.x.x',MASTER_USER='replication',MASTER_PASSWORD='slavepass',
MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=X;
start slave;
SHOW SLAVE STATUS \G
, 내가 뭔가에 무엇입니까?--BP