2011-10-06 6 views
0

직장에서해야하는 작업에 문제가 있습니다. 저는 회사의 여러 클라이언트에 대한 정보를 보유하고있는 MySQL 데이터베이스를 보유하고 있으며 단일 클라이언트에 대해 이러한 정보를 백업 및 복원하기위한 백업/복원 절차를 만들어야합니다. 명확히하기 위해, 내 고객 A가 자신의 데이터를 잃어 버리면, 나는 클라이언트 B, C의 데이터를 수정하지 않을 것이라는 확신의 데이터를 복구 할 수 있어야합니다 ... 저는 DB 관리자가 아니므로, 나는 표준 mysql 도구 (예 : mysqldump) 또는 다른 백업 도구 (예 : Percona Xtrabackup)를 사용하여이 작업을 수행 할 수 있는지 알 수 없습니다. 백업하려면단일 클라이언트 용 MySQL 백업 다중 클라이언트 DB

는 내 연구 (나의 직관)이 possibile 솔루션에 내 주도 :

  1. 삽입 문 삽입 - 선택 구문을 사용하여 복원 (http://dev.mysql.com/doc를 만들 /refman/5.1/en/insert-select.html);
  2. 이 순서를 SQL 파일에 적절한 순서로 저장하거나이 스크립트가 외래 키 검사를 일시적으로 사용 불가능으로 설정하여 외래 키의 제약 조건을 충족하도록하십시오.
  3. 물론 나는 각 클라이언트 (및 요일)별로 파일을 사용하여 매일 모든 내 클라이언트에 대해이 작업을 수행합니다.

그런 경우에 나는 특정 클라이언트에 대한 데이터를 복원 할 수 있습니다

  1. 나는 그의 모든 데이터가 남아 삭제;
  2. 백업 중에 생성 한 sql 파일을 사용하여 올바른 데이터를 복원합니다.

이렇게하면 클라이언트 B의 데이터를 건드리지 않고도 클라이언트 A의 올바른 데이터를 복구 할 수 있다고 생각합니다. 결국 솔루션이 작동합니까? 동일한 결과를 얻는 더 좋은 방법이 있습니까? 또는 내 문제에 대한 자세한 정보가 필요합니까?

이 질문이 올바른 형식이 아닌 경우 용서해주세요.하지만 여기에 새로운 내용이 있습니다.이 내용이 첫 번째 질문이므로 부정확 할 수도 있습니다 ... 어쨌든 도움을 주셔서 감사합니다.

참고 : mysqldump를 사용하여 전체 데이터베이스를 백업합니다.

답변

0

--where 매개 변수를 사용할 수 있습니다. * client_id = N *과 같은 조건을 제공 할 수 있습니다. 물론 스키마에 대한 정보를 제공하지 않으므로 가정을합니다. 당신이 스타 스키마가있는 경우

, 그때는 아마이 매개 변수의 --tables를 사용하여 (그들은 충분히 작은 고려) 모든 룩업 테이블을 백업 작은 스크립트를 작성하고 클라이언트에 대한 --where 조건을 사용할 수 있습니다 데이터 테이블. 추가 성능을 위해 client_id로 테이블을 분할 할 수 있습니다.

+0

감사합니다 ... 내 테이블이 작아서 사용할 수있는 솔루션으로 들립니다. 그리고 귀하의 가정도 정확합니다, 나는 내 질문에 그 정보를 추가하는 것을 잊어 버렸습니다! – ThanksForAllTheFish

+0

좋아요! 이 답변이 자신에게 도움이된다고 생각한다면 친절하게 답변 해 주시겠습니까? :) – wisefish

관련 문제