큰 mysqldump 출력을 작은 파일로 분할하는 방법
대규모 MySQL 테이블을 데이터베이스 간에 전송할 때 압축된 mysqldump 출력이 최대 파일 수를 초과할 수 있음 대상으로 가져올 수 있는 크기입니다. 이 문제를 극복하기 위해 사용자는 다음 방법을 사용할 수 있습니다.
csplit을 사용하여 덤프 파일 분할
bash 스크립트를 사용하여 mysqldump 파일을 별도의 파일로 분할할 수 있습니다. 각 테이블. 이 스크립트는 csplit 유틸리티를 활용하여 특정 패턴을 기반으로 파일을 생성합니다.
START="/-- Table structure for table/" if [ $# -lt 1 ] || [[ == "--help" ]] || [[ == "-h" ]] ; then echo "USAGE: extract all tables:" echo " DUMP_FILE" echo "extract one table:" echo " DUMP_FILE [TABLE]" exit fi if [ $# -ge 2 ] ; then #extract one table csplit -s -ftable "/-- Table structure for table/" "%-- Table structure for table \`\`%" "/-- Table structure for table/" "%40103 SET TIME_ZONE=@OLD_TIME_ZONE%1" else #extract all tables csplit -s -ftable "$START" {*} fi [ $? -eq 0 ] || exit mv table00 head FILE=`ls -1 table* | tail -n 1` if [ $# -ge 2 ] ; then # cut off all other tables mv $FILE foot else # cut off the end of each file csplit -b '%d' -s -f$FILE $FILE "/40103 SET TIME_ZONE=@OLD_TIME_ZONE/" {*} mv ${FILE}1 foot fi for FILE in `ls -1 table*`; do NAME=`head -n1 $FILE | cut -d$'\x60' -f2` cat head $FILE foot > "$NAME.sql" done rm head foot table*
mysqldump와 함께 --extended-insert=FALSE 사용
이 옵션은 SQL을 생성합니다. 가져올 수 있는 파일로 분할할 수 있는 파일입니다. 분할은 --lines 옵션과 함께 사용하여 파일당 줄 수를 제어할 수 있습니다. bzip2와 같은 시행착오 또는 압축 도구를 사용하여 각 파일 크기에 대한 적절한 줄 수를 결정할 수 있습니다.
위 내용은 더 쉽게 전송하고 가져올 수 있도록 대용량 mysqldump 출력을 더 작은 파일로 분할하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!