Основываясь на SQL-запросах Стана Соколова, мне удалось устранить ужасный беспорядок в моей вики - я не наблюдал за ним в течение полугода, и он был полон спама.
Я должен был очистить его от конкретной даты.
Если вы собираетесь попробовать то же самое, пожалуйста, сделайте резервную копию в первую очередь - эти SQL-запросы могут разрушить вашу вики, убить котят и вызвать беременность.
В этом примере "tr_" - мой префикс, "189" - последний хороший идентификатор страницы, "41" - последний хороший идентификатор пользователя, а "20130215152547" - первая дата входа в спам.
#Update page state to last good before the date
UPDATE tr_page p SET p.page_latest=( SELECT MAX(r.rev_id) FROM tr_revision r
WHERE r.rev_page=p.page_id
AND rev_timestamp <20130215152547) WHERE p.page_id IN
(SELECT r2.rev_page FROM tr_revision r2 WHERE rev_timestamp >=20130215152547);
#Update page length to match actual
UPDATE tr_page p SET p.page_len=( SELECT r.rev_len FROM tr_revision r WHERE
r.rev_page=p.page_id AND r.rev_id=p.page_latest );
#Clean up spam revisions
DELETE FROM tr_revision WHERE rev_timestamp >=20130215152547;
#Clear recent changes
DELETE FROM tr_recentchanges WHERE rc_timestamp >=20130215152547;
#Block all new bad users from ever entering wiki with this login
UPDATE tr_user SET
user_password = '',
user_newpassword = '',
user_email = '',
user_token = ''
WHERE user_id>41;
#Delete pages, staring from the last good id
DELETE FROM tr_page WHERE page_id>189;
#Also, you will need TO clean TABLE tr_pagelinks.
#You will have to do it manually. It's easy, use some editor
#like PHPMyAdmin or SQLyog
#Clean cache
DELETE FROM `tr_objectcache`;
DELETE FROM `tr_querycache`;
DELETE FROM `tr_querycachetwo`;