내 플래그로 다시 가져오기 위해 누락된 데이터 섹션을 mysqldump하는 것이 안전합니까?

내 플래그로 다시 가져오기 위해 누락된 데이터 섹션을 mysqldump하는 것이 안전합니까?

테스트 데이터베이스에서 약 1년 간의 데이터가 지워졌다고 가정해 보겠습니다. 나는 가장 빠른 1년의 데이터와 가장 늦은 1년의 데이터에 대한 두 개의 ID를 얻었으므로 여기에 누락된 범위가 있습니다. 내 질문; 정보가 누락된 데이터베이스를 복구하는 데 사용할 수 있는 작업 덤프를 얻기 위해 데이터베이스의 전체 인스턴스에서 다음 명령을 사용하면 위험이 있습니까? 명령:

mysqldump -t --insert-ignore --skip-opt --single-transaction --quick --where="id<156789339" -w"id>124054297" -u root -p database table > partial.sql

그리고 이것을 압축/이동한 후 가져오려면 다음을 수행합니다.

zcat partial.sql.gz | mysql -u root -p database table

언급할 가치가 있는 한 가지 주의 사항이 있을 수 있습니다. 데이터는 mysql 5.1 인스턴스로 가져오는 동안 mysql 5.5(percona)에서 제공되지만, 이로 인해 발생할 수 있는 호환성 문제는 없다고 생각합니다.

내 범위가 겹치는 경우 해당 ID가 이미 존재하는지 무시하고 가져오기 시 문제를 일으킬 수 있는 많은 작업을 수행하지 않도록 하기 위해 명령문( ) 을 -t작성하지 않는 것이 이해됩니다 ( 맨 페이지에 따르면). mysqldump의 경우). 이것이 내보내기에 필요한 전부인지 확인하고, 가져오기에서 누락된 것이 있으면 가능한 실수가 발생하기 전에 확인하고 싶습니다.CREATE TABLE--no-create-info--insert-ignore--skip-opt--add-drop-tab, --add-locks, --create-options, --disable-keys, --extended-insert, --lock-tables, --quick, and --set-charset

답변1

아마 괜찮을 것 같아요. 실패할 수 있는 특별한 경우가 있습니다.

  • ON DELETE CASCADE 문을 사용하여 테이블을 가리키는 FOREIGN KEY가 DB에 있습니다. 이 경우 이전 삭제로 인해 다른 데이터가 손실되므로 해당 데이터도 찾아서 복사해야 합니다. DB가 MYISAM을 사용하는 경우 외래 키가 없으므로 안전합니다.

  • 이전 버전에서 지원되지 않는 특수 기능을 사용하고 있습니다. FULLTEXT 인덱스. 테스트 DB라고 하셔서 모델은 동일할 것으로 추측됩니다. 그런 경우에는 문제가 없어야 합니다.

  • 당신은 다른 것을 사용하고 있습니다부호화/대조두 DB에 있고 테이블에 ASCII가 아닌(현지화된) 텍스트 필드가 있습니다. 다시 말하지만, 모델이 동일하다면 문제가 없을 것입니다. (테이블에 명시적인 인코딩 정의가 없고 mysql 서버의 기본 인코딩이 있는 경우)다르다문제가 있을 수도 있지만 그럴 가능성은 없습니다).

INNODB를 사용하는 경우 TRANSACTION(BEGIN; 및 COMMIT; 사이)에서 전체 덤프를 실행하려고 할 수 있습니다.

관련 정보