Страница 1 из 2

Удалили пользователей, восстановить из старого дампа БД

Добавлено: 28.12.2018 10:54
Tugus
Здравия! Вчера произошла авральная ситуация, удалили 80% пользователей. Есть старый дамп БД форума с большей частью пользователей. Возможно ли восстановить пользователей оттуда через phpmyadmin?

Re: Удалили пользователей, восстановить из старого дампа БД

Добавлено: 28.12.2018 10:58
Pazh
Можно, но одним запросом этого не сделать

Re: Удалили пользователей, восстановить из старого дампа БД

Добавлено: 28.12.2018 11:04
Tugus
Pazh, Пробую через экспорт-импорт. Так не получится?

Re: Удалили пользователей, восстановить из старого дампа БД

Добавлено: 28.12.2018 11:06
Pazh
При восстановлении все БД из бэкапа Вы потеряете все данные, которые были введены после создания бэкапа. Если Вам нужно восстановить только определенные данные, то если Вы не знаете хорошо структуру БД - то ничего не сможете самостоятельно сделать.
Юзеры удалялись с сообщениями или посты оставляли?

Re: Удалили пользователей, восстановить из старого дампа БД

Добавлено: 28.12.2018 11:16
Tugus
Pazh писал(а): 28.12.2018 11:06 Если Вам нужно восстановить только определенные данные, то если Вы не знаете хорошо структуру БД
да, этот вариант наш.
Pazh писал(а): 28.12.2018 11:06 Юзеры удалялись с сообщениями или посты оставляли?
имеется копия форума, где посты на месте, а пользователи даже если они авторы постов, удалены.

Что сделал теперь. Импортировал таблицу phpbb_users из дампа-запасника в дамп с удаленными. Они появились в списке пользователей на форуме (меню -> список пользователей). Но они не включились как авторы своих постов. Надо что-то еще сделать.

Re: Удалили пользователей, восстановить из старого дампа БД

Добавлено: 28.12.2018 11:18
Pazh
Tugus писал(а): 28.12.2018 11:16 Импортировал таблицу phpbb_users из дампа-запасника в дамп с удаленными
В результате этого Вы потеряли всех зарегистрированных после создания дампа юзеров. Надеюсь бэкап текущей базы (до импорта таблицы phpbb_users) у Вас остался?

Re: Удалили пользователей, восстановить из старого дампа БД

Добавлено: 28.12.2018 11:21
Tugus
Pazh писал(а): 28.12.2018 11:18 Вы потеряли всех зарегистрированных после создания дампа юзеров.
не понял, почему так ? Импортировал из базы А (старая) таблицу с юзерами. Потом экспортировал ее в базу Б (актуальная). Перед этим в базе Б. переименовал таблицу с юзерами на phpbb_users_old. Хочу понимать, где косячу?
Pazh писал(а): 28.12.2018 11:18 Надеюсь бэкап текущей базы (до импорта таблицы phpbb_users) у Вас остался?
о, конечно. описываемые эксперименты все проводятся на копиях на локалке.

Re: Удалили пользователей, восстановить из старого дампа БД

Добавлено: 28.12.2018 11:24
Pazh
Начинай:
1. Вам нужно восстановить таблицы phpbb_users и phpbb_user_group в (самое простое) отдельную БД - назовем ее DB2. А боевая база DB1
2. Выполнить запросы, заменив в них DB1 и DB2 на свои значения:

Код: Выделить всё

