2012-06-15 4 views
1

서로 데이터베이스 관계를 맺고있는 여러 개의 MySQL innodb 데이터베이스를 백업하는 것과 관련된 질문이 있습니다. 데이터베이스의 백업 및 복원 중 데이터의 관계 무결성에 대한 우려가 있습니다.mysql - 관련 innodb 데이터베이스 백업하기

이 사용 사례는 하나의 "마스터"데이터베이스가 하나의 데이터베이스로 통합 될 수없는 여러 개의 개별 도메인에 대한 사용자 정보와 같은 최상위 데이터를 보유하는 데 사용 된 상황입니다. 이 설정은 MySQL이 innodb 외래 키와 데이터베이스 간 관계를 허용하기 때문에 문제가되지 않습니다.

그러나 백업하는 동안 외래 키를 손상시키지 않으면 서 마스터 및 보조 데이터베이스를 동일한 서버에 올바르게 백업하는 방법 (동일한 서버에 있다고 가정)

는 좀 할 수있는 방법을 찾고 있어요

는 어떻게

답변

1

... 그 순간에 또는 백업 시간 동안 관계를 유지 할 수없는 경우 해당 데이터베이스의 시간에 "촬영 스냅"나는 희망 캡처 질문을 올바르게 이해하십시오.

db2의 하나 이상의 테이블에있는 외래 키 제약 조건이 db1에서 어떤 것을 참조하는 두 개의 데이터베이스 (db1 및 db2)가 있다고 가정하십시오.

백업을 할 때 모든 것이 특정 시점에 일치하도록하려면 mysqldump을 대신 수행하십시오. 당신이 mysqldump를 실행 할 때마다,이 같은 --single-transaction 옵션을 실행 DB1과 DB2는 참조 무결성의 관점과 시점 DATA가되는 경우에도 일관된되도록 내부 체크 포인트가 생성

mysqldump -u... -p... --single-transaction --databases db1 db2 > db1_db2.sql 

백업 중에 db1과 db2에 입력.

mysqldump를 복원하는 동안 깨끗하고 빠른 재로드가 가능하도록 외래 키가 비활성화됩니다. mysqldump가 --single-transaction 옵션을 사용하여 만들어진 경우에만 복원하는 동안 외래 키가 비활성화되는 것을 신뢰할 수 있습니다.

+0

훌륭한 반응을 보내 주셔서 감사드립니다. 내 문제를 정확히 이해했다고 생각해. 나는 MySQL Enterprise를보고 다음과 같은 것을 발견했다 : MySQL 엔터프라이즈를 통한 핫 백업 : http://dev.mysql.com/doc/mysql-enterprise-backup/3.5/en/meb-backup-overview .html MySQL의 백업 명령 : http://dev.mysql.com/doc/mysql-enterprise-backup/3.6/en/intro.html –

+0

매우 흥미로운 대안처럼 보입니다. MySQL 엔터프라이즈의 백업 명령은 핫 백업보다 사용자 친화적 인 접근 방법입니다. 그러나 내가 hotbackup으로 이해 한 것은 그 결과가 그 속도라는 것입니다. –

+0

다른 사람들은 덤프를 수행하는 동안 FLUSH TABLES WITH READ LOCK을 사용하는 것이 좋습니다. 그러나 이것은 백업 시점에서 여전히 사용중인 긴 SQL 문에 부정적인 영향을 미친다 : 참조 : http : //www.mysqlperformanceblog .com/2012/03/23/how-flush-tables-read-lock-works-with-innodb-tables/ –