2011-01-26 6 views
1

서버 충돌로 인해 서버의 라이브 DB에 백업 (로컬 컴퓨터에 있음)에서 특정 기간 내에 생성 된 일부 행을 복원해야합니다. 백업에서 mysql 부분 복원

내가 backupdatabase에서 이런 일을 할 계획 문제의 행을 선택하려면

SELECT * 
FROM access AS t1 
WHERE AccessId IN (
SELECT AccessId FROM access_completed AS t1 
WHERE (TIMEDIFF(CCompleteDateTime, "2011-01-24 02:00:00") < 23 AND TIMEDIFF(CCompleteDateTime, "2011-01-24 02:00:00") > 0) 
) 

어떻게 라이브 데시벨로 결과 행을 삽입합니까?

+0

동일한 쿼리에서 동시에 수행 하시겠습니까? 그렇다면, 그때 일을하는 절차를 만드는 것이 더 낫습니다, 원하는 시간에 시작하는 하나의 방아쇠를 범람하십시오. 무엇을하고 싶습니까? – B4NZ41

답변

5

백업에 SELECT ... INTO OUTFILE을 사용하고 데이터를로드하려면 LOAD DATA INFILE을 사용할 수 있습니다.

INTO OUTFILE은 선택한 데이터를 LOAD DATA INFILE을 사용하여 구문 분석 할 수있는 형식으로 로컬 파일에 덤프합니다.

가 다른 서버

에 OUTFILE 그리고 다른 서버에

SELECT * FROM [rest of your query] INTO OUTFILE '/tmp/outfile' 

복사 :

LOAD DATA INFILE /tmp/outfile' INTO TABLE access; 

또한 FEDERATED와 함께 일하는 것이 그래서 그냥 덤프와 같이로드해야 테이블. 이렇게하면 주 서버에서 백업 데이터베이스를 쿼리 할 수 ​​있습니다. 그래서 당신은 INSERT INTO access ... SELECT ... FROM federated_access ...을 할 수 있습니다.

+0

화려한 - 당신은 방금 나의 저녁을 구했다. – Muleskinner