2013-09-23 4 views
2

위키피디아 DB 복사본 (약 50GB)을 만들려고하지만 최대 SQL 파일에 문제가 있습니다.MYSQL 크기가 큰 GB의 SQL 파일 삽입

나는 리눅스 분할 유틸리티를 사용하여 300MB의 청크로 크기 파일을 GB로 분할했습니다. 예 :

split -d -l 50 ../enwiki-20070908-page page.input. 

평균 300MB 파일은 내 서버에서 3 시간이 걸립니다. 우분투 12.04 서버 OS와 MySQL 5.5 서버를 가지고 있습니다.

나는 다음과 같이 시도하고있다 :

mysql -u username -ppassword database < category.sql 

참고 :이 파일은 삽입 문으로 구성되며, 이러한 CSV 파일이 없습니다.

위키 피 디아는 다운로드를 위해 데이터베이스 덤프를 제공하므로 누구나 위키 백과 사본을 만들 수 있습니다. 여기에 예제 파일이 있습니다 : Wikipedia Dumps

내 MySQL 서버 설정 때문에 가져 오기가 느리다고 생각하지만 무엇을 변경해야할지 모르겠습니다. 알맞은 프로세서와 2GB RAM이있는 컴퓨터에서 표준 Ubuntu MySQL 구성을 사용하고 있습니다. 누군가 내 시스템에 적합한 구성으로 나를 도울 수 있습니까?

innodb_buffer_pool_size를 1GB로 설정하려고 시도했지만 실제로 사용하지 않았습니다.

+0

왜 category.sql을 가져 오시겠습니까? 유용한 정보가 거의 없습니다. – svick

+0

SQL 삽입 구문을 사용하여 50G SQL 삽입 파일을 여러 300G 삽입 파일로 분할하는 방법이 궁금합니다.내가 뭔가를 놓친 것일 수도 있습니다 ... – Aijazs

+0

@Aijazs :: 분할 사용하여 파일을 변환하는거야 300 MB의 청크. 실제로 모든 덤프는 각 삽입 구문이 '/ r'(Enter) delimeter로 구분되는 형식으로 이루어집니다. 그래서 저는 줄 번호를 기준으로 나누고 있습니다. – Imran

답변

3

메모리가 50GB 미만이므로 전체 데이터베이스를 메모리에 버퍼링 할 수 없으므로 병목 현상은 디스크 하위 시스템의 쓰기 속도입니다.

트릭은 수입 속도를 :

  • 의 MyISAM은 트랜잭션이 아니므로 훨씬 빠른 단일 스레드 삽입한다. 라인별로 인덱스 업데이트 라인을 방지하기 위해 INNODB
    • 사용 ALTER TABLE .. DISABLE KEYS에 다음의 MyISAM에 ALTER 테이블을로드하려고 (의 MyISAM 만 해당)
    • 이 삽입 규모 이상 bulk_insert_buffer_size를 설정 (의 MyISAM 만)
    • unique_checks = 0 그래서 그 독특한 설정 제약 조건은 검사되지 않습니다. 자세한 내용은

, Bulk Data Loading for InnoDB Tables in MySQL Manual를 참조하십시오.

참고 : 원본 테이블에 외래 키 제약 조건이있는 경우 MyISAM을 중간 형식으로 사용하는 것은 좋지 않습니다.

+0

'변경 TABLE ... DISABLE KEYS'는 가장 도움이 될만한 것입니다. 이후에'ENABLE KEYS'를 잊지 마세요 :) –

+0

['category' 테이블] (https://www.mediawiki.org/wiki/Manual:Category_table)에는 외래 키가 없습니다. 그러나 관련 ['categorylinks' 테이블] (https://www.mediawiki.org/wiki/Manual:Categorylinks_table)에는'pages' 테이블에 외래 키가 있습니다. – svick

+0

글쎄, 당신의 솔루션이 작동 감사합니다, 그것은 극적으로 프로세스 속도. 이제는 2-3 시간 정도 소요됩니다. 나는 놀랐다 :) – Imran

1

데이타베이스가 트랜잭션 지향적이지 않다면, 보통 InnoDB보다 훨씬 빠른 MyISAM을 사용하십시오. 테이블 파티셔닝/샤딩 기술을 사용하여 연구 했습니까?

거대한 MyISAM을 InnoDB로 변환하면 다시 성능 문제가 발생하므로 잘 모르겠습니다. 그러나 키를 비활성화 및 다시 활성화하면 도움이 될 수 있습니다 ...

관련 문제