[요약] MySQL 대용량 Restore(Import)
* 개요
나는 3천만개 에 대해서 ID 구간별로 1000개씩 쪼개서 3000개 쿼리를 만들었지.
* 14GB SQL 사례
질문 : 14GB 의 SQL import 어떻게 합니까?
- 답변1] max_allowed_packet 기본값 1Mb => 1Gb 로 올리고
net_buffer_length (네트워크 버퍼?) 1M 으로 올리고
foreign_key_checks = 0 ( 외래키 체크 안함..)
상태로
source 명령 이용하여 동일하게 import
(SQL 그대로 쓰되 세팅 변경하여 빠르게... )
의문 : 근데 max_allowed_packet 이 1GB 면 14GB 는 안되는거 아닌가?
- 답변2] BigDump(유틸) 이용하란 의견
https://www.ozerov.de/bigdump/
- 답변 3] SELECT FROM INTO 구문 사용하라는 의견
CSV 로 DUMP 했다면 '미친듯이 빠르다'
* 1000만개 레코드 사례
- SELECT FROM INTO / LOAD INFILE INTO TABLE 구문 사용
* LOAD DATA ... 사용법
http://moonlighting.tistory.com/140
- CSV 로 EXPORT 해야 사용..
- 테이블에 인덱스 있으면 느리니, 먼저 INDEX 없이 올린후 나중에 INDEX 생성
- 2GB 가 10분내에 ..
* 참고 : dump 시 진행상황 보기
mysqldump -u root -p --all-databases | pv --progress --size 1000m > dump.sql
* 참고 2 : 나눠서 dump