mysql 덤프 및 가져오기 속도 향상
mySQL 덤프 및 Import 속도를 높이기 위한 문서화된 기술이 있습니까?
여기에는 my.cnf 설정, ramdisk 사용 등이 포함됩니다.
문서화된 기술(가능성이 있는 속도 향상을 나타내는 벤치마크 포함)만을 찾고 있습니다.
InnoDB를 사용한다고 가정하면...
적절한 시간에 Import하고 싶은 기존 mysqldump 출력 파일이 산더미처럼 쌓여 있는 상황입니다.테이블(파일당 1개)은 약 500MB이며 각각 약 500만 행의 데이터가 들어 있습니다.다음 파라미터를 사용하여 삽입시간을 32분에서 3분으로 단축할 수 있었습니다.
= 2innodb_syslog_at_trx_commit = 2
= 256Minnodb_log_file_size = 256M
= innodb_displays = O_DIRECT
또한 상당히 큰 사이즈가 필요합니다.innodb_buffer_pool_size
★★★★★★ 。
삽입이 일회성이었기 때문에 나중에 설정을 되돌렸습니다.장기간 사용할 경우 어떤 기능을 하는지 확인해야 합니다.
Cedric Nilly의 블로그에서 이러한 설정을 사용하는 방법을 찾았습니다.각 설정에 대한 자세한 설명은 MySQL 문서를 참조하십시오.
- 고성능 MySQL 복사본을 가져옵니다.좋은 책이에요.
- 덤프 내 확장 삽입
- mysql < dump file >보다 빠른 mysqlimport를 사용할 수 있도록 --tab 형식으로 덤프합니다.
- 테이블마다 하나씩 여러 스레드를 사용하여 가져옵니다.
- 가능하면 다른 데이터베이스 엔진을 사용합니다.innodb와 같은 고부하 엔진으로의 Import는 매우 느립니다.MyISAM과 같은 비트랜잭션 엔진에 삽입하는 것이 훨씬 빠릅니다.
- Maakit 툴킷의 테이블 비교 스크립트를 참조하여 테이블을 덤프하여 Import하지 않고 갱신할 수 있는지 확인합니다.하지만 백업/복원에 대해 말씀하실 수도 있습니다.
http://www.maatkit.org/ 에는 mk-displays와 mk-displays-restore가 있습니다.
멀티 스레드 mysqldump를 원했다면 더 이상 바라지 마세요.이 도구는 MySQL 테이블을 병렬로 덤프합니다.mysqldump의 래퍼 역할을 하거나 SELECT INTO OUTFILE을 둘러싼 래퍼 역할을 할 수 있는 훨씬 스마트한 mysqldump입니다.속도가 중요한 매우 큰 데이터 크기의 고성능 애플리케이션을 위해 설계되었습니다.여러 CPU와 디스크를 사용하여 데이터를 훨씬 빠르게 덤프할 수 있습니다.
또한 mysqldump에는 덤프를 Import할 때 인덱스를 작성하지 않고 완료 시 일괄적으로 작성하는 등 다양한 옵션이 있습니다.
InnoDB로 Import를 할 경우 가장 효과적인 한 가지 방법은 다음을 수행하는 것입니다.
innodb_flush_log_at_trx_commit = 2
안에서my.cnf
「 」를 Import 합니다., 하다, 하다라고 하면 요.1
산성이 필요하면요
하세요.--opt
mysqldump를 사용하다이렇게 하면 일괄 삽입 구문, 지연 키 업데이트 등이 사용됩니다.
MyISAM 테이블만 사용하는 경우 서버를 중지하고 중지된 서버에 복사한 후 시작하여 테이블을 안전하게 복사할 수 있습니다.
원본 서버를 중지하지 않으려면 다음을 수행하십시오.
- 모든 테이블에 대해 읽기 잠금 설정
- 모든 테이블 플러시
- 파일 복사
- 테이블 잠금 해제
하지만 복사 서버를 설치할 때 서버를 중지해야 할 것 같습니다.
병목현상이 어디에 있느냐에 따라서도 질문이 달라질 수 있습니다.
- 이면 병목현상을 확인할 .
-C
/--compress
을 들다mysqldump
. - 컴퓨터의 메모리가 부족하면(스왑을 개시하는 등), 메모리를 증설할 필요가 있습니다.
그리고요,자,자,자,자,자,자,자,자,자,자,자자,자,자,자,자,자,자,자.--quick
을 들다mysqldump
(그리고)--disable-keys
(MyIsam)
덤프에서 확장 삽입을 사용하면 가져오기가 더 빨라집니다.
외부 키 검사를 해제하고 자동 커밋을 설정합니다.
백업 및 복원에 LVM 스냅샷을 사용하는 방법이 있으며, 이 방법은 사용자에게 흥미로운 옵션일 수 있습니다.
mysqldump를 실행하는 대신 LVM을 사용하여 MySQL 데이터 디렉토리의 스냅샷을 생성하는 것이 좋습니다.LVM 스냅샷을 사용하면 거의 실시간 백업 기능, 모든 스토리지 엔진 지원 및 놀라운 속도로 복구할 수 있습니다.아래 링크에서 인용하자면,
"복구 시간은 데이터 복구 및 표준 MySQL 크래시 복구만큼 빠르며, 훨씬 더 단축할 수 있습니다."
http://www.mysqlperformanceblog.com/2006/08/21/using-lvm-for-mysql-backup-and-replication-setup/
mysqlhotcopy
MyIsam 테이블만 있다면 다른 대안이 될 수 있습니다.
인덱스를 사용하되 너무 많이 사용하지 말고 쿼리 캐시를 활성화하고 빅 데이터베이스에 sphinx를 사용합니다. 다음은 유용한 힌트입니다. http://www.keedeo.com/media/1857/26-astuces-pour-accelerer-vos-requetes-mysql (프랑스어)
언급URL : https://stackoverflow.com/questions/67117/speeding-up-mysql-dumps-and-imports
'programing' 카테고리의 다른 글
Android 장치 이름 가져오기 (0) | 2022.11.19 |
---|---|
python에서 데이터베이스에서 읽은 파일을 추적하려면 어떻게 해야 합니까? (0) | 2022.11.19 |
mysql-maria 개선을 위한 mysqlTurner 팁DB (0) | 2022.11.19 |
원칙 2에서 마지막 삽입 ID를 얻으시겠습니까? (0) | 2022.11.19 |
MySQL에서 FULL OUTER JOIN 구문 오류가 보고되는 이유는 무엇입니까? (0) | 2022.11.19 |