2012-01-18 2 views
5

나는 최근에 내가이 실행하려고 한 나의 새로운 DB에 내 옛날 DB를 이동, 난 내 호스팅을받을 통해 회사를 전환하기로 결정mysqldump는 부분 데이터베이스

mysqldump --host=ipaddress --user=username --password=password db_name table_name | mysql -u username -ppassword -h new_url new_db_name 

을하고이 듯 잘 작동합니다 ..하지만 내 데이터베이스가 너무 괴상한 때문에, 나는 내 테이블의 중간에 시간 초과 오류가 발생합니다. 그래서 내 테이블의 일부에 mysqldump을 수행하는 쉬운 방법이 있는지 궁금합니다.

나는 작업 흐름은 다음과 같이 보일 것입니다 가정 것 :

create temp_table 
move rows from old_table where id>2,500,000 into temp_table 
some how dump the temp table into the new db's table (which has the same name as old_table) 

하지만 난 그 단계를 수행하는 방법을 정확히 모르겠어요.

+0

문제가 해결 될지 확실하지 않지만 http://dev.mysql.com/doc/refman/5.5/en/mysqldump.html의'--quick' 옵션을 확인하십시오. 큰 테이블에 유용합니다. –

답변

5

--where="id>2500000"mysqldump 명령 끝에 추가합니다. 두 번 덤프 경우 경우 MySQL 5.1 Reference Manual

mysqldump 명령은

mysqldump --host=ipaddress \ 
    --user=username \ 
    --password=password \ 
    db_name table_name \ 
    --where="id>2500000 

과 같을 것이다. 두 번째 덤프에는 테이블 생성 정보가 포함됩니다. 그러나 다음에 새 행만 추가하려고합니다. 따라서 두 번째 덤프의 경우 mysqldump 명령 줄에 --no-create-info 옵션을 추가하십시오.

+0

실제로이 명령은 내 테이블을 "id> 2500000"행으로 대체했습니다. 그래서 내가 끝난 일은 그들 모두를 새로운 테이블로 옮기고 두 테이블을 [이 포스트]와 합병하는 것이 었습니다. (http://stackoverflow.com/questions/725556/how-can-i-merge-two-mysql- 테이블) – BananaNeil

+0

@BananaNeil 두 덤프가 모두 포함될 때 발생할 수 있습니다. mysql 명령 행에'--no-create-info' 옵션을 추가하여 데이터 만 덤프하려면. –

2

이 작업을위한 도구를 개발했습니다. mysqlsuperdump라고하고 여기에서 찾을 수 있습니다 : 그것은으로

https://github.com/hgfischer/mysqlsuperdump

당신이 각 테이블에 대한 전체 "WHERE"절을 speciffy 수 있으므로 각 테이블에 대해 서로 다른 규칙을 지정할 수 있습니다.

각 열의 값을 덤프의 각 테이블로 바꿀 수도 있습니다. 이는 예를 들어 개 _ 환경에서 사용할 데이터베이스 덤프를 내보내려는 경우에 유용합니다.

관련 문제