Разбить БД 14ГБ

Тема в разделе "Базы данных", создана пользователем Vendetta, 26 июл 2012.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Vendetta

    Vendetta Писатель

    Регистр.:
    24 май 2012
    Сообщения:
    59
    Симпатии:
    14
    Есть таблица БД которая занимает 14ГБ. Ее нужно разбить на части (хотя бы до 800Мб), чтобы поочередно проганять через php скрипт (сразу всю нельзя). sypex имеет ограничения в 4Гб. Читал про Партиции (Partition) но не понял как им пользоватся и поможет мне или нет.
     
  2. lift

    lift Читатель

    Заблокирован
    Регистр.:
    1 июл 2007
    Сообщения:
    2.226
    Симпатии:
    1.377
    Чисто для общего развития хотелось бы узнать откуда такая инфа вылезла т.к. я 200+ гигов ис обрабатывал (70+ гигов в одной таблице) и проблем по большому счету небыло.

    По сабжу можно скопировать строки из одной таблици в другую с лимитом на количество переносимых строк. А после обработки по-отдельности собрать их назад вместе. Если покажеш структуру таблицы то думаю тут достаточно специалистов будет чтоб тебе с точным запросом помочь.

    Еще вариант, сделать дамп всей таблицы, порезать ее на части в том же нотепад++ (хотя я бы тотал коммандером порезал и потом в нотепад++ ошибки резки поправил бы только), после этого в отдельной базе по очереди их обработать твоим скриптом, сделать новые дампы и собрать их в первоначальной таблице дропнув в ней содержимое а у обработаных в нотепаде убрав "DROP TABLE IF EXISTS" из каждого обработанного дампа, тогда они спокойно вместе собраться должны.

    п.с. Для гурманов, порезать дамп можно например HxD. Не текстовый редактор по большому счету, но зато ему открыть и нарезать и 14 и 140 гигов не великая проблема.
     
  3. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    312
    ТС, другие варианты, кроме пхп, не рассматриваются? Стандартными средствами mysql и mysqldump, например.

    А базу порезать и сдампить можно скриптами, что пхп, что bash'ем
     
  4. Vendetta

    Vendetta Писатель

    Регистр.:
    24 май 2012
    Сообщения:
    59
    Симпатии:
    14
    Тотал командер и фар не открывают файлы даже в 2Гб. А если разбивать запросами, то скорее всего придется их очень долго выполнять (исходя из размера БД). С WinHex наверное сделать можно, но хочется более системный подход найти. Как раз интересует через команды mysql и mysqldump. Как ими можно порезать на части?
     
  5. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    312
    Тут, скорее всего, lift имел ввиду стандартные средства разбития файла по определенному размеру(по крайней мере в TC).
    как разбить - даже не могу подсказать, а вот сдампить все базу в один файл, а потом разбить скриптами - могу и подсказать и показать
     
  6. lesorub

    lesorub Жаббервог

    Регистр.:
    22 дек 2008
    Сообщения:
    329
    Симпатии:
    281
    А зачем его открывать? Разбей сначала на части, хотя бы по 800М, и затем уже редактируй части по очереди.
     
  7. Vendetta

    Vendetta Писатель

    Регистр.:
    24 май 2012
    Сообщения:
    59
    Симпатии:
    14
    Чем лутше всего разбивать такой большой файл? Если в тотал командере то как?
     
  8. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.521
    Симпатии:
    1.370
    В тотал командере есть функция разбивки файла Файл->разбить но он разбивает по размеру и потом надо править окончание/начало разбитых файлов, либо поставить в инструменте которым будете дампить "не учитывать ошибки" - несколько запросов потеряется, но зато задампится :)

    PS Вижу тема популярна - надо скриптик набросать.
     
Статус темы:
Закрыта.