가동 중지 시간을 최소화하면서 MySQL 복제를 설정하는 방법 타임으로이를 수행하는 방법에 대한 단계별 가이드가

기본적으로 우리는 큰 MySQL 데이터베이스를 가지고 있으며 슬레이브 (마스터 슬레이브 설정)에 복제하려고합니다. 데이터베이스에서 MINIMAL 다운 타임으로이를 수행하는 방법에 대한 단계별 가이드가 있습니까? 데이터베이스를 백업하고 백업을 슬레이브 서버 (개인 네트워크를 통해서도)로 전송하는 데 40 분 정도 걸립니다. 상당히 긴 다운 타임.



답변

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를 다시 시작할 수 있습니다. 그런 다음 스냅 샷에서 일관된 사본을 만들 수 있습니다.


답변

슬레이브를 설정하려면 데이터 스냅 샷을 생성하고 이진 로그 위치를 기록해야합니다. 데이터베이스를 백업하면 성능이 저하 되더라도 다운 타임이 발생하지 않아야하지만 이미 데이터베이스를 백업하고 있습니까? 백업에서 일부 테이블을 잠글 필요가있을 수 있으며 이로 인해 애플리케이션이 잠길 수 있으므로 실제로 어떻게 구현되는지 살펴 봐야합니다.

디스크를 스냅 샷 할 수 있습니까? 핫 백업을 수행 할 수 있으면 가동 중지 시간이 상당히 줄어 듭니다.