2014-10-24 6 views
0

4 백만 개의 데이터가 있으며 일부 데이터는 새로운 MySQL 데이터베이스로 마이그레이션해야합니다. 메모리 오류 및 데이터없이 실행할 수있는 PHP 스크립트가 필요합니다.PHP 스크립트에서 구조가 다른 수백만 개의 mysql 데이터를 다른 데이터베이스로 마이그레이션하십시오.

멀티 패치 프로세스를 사용하는 것이 더 나을 것입니다. 누구든지 PHP와 Linux에서 더 나은 옵션과 방법을 제안 할 수 있습니까?

+2

mysql 자체를 사용하십시오. 수출입. 구조가 다르면 자신의 상황에 따라 직접 작성해야합니다. 서식 파일을 사용하면 사용자 지정 작업을 수행하지 않습니다. –

답변

0

두 데이터베이스가 동일한 서버에 있으면 데이터베이스 전체에서조차도 SELECT INTO로 좋은 성능을 얻을 수 있습니다. 그렇지 않으면 데이터를 내보내고 데이터를로드하여 새로운 구조 13.2.6 LOAD DATA INFILE Syntax으로 가져올 수 있습니다.

PHP를 사용하기로 결정했다면 대기열에서 배경 작업자를 사용하는 것이 좋습니다. 이렇게하면 각 작업자가 소량의 레코드를 처리 할 수 ​​있습니다 (메모리 문제를 피할 수도 있습니다). 이 작업을 실행하는 데 시간이 오래 걸리며 설정하는 데 시간이 오래 걸립니다. 좋은 결과를 얻으려면 php-resque을 사용했습니다 (DB의 데이터를 다시 실행).

+0

제안 사항에 대해 @Peter에게 감사드립니다. 나는 구현하려고 할 것이다. 우리가 exec()를 사용할 수있는 방법이 있습니까? 오프셋과 제한을 사용하여 동일한 페이지를 설정할 수 있으므로 작업을 완료하면 페이지가 새로운 배치를 만들고 이전의 배치는 닫습니다. – sanjeev

+0

@sanjeev - 페이지를 가질 수 있습니다. 배치를 처리 한 다음 제한 및 오프셋을 전달하는 자체로 리디렉션하지만 잠재적으로 동일한 메모리/시간 초과 문제가있을 수 있습니다 (이 경우 Drupal에서 이와 비슷한 것이 있는데 이는 [Drupal Batch API] (https : //www.drupal.org/node/180528)). 내가 너라면 적어도 명령 행에서 실행되는 스크립트를 만들면 PHP 타임 아웃을 피할 수있다. – Peter