답변:
InnoDB를 스토리지 엔진으로 사용한다고 가정합니다. 그렇다면 bin-logging 을 켜야합니다 . 지금 켜져 있지 않으면 my.cnf를 수정 한 후 MySQL을 다시 시작해야합니다. 다운 타임만으로 데이터베이스를 차단하지 않고 binlog 위치로 데이터베이스를 덤프 할 수 있습니다.
mysqldump --skip-lock-tables --single-transaction --flush-logs --hex-blob --master-data=2 -A
이 백업을 기반으로 슬레이브에서 데이터를 복원하십시오. 이 후에는 MySQL 복제 자습서 를 따라 슬레이브가 마스터와 함께 따라 잡거나 실행할 수 있습니다.
복제를 시작하려면 슬레이브에 일관된 데이터베이스 사본이 필요합니다
myisam 또는 innodb 테이블이 지원됩니까? 문제를 찾기 위해
show table status
'엔진'열을보십시오
모든 테이블이 innodb 인 경우 mysqldump --single-transaction을 사용하고 슬레이브로 가져 오기를 사용하여 가동 중지 시간을 0으로 설정할 수 있습니다
테이블이 myisam 인 경우 테이블을 복사하는 동안 쓰기 위해 테이블을 잠글 때 다운 타임이 발생해야합니다. mysqlhotcopy는이를 도와주는 도구입니다.
또는 LVM (논리 볼륨 관리자)을 사용하는 경우 데이터베이스를 중지하고 몇 초 안에 LVM 스냅 샷을 작성한 다음 db를 다시 시작할 수 있습니다. 그런 다음 스냅 샷에서 일관된 사본을 만들 수 있습니다.
슬레이브를 설정하려면 데이터 스냅 샷을 생성하고 이진 로그 위치를 기록해야합니다. 데이터베이스를 백업하면 성능이 저하 되더라도 다운 타임이 발생하지 않아야하지만 이미 데이터베이스를 백업하고 있습니까? 백업에서 일부 테이블을 잠글 필요가있을 수 있으며 이로 인해 애플리케이션이 잠길 수 있으므로 실제로 어떻게 구현되는지 살펴 봐야합니다.
디스크를 스냅 샷 할 수 있습니까? 핫 백업을 수행 할 수 있으면 가동 중지 시간이 상당히 줄어 듭니다.