INSERT INTO DB1.phpbb_users select y.* from DB2.phpbb_users y where y.user_id not in (select x.user_id from DB1.phpbb_users x);
insert into DB1.phpbb_user_group select y.* from DB2.phpbb_user_group y where y.user_id not in (select x.user_id from DB1.phpbb_user_group x;
Отправлено спустя 13 минут 37 секунд:
3. А далее начинаются танцы с бубном с таблицей сообщений:

Код: Выделить всё

update db1.phpbb_posts p set p.poster_id = (select x.user_id from db1.phpbb_users x where x.username=p.post_username) where p.poster_id=1;
Отправлено спустя 8 минут 18 секунд:
а потом еще нужно восстановить удаленные записи в таблицах phpbb_acl_users, phpbb_attachments, phpbb_banlist, phpbb_bookmarks,
phpbb_drafts, phpbb_forums_watch, phpbb_poll_votes, phpbb_privmsgs_folder,
phpbb_privmsgs_rules, phpbb_privmsgs_to, phpbb_profile_fields_data,
phpbb_user_notifications, phpbb_warnings, phpbb_zebra
примерно по сценарию из пункта 2 запрос 1
Далее синхронизировать все подфорумы.

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

Еще как вариант - если БД не большая, то экспортировать полностью обе БД и сравнить например в WinMerge или KDiff3 оба файла и слить их в один - возможно - это будет самый простой для Вас способ - начните с него. Если БД не большая

Re: Удалили пользователей, восстановить из старого дампа БД

Добавлено: 28.12.2018 12:07
Tugus
Pazh, бекап от 27 ноября. Тогда заканчивался переезд на движок с другого движка. Поэтому новых юзеров месяц несколько шт, не страшно потерять. То есть по логике можно просто закинуть тот бекап как рабочий на хостинг и руками скопировать в него все появившиеся за месяц посты, присвоив авторство, чьи они в оригинале. Через админку.
В чем большое НО. почти месяц наводили порядок в темах. Их чистили, переносили, создавали новые разделы, правили ссылки внутри постов (много) и чистили руками сообщения от кусов бб-кодов от старой сборки и все в таком духе.

Объем. юзеров было за 6 тыс, юзеров с постами где-то треть или четверть из них. DB 200 000 Kb.

Вопрос. Танцы с бубном по сравнению с описанным более простой вариант?
Pazh писал(а): 28.12.2018 11:46 2. Выполнить запросы, заменив в них DB1 и DB2 на свои значения:

Re: Удалили пользователей, восстановить из старого дампа БД

Добавлено: 28.12.2018 12:08
romaamor
Pazh писал(а): 28.12.2018 11:46 Возможно проще сделать наоборот (если бэкап свежий) - восстановить его, и на него накатаить именения из текущей БД (с удаленными юзерами) - нужно сравнивать.
А ещё проще установить расширение - авто быкап. Или взять за правило делать копию хоть раз в три дня.

Re: Удалили пользователей, восстановить из старого дампа БД

Добавлено: 28.12.2018 12:12
Pazh
Tugus, в таком случае я бы советовал идти длинной, но надежной дорОгой - постепенно вручную восстанавливать удаленные данные в текущей БД из бэкапа.
romaamor, поздно пить Боржоми, когда почки отвалились

Re: Удалили пользователей, восстановить из старого дампа БД

Добавлено: 28.12.2018 12:16
Tugus
romaamor, Копии делались на хостинге, а сегодня выяснили что с ними что-то пошло не так, хостер написал, разбираются.
romaamor писал(а): 28.12.2018 12:08 установить расширение - авто быкап
принято к сведению. Спасибо!
Pazh, блин. всяко не айс

Re: Удалили пользователей, восстановить из старого дампа БД

Добавлено: 28.12.2018 12:18
Pazh
Tugus, читай личку, к сожалению - легко не будет.

Re: Удалили пользователей, восстановить из старого дампа БД

Добавлено: 28.12.2018 12:18
Tugus
Pazh писал(а): 28.12.2018 11:46 2. Выполнить запросы, заменив в них DB1 и DB2 на свои значения:
То есть, в таблицах с юзерами указывается, к какой БД они принадлежат? Не смейтесь за глупые вопросы, у меня практически первое свидание с phpmyadmin :geek:

Re: Удалили пользователей, восстановить из старого дампа БД

Добавлено: 28.12.2018 12:20
romaamor
Tugus писал(а): 28.12.2018 12:07 Поэтому новых юзеров месяц несколько шт, не страшно потерять
Ну для этого существует редирект.
Tugus писал(а): 28.12.2018 12:07 Поэтому новых юзеров месяц несколько шт, не страшно потерять.
Юзоры не долщны потерятся. Если Вы адекватно сделали бекап БД, и потом его заменили на хостинге.. Хотя это зависит от Вашего интернет провайдера.