phpmyadmin 특정테이블 덤프 (큰용량)
본문
특정테이블을 다른서버로 옮기는 작업을 하려고 합니다.
옮기려는 테이블에는 약 15,000,000건 정도의 데이터가 들어있습니다.
phpmyadmin 에서 내보내기로 진행해보니 (.sql)
250,000 정도의 데이터만 덤프가 되고, 나머지는 덤프가 안됩니다.
(데이터가 짤려서 저장됩니다.. 이부분 설정을 모르겠어요)
쉘로 접속해서 덤프를 하려해도 권한이 없는지 덤프명령어가 실행이 안됩니다 ( cafe24 호스팅 )
고객센터에 이전요청하기 애매한 부분이 있어서 직접하려고 하는데
이럴땐 어떤방법이 있을까요? 왜 phpmyadmin에서는 온전히 데이터를 못받는지도...
답변 7
아래의 내용을 한번 참고를 해보시겠어요..
1. phpMyAdmin 설정 변경
phpMyAdmin의 설정 파일(config.inc.php)에서 다음과 같은 값을 조정해 보세요:
UploadLimit: 파일 업로드 크기 제한을 늘립니다.
MaxExecutionTime: 최대 실행 시간을 늘려줍니다.
MemoryLimit: PHP의 메모리 제한을 늘려줍니다.
$cfg['UploadLimit'] = '200M'; // 업로드 크기
$cfg['ExecTimeLimit'] = 300; // 최대 실행 시간 (초)
$cfg['MemoryLimit'] = '512M'; // 메모리 한도
2. 데이터베이스 덤프 스크립트 사용
phpMyAdmin을 사용하지 않고 직접 SQL 덤프를 생성할 수 있는 스크립트를 작성해 보세요. 다음은 PHP로 작성한 예시입니다.
<?php
$servername = "your_server";
$username = "your_username";
$password = "your_password";
$dbname = "your_database";
$table = "your_table";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// SQL to get all data from the table
$sql = "SELECT * FROM $table";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// Open file for writing
$file = fopen('dump.sql', 'w');
// Loop through each row and write to file
while($row = $result->fetch_assoc()) {
$values = array_map(function($value) {
return "'" . addslashes($value) . "'";
}, $row);
$sql_insert = "INSERT INTO $table VALUES (" . implode(",", $values) . ");\n";
fwrite($file, $sql_insert);
}
fclose($file);
echo "Dump completed.";
} else {
echo "0 results";
}
$conn->close();
?>
3. 다른 도구 사용
MySQL Workbench: 대량의 데이터를 쉽게 내보내고 가져올 수 있는 GUI 도구입니다.
HeidiSQL 또는 DBeaver와 같은 다른 SQL 클라이언트도 사용할 수 있습니다.
4. 데이터 분할
데이터가 너무 크면, 특정 조건(예: ID 범위)을 설정하여 여러 번에 나누어 덤프를 시도해 볼 수 있습니다. 예를 들어, 1,000,000건씩 나누어 덤프하는 방법입니다.
카페24 고객센터에 mysqldump 사용 허가 또는 방법 문의를 먼저 해볼 수 있을 듯 합니다.
서버작업및 관리해드립니다. 제작문의주세요 ~~^^
mysqldump -u아이디 -p패스워드 dbname > 파일명.sql
이걸로 백업하세요. phpmyadmin 에서는 제약이 있습니다. !-->
phpmyadmin 로 사용해서 데이터를 업로드하는건 크지 않은 건수들만 하시는게 좋습니다. (1만건미만)
1만건 이상이 되는건...putty나 ssh로 접속으로 해서 터미널에서 코멘트 명령으로 처리하시는것을 추천드립니다.
ssh 쓰세요.
큰 DB는 그냥 dump 하셔야 해요~
mysqldump --default-character-set=utf8 -u 사용자ID -p 데이터베이스이름 > 덤프파일이름.sql