- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Вообщем есть проблема.
Сегодня несколько полетела бд форума.
Что случилось я понять не могу, знаю что исчезли как минимум пару пользователей (причем подчистую) и нескоко тем (аналогично)...
(это то что я только заметил) Оследить остальные изменения и проблемы, к сожалению не могу, потому как в большом море информации трудно все запомнить. Но увеврен что на этом прболемы не закончатся.
Вообщем есть дампы несколько дневной давностию.. Так вот, как ГРАМОТНО смержить старую базу в новую, и не возникнет ли других каких-то проблем?
Вообщем кто имеет возможность что-то подсказать или сталкивался с подобным, будте добры отпишитесь.
Проблема критичная и не требует отлагательств.
Спасибо.
Можно взять дампы текущей базы и бэкапной и сравнить diff'ом
diff -uP old.sql curr.sql > lost+found.sql
дальше изучать lost+found.sql, утерянные сообщения и пользователи должны найтись под минусами
экспериментировать лучше на тестовой базе
спасибо , разобрался.
решил проблему по другому.
кстати, дифом при таки объемах базы как у меня не советую пользоваться, да и я задолбался бы сравнивать :)
решил проблему по другому.
Поделитесь идей, как :) Мне вот, к примеру, интересно ☝
Как вариант: если есть уникальные индексы на таблицах, влить через INSERT IGNORE.
Поделитесь идей, как Мне вот, к примеру, интересно
Например, создать новую базу, залить в неё старый дамп, поверх него залить новый дамп (естественно, без удаления/создания таблиц), проверить получившийся коктейль и если всё ок - перелить в рабочую базу.
Например, создать новую базу, залить в неё старый дамп, поверх него залить новый дамп (естественно, без удаления/создания таблиц), проверить получившийся коктейль и если всё ок - перелить в рабочую базу.
это то понятно, я то думал, может чо нить поумнее придумали 😎
подошел к вопросу несколько проще, с одной стороны...
если полетели пользователи и их данные, то проще всего сделать следующее
- найти все таблицы в которых используются данные пользователя (может отличаться от установленных модов)
- экспортировать эти данные
- импортировать
что бы понять смысл
select * from phpbb_favorites where user_id = 3586;
select * from phpbb_medal_user where user_id = 3586;
select * from phpbb_posts where poster_id = 3586;
select * from phpbb_posts_text where post_id in (select post_id from phpbb_posts where poster_id = 3586);
select * from phpbb_privmsgs where privmsgs_from_userid = 3586 || privmsgs_to_userid = 3586;
select * from phpbb_privmsgs_text where privmsgs_text_id in (select privmsgs_id from phpbb_privmsgs where privmsgs_from_userid = 3586 || privmsgs_to_userid = 3586);
select * from phpbb_topics where topic_poster = 3586;
select * from phpbb_topics_watch where user_id = 3586;
select * from phpbb_user_group where user_id = 3586;
select * from phpbb_users where user_id = 3586;
select * from phpbb_vote_voters where vote_user_id = 3586;
а вот и экспорт данных
create table _medal_use select * from phpbb_medal_user where user_id = 3586;
create table _posts select * from phpbb_posts where poster_id = 3586;
create table _posts_text select * from phpbb_posts_text where post_id in (select post_id from phpbb_posts where poster_id = 3586);
create table _privmsgs select * from phpbb_privmsgs where privmsgs_from_userid = 3586 || privmsgs_to_userid = 3586;
create table _privmsgs_text select * from phpbb_privmsgs_text where privmsgs_text_id in (select privmsgs_id from phpbb_privmsgs where privmsgs_from_userid = 3586 || privmsgs_to_userid = 3586);
create table _topics select * from phpbb_topics where topic_poster = 3586;
create table _topics_watch select * from phpbb_topics_watch where user_id = 3586;
create table _user_group select * from phpbb_user_group where user_id = 3586;
create table _users select * from phpbb_users where user_id = 3586;
create table _vote_voters select * from phpbb_vote_voters where vote_user_id = 3586;
если пользователей много, все делается через переменную или просто через ИЛИ :)
мне помогло, надеюсь кому-то тоже...
не стал рисковать и мержить все , сильно опастно было.
кстати, дифом при таки объемах базы как у меня не советую пользоваться, да и я задолбался бы сравнивать :)
Да, на быстро растущей базе плохой способ. Лучше тогда на будущее включить bin-log и потом отслеживать утерянные изменения по нему.