답변:
MySQL 서버 백업을위한 모범 사례 :
MySQL에서 복제 설정. 마스터 및 슬레이브 서버를 설정해야합니다. DB에 대한 모든 읽기 / 쓰기는 Slave 서버로 갈 수 있습니다. 복제의 이점은 마스터 서버를 중단하지 않고 슬레이브 서버에서 백업을 수행 할 수 있다는 것입니다. 응용 프로그램은 다운 타임없이 마스터에서 계속 작동합니다.
데이터 세트가 작은 경우 ( "작은"이 상대 용어라는 것을 알고 있습니다. <10GB라고 가정 해 봅시다) mysqldump는 아마 잘 작동합니다. 쉽고, 온라인 상태이며 매우 유연합니다. mysqldump가 할 수있는 몇 가지 일 : 모든 것을 백업하거나 특정 데이터베이스 나 테이블 만 DDL 만 백업하면 더 빠른 복원을 위해 덤프를 최적화하여 결과로 생성되는 sql 파일을 다른 RDBMS 및 더 많은 것들과 더 호환 가능하게 만듭니다.
그러나 가장 중요한 옵션은 백업 일관성과 관련이 있습니다. 내가 가장 좋아하는 옵션은 다음과 같습니다. --single-transaction :이 옵션은 테이블이 InnoDB 스토리지 엔진을 사용하는 경우 일관된 백업을 제공합니다. 읽기 전용이 아닌 MyISAM 테이블이 있으면 백업 할 때이 옵션을 사용하지 마십시오. --master-data = 2 :이 옵션은 --single-transaction 옵션을 추가하지 않은 한 lock-all-tables를 수행하여 덤프 일관성을 유지합니다. --master-data 옵션은 결과 덤프 파일에 이진 로그 위치도 기록합니다 (= 2는이 줄이 덤프 파일의 주석이됩니다)
mysqldump에 대한 최종 참고 사항 : 복원 시간이 백업 시간보다 훨씬 길 수 있음을 명심하십시오. 예를 들어 인덱스 수와 같은 몇 가지 요소에 따라 다릅니다.
더 큰 데이터 세트를 가진 사람들에게는 실제 백업이 필요합니다. 콜드 백업 (예 : MySQL 서비스 종료, 데이터 디렉토리 복사, 서비스 다시 시작)을 수행 할 수 있지만 많은 사람들이 다운 타임을 원하지 않습니다. 내가 가장 좋아하는 솔루션은 스냅 샷입니다. 이것은 뜨겁거나 (InnoDB의 경우) 잠깐의 잠금 (MyISAM의 경우)이 필요할 수 있습니다. 모든 데이터를 포함하는 것을 잊지 마십시오 (ib_log 파일 포함). Lenz는 다음과 같은 유용한 유틸리티를 제공합니다. http://www.lenzg.net/mylvmbackup/
MySQL Enterprise Backup 사용의 장점 :
참조 : http://www.mysql.com/products/enterprise/backup/features.html http://www.mysql.com/products/enterprise/backup.html
백업에 사용할 전용 복제본 을 설정하는 것이 좋습니다 . 이를 통해 기본에 영향을주지 않고 모든 백업 작업을 수행 할 수 있습니다. 이렇게하면 아키텍처가 복잡해 지므로 복제 지연을 모니터링하여 모든 것이 작동하는지 확인해야합니다.
실제 프로세스와 관련하여 타사 도구가없는 몇 가지 옵션이 있습니다. mysqldump
InnoDB를 사용한다고 가정하면 명령을 사용하여 스냅 샷을 만들 수 있습니다 mysqldump --all-databases --single-transaction > all_databases.sql
. 데이터 크기에 따라 MySQL을 종료하고 데이터 파일을 직접 백업하는 것이 좋습니다. 복제본이 다시 시작되면 작동 중지 된 기간 동안 기본이 수신 한 모든 이벤트가 재생됩니다. MySQL Enterprise를 사용하는 경우 mysqlbackup
유틸리티가이를 수행합니다.
복제본 에서 이진 로그 를 활성화하여 증분 백업을 수행 할 수 있습니다 . 분명히 이것은 데이터를 변경하는 이벤트 만 기록하므로 위의 스냅 샷과 결합해야합니다.
--single-transaction
하지만 추가하는 것을 잊지 말고 my.cnf에서 비활성화 할 수 있기 때문에 기본적으로 활성화되어 있어도--events --routines
항상 사용--triggers
합니다. 데이터베이스에 이러한 유형의 객체가 있는지 여부에 관계없이 표준 연습으로 사용하는 것이 항상 좋습니다.