Есть ли возможность перенести дамп БД по частям?

Buldozer

Новичок
Есть ли возможность перенести дамп БД по частям?

Есть дамп БД в котором одна из таблиц весит 1 Гб, и 200 мб свободного места у хостера. Необходимо перенести базу на удаленный хост.

Какие есть варианты?
 

nerezus

Вселенский отказник
Разделить на несколько файлов. Логично же?
 

Gorynych

Посетитель PHP-Клуба
Buldozer

вопрос на засыпку - а место под гигабайтную базу-то есть? Потому как дамп, допустим можно посечь на части. Вопрос в том, что даже выполняя его по частям (т.е. добавляя данные в БД на хостинге) Вы не столкнетесь с переполнением места? Как-бы место отводимое под БД тоже регламентируется хостерами.
 

Buldozer

Новичок
Место есть, но на другом сервере.

Предлагаете использовать --where='where-condition' ?
 

Buldozer

Новичок
поясните - где меня глючит, пробую... одна из таблиц 350 метров - ее достаточно поделить на два
PHP:
<?

$query = "select count(*) from story order by id";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
$count = $row["0"];
$count = $count - 1;
$mid = ceil($count/2);

$query = "select id from story order by id limit $mid, 1";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
echo $row["0"].'<br>';

?>
получили "средний" ид, который является автоинкрементным примари кеем - 407033

PHP:
SELECT count( * ) 
FROM story;

807165
PHP:
SELECT count( * ) 
FROM story
WHERE id <=407033;

403573
PHP:
SELECT count( * ) 
FROM story
WHERE id <=407033;

403599
403573 + 403599 = 807172 and 807172 != 807165 ??

и более того, делаю

mysqldump --quick --where='id <= 407033' *** story > story1.sql
mysqldump --quick --where='id > 407033' *** > story2.sql

получаю два файла по ~85 метров хотя база 350

-~{}~ 01.10.06 00:14:

P.S. хостер позволяет работать с мусклом через ssh туннель... можно ли это как-то использовать, и если можно то как?
 

Gorynych

Посетитель PHP-Клуба
даже не знаю, где глучит. У меня суммарный результат команд

...\mysqldump -u*** -p*** --quick --where="id < 60000" base_name tab_name > dump1.sql
...\mysqldump -u*** -p*** --quick --where="id >= 60000" base_name tab_name > dump2.sql

как-то естественно (за счет обрамляющего текста/кода) оказывается больше чем

...\mysqldump -u*** -p*** --quick base_name tab_name > dump_full.sql

в любом случае, я думаю счастья с гигабайтным дампом не будет. Надо бить на части, потому как даже закачивать гиг на удаленный сервер (что возможно удастся вам через ssh-тунель) - это какое-то извращение.
 

Buldozer

Новичок
получаю два файла по ~85 метров хотя база 350
заливаю их на сервер пхпМуадмин показывает размер базы в 302 мб(на первом сервере пхпМуадмин показывает размер таблицы 340 мб)

хотя селект выдает одинаковое кол-во записей.

Это нормально?
 

Buldozer

Новичок
Да действительно:
PHP:
Данные 241,251 KB Индекс 107,638 KB Всего 348,889 KB # на первом
Данные 241,251 KB Индекс 68,308 KB  Всего 309,559 KB # на втором
а что делать то?

-~{}~ 01.10.06 06:36:

в том смысле, а как довести бд на втором сервере до состояние бд на первом?
 

Buldozer

Новичок
ну да... я сначала всю струкутуру слил --no-data, а потом содержимое уже вот этими кусками и заполнил.

-~{}~ 01.10.06 06:55:

причем на следующей таблице еще круче получилось.
PHP:
Данные 456,603 KB Индекс 610,464 KB Всего 1,042 MB     #на первом
Данные 456,603 KB Индекс  34,663 KB Всего   491,266 KB #на втором
 

zerkms

TDD infected
Команда форума
есть подозрения что на новом сервере всё нормально, а у старого какие то проблемы...
 

Buldozer

Новичок
причем если бы сливал не кусками, а целым... то размер бы получился такой же как и на старом, т.е. вот например

получаю два файла по ~85 метров хотя база 350
а если делаю дамп одним файлом - то пишет, что недостаточно квоты на дисковое пространство(cвободно 300 метров)... => ???
 

Фанат

oncle terrible
Команда форума
а я проблемы не вижу.
вижу, что какие-то цыферки не совпадают. Но какая в этом проблема - не понимаю.
 

Buldozer

Новичок
База с теми же данными у хостера весит на пол-гига больше чем та же база на локальном сервере.

Проблема здесь, что либо база перенеслась не полноценно, либо я переплачиваю за лишние пол гига у хостера.
 
Сверху