Перейти к контенту

Бэкап и восстановление отдельного раздела форума


Рекомендуемые сообщения

Итак, потер у меня один модератор один раздел используя массовое сокращение. Встала задача восстановить данные именно этого раздела из бэкапа.

 

В связи с тем, что знаний у меня не хватало, я восстановил бэкап в отдельную базу, скопировал файлы форума в другую папку, отредактировал conf_global.php, указав там эту новую базу, пути к файлам и каталогам и URL форума, потом через админку этого форума отредактировал остальные пути.

 

Зайдя на этот новый форум под админом я просто тупо удалил все ненужные мне разделы (обратите внимание, что если вы не исправите в настройках форума пути до папки uploads, то у вас потрутся закаченные файлы из старого форума, так что будьте внимательны).

 

Дальше через phpmyadmin стер все таблицы, которые мне не были нужны, оставив только ibf_polls, ibf_posts и ibf_topics. (Форум у меня версии 2.0.4, в поздних версиях возможно еще какие то таблицы нужно оставить).

 

Дальше нужно было сделать дамп и восстановить его в рабочую базу форума (я вначале протестил дамп на копии рабочей базы). Обратите внимание, что в дампе не должно быть инструкций по удалению существующих таблиц.

Дальше, обратите внимание на то, что с вероятностью в 90% какие то сообщения или темы в этом дампе все равно будут дублироваться, а потому у вас будет при восстановлении данных из бэкапа выскакивать ошибка ”Duplicate key...” и восстановление из бэкапа на этом прервется.

В связи с тем что дамп у меня оказался размером под 1 гиг, особо его не поредактируешь, поэтому я взял и отредактировал dumper.php от http://sypex.net/ , убрав удаление существующих таблиц и создание новых.

 

В связи с частичным дублирование данных, для того чтобы даже при возникновении ошибки ”Duplicate key ...” восстановление бэкапа продолжалось, формат бэкапа должен был быть изменен таким образом, чтобы каждая команда INSERT вставляла только один ряд, а не так, как это делается обычно: INSERT (2,3,4), (3,4,5) и т.д. Для этого были также внесены изменения в файл dumper.php от http://sypex.net/

 

После создания такого вот бэкапа, я восстановил его в рабочую базу форума из шелла, командой

mysql -f -pВашпароль имяБазы < /home/ФайлДампа

потом пересчитал количество сообщений в форуме, сделал обновление статистики форума и все стало замечательно.

 

Надеюсь что эта инструкция поможет вам в подобном случае.

 

Если у кого нибудь получится написать скрипт, который может создавать бэкап конкретного раздела (т.е. выдирать темы и сообщения, относящиеся только к определенному разделу, в зависимости от id нужного форума, было бы вообще замечательно.

 

Все делалось на форуме 2.0.4., MySQL 5.0, размер базы форума около 3-х гигабайт.

 

Измененный dumper.php прилагаю.

 

Просьба модераторам перекинуть тему в FAQ.

dumper_nodrop_nogreate_fullinsert.php

Ссылка на комментарий
Поделиться на других сайтах

Делал похожее чуть инае.

Для каждой из таблиц порядок действий:

1. В более поздней базе SELECT id FROM ... - в цикле собираю массив имеющихся айдишников.

2. В базе из бекапа SELECT id FROM ... WHERE id NOT IN (тут массив айдишников из первого пункта) - в цикле собирал массив айдишников.

3. тупо в пхп-админе экспортировал из бекапа эти записи и в базу импортировал.

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.