Vous pouvez contribuer simplement à Wikibéral. Pour cela, demandez un compte à adminwiki@liberaux.org. N'hésitez pas !


Wikiberal:Maintenance/BD

De Wikiberal
Aller à la navigation Aller à la recherche


Restructuration table des utilisateurs

Démarré le 7/2/2015.

6500 comptes bidons (spam) ont été supprimés. Reste 118 utilisateurs enregistrés à ce jour.

Un souci est qu'environ 750 comptes de spam (et d'autres sans doute) ont eu le temps de faire de l'édition de pages, d'avoir de l'activité historiée etc. Pour avoir des tables propres, il faudrait aussi nettoyer ce qui peut l'être de relatif à ces comptes de spam.

Pour cela, il serait intéressant de disposer d'un critère SQL simple pour distinguer le bon grain de l'ivraie. L'identificateur utilisateur est un excellent candidat ... mais hélas, pour 118 utilisateurs, le user_id se promène entre 1 et 16400.

... on va donc voir si on peut au moins réduire un peu ce spectre, en recasant les derniers utilisateurs (avec peu de contributions) avec des user_id <200. Attention, des user_id qui sont libres dans la table user, peuvent encore être utilisés dans d'autres tables (eg revision table).


Problème : la liste des contributions de Vincent04 continue d'afficher "Bob" en haut à gauche ??

  • vidé la table cache L10cache -> sans effet
  • vidé les 6 tables (logging, page, pagelinks, properties, revision, searchindex) contenant "Bob" des champs concernés -> sans effet
  • Bob = 626F62 en hexadécimal. Mais cette recherche ne ramène rien.
  • vidé la table Cur (obsolète) -> sans effet

Le nom serait-il encrypté dans une chaine ?

Y aurait-il un autre niveau de cache quelque part ? Fort probable. Comment le raz ?

Un point : la regénération du mdp a entrainé, automatiquement, la raz de l'enregistrement Vincent04 ... avec l'ancien nom et nomRéel. Sans intervention manuelle. Donc les vieilles infos sont bien stockées qq part.


Réaffectation des user_ids

Les user_id supprimés de la user table, mais encore présents dans la revision table semblent poser problème. Même quand on les y supprime (10 essais à 100% infructueux). Par contre les user_id supprimés de la user table, mais également déjà inexistants dans la revision table semblent OK.

Un essai sur CompteTest1 semble concluant (mdp ok, historique des contribs ok).

Je vais d'abord purger le plus complètement les user_id apparemment disponibles.

User Table intersect Revision table : rev_user dispos : RIEN (à traiter)

user_id qui posent problème (à ne pas utiliser) : 22 Taisei Yokusankai, 23 Julien, 32 PCarbonnelle, 34 Pseudomoi, 36 Caton, 43 Elvin, 45 Wart Dark, 47 Internatiolu, 48 Soleil, 61 Franz1984, 63 Flechebleu, 64 Kae, 66 Turuk, 71, 91 Magazine nagg, 108 LemoineFou, 118 Labbekak, 120 Coco68, 128, 129, 131, 168, 169

user_id dispos : 175, 176, 179, 181, 182, 184, 186, 187, 188, 190, 192,

CompteTest1    16308 -> 31 , semble ok EC=0 
FJollien       16307 -> 20 , semble ok EC=0 19/1/2015
Citronne       16306 -> 21 , semble ok EC=0 13/1/2015
Ggiroche       16305 -> 33 , semble ok EC>0 29/12/2014
Alu            16304 -> 162, semble ok EC=0 16/12/2014
Ticino         16303 -> 24 , semble ok EC=0 10/12/2014
Regis servan   16299 -> 35 , semble ok EC>0  6 nov 2014
Gordievski     16298 -> 37 , semble ok EC=7  4 nov 2014  créé par Copeau
H16            16294 -> 30 , semble ok EC=0 31/5/2013
Brutzkus       11543 -> 38 , semble ok EC=5  6 avril 2013 autocréation
Un.citoyen     10342 -> 39 , semble ok EC=2  5 février 2013 autocréation
Fornost        10184 -> 42 , semble ok EC=1118 2 février 2013 (1 page crée : [[Cartel]], reste = corrections)
Antoinedestex   8578 -> 40 , semble ok EC=6  20 janvier 2013 autocréation
Vincent Andrès  7731 -> 44 , semble ok EC=713 à terminer
EDV             7393 -> 41 , semble ok EC=9  1 janvier 2013 autocréation
Herazor         6799 -> 46 , semble ok EC=11 23/12/2012 autocréation
Internaciulo    6182 -> nope           EC=21 13/12/2012 compte supprimé (délétion sans justif)
Crapez          5859 -> 49 , semble ok EC=17
Théache         4129 -> 50 , semble ok EC=15
LouisRouanet   16309 -> 56, semble ok  8/2/2015 créé par VA
Yesberal       16310 -> 57, semble ok  8/2/2015 créé par VA
Bender          1654 -> 58 ok
NYSTEX          1635 -> 59 ok
Agricola       16311 -> 60 ok 11/2/2015 créé par VA
Sjperrin       16312 -> 62 ok 13/2/2015 créé par VA
JonathanFonteyne 16313 -> 65 ok 17/2/2015 créé par VA
Fadior           16314 -> 67 ok 22/2/2015 créé par VA
Jérôme Alexandre  2564 -> 69 ok, mais souci avec les accents
Danf32            2071 -> 70 ok EC=52
Vlana             1438 -> 73 ok EC=4
Thierry Guinhut   1342 -> 74 ok EC=3
Trevor            1210 -> 75 ok EC=77
Gil Grissom       1207 -> 76 ok EC=17
Charlus           1205 -> 77 ok EC=18
Toto              1191 -> 78 ok EC=7
Altermind2012     1068 -> 79 ok EC=31
Dexter79           968 -> 80 ok EC=30
Gidmoz             897 -> 86 ok EC=4
Pat  grenier       888 -> 87 ok EC=6
Ulrich.genisson    824 -> 88 ok EC=6
Gio                766 -> 89 ok EC=307
ElRedentor         765 -> 90 ok EC=5
Liberalix          755 -> 92 ok EC=75
Budelberger        726 -> 93 ok EC=4
JBJ                712 -> 94 ok EC=27
Jo moreau          705 -> 95 ok EC=7
Benjieconstant     677 -> 96 ok EC=10
Amar               669 -> 97 ok EC=7
Alliterator        655 -> 98 ok EC=10
Cribouille         651 -> 99 ok EC=15
Neuneu2k             616 -> 100 ok EC=9
Skit                 568 -> 101 ok EC=9
Bertrand lemennicier 563 -> 102 ok EC=2
Leo Castellote       557 -> 103 ok EC=16 (Léo Castellote => souci d'accent)
Willy                527 -> 104 ok EC=17
Roxxestar            525 -> 105 ok EC=56
Melt core            517 -> 106 ok EC=44
Wogr                 515 -> 107 ok EC=5
Orlinus            16315 -> 109 ok
Eurobas              495 -> 110 ok EC=10
BasLap               492 -> 111 ok EC=
Pregentil            490 -> 112 ok EC=15 (Prégentil => souci d'accent)
G                    479 -> 113 ok EC=328
Feldman              478 -> 114 ok EK=38
Simon                458 -> 115 ok EC=5
Ikichi               453 -> 116 ok EC=6
Rpkx                 433 -> 117 ok EC=33
Jack Birner          428 -> 119 ok EC=5
Carcat               410 -> 121 ok EC=5
Garcon               395 -> 122 ok EC=23
Sagamore             372 -> 123 ok EC=46
Jean Demesure        360 -> 124 ok EC=16
L'être Bil           343 -> 125 ok EC=88 souci d'accent
EGave                325 -> 126 ok EC=12 
Pierre Driout        304 -> 127 ok EC=62
Soseducation         296 -> 133 ok EC=12
ShoTo                288 -> 134 ok EC=6
Mementopratique      282 -> 135 ok EC=18
Geslot nicolas       280 -> 140 ok EC=31
Adrian               266 -> 146 ok EC=50
Wali                 253 -> 148 ok EC=118
Sloonz               237 -> 153 ok EC=16
NoName               500 -> 155 ok EC=1
Librekom             501 -> 160 ok EC=0
Jesuisunhommelibre   502 -> 161 ok EC=0
ChefAlain            503 -> 163 ok EC=0
Pandi                504 -> 164 ok EC=0
David Cotte          505 -> 165 ok EC=0
Domi2                506 -> 166 ok 
voir en BD.


On peut aussi voir avec ce tableau que :

  • pour 4 (petits) comptes valides en autocréation, on attrape environ 4000 comptes de spam. Avec des heures de nettoyage derrière. Beau bilan !
  • le rythme de création de comptes valides par un admin est d'environ 1/15 jours ... du même ordre qu'en autocréation.

L'autocréation n'apporte rien ... sauf une dégradation diffuse et globale de la BD (et pas juste 1 table) et donc des heures de travail de nettoyage. (Certains comptes de spam réussissent à réaliser des milliers d'éditions.)


Purge Table des utilisateurs - 5/2/2014

Il y a environ 6500 comptes bidons pour une centaine de comptes valides. Soit 65 fois trop. Cela impacte évidemment la table utilisateurs (ingérable en l'état), mais aussi les tables liées à la table utilisateur, ainsi que les tables d'historiques (car environ 1 millier de comptes spams ont fait de l'édition de pages, avec des milliers d'occurences dans certain cas).

Résultat : la taille de certaine tables est multipliée par 10, par 20, par 65. Les sauvegardes sont rallongées d'autant et on sauvegarde 95% de junk.

Bref, il faut essayer de nettoyer.

Nettoyage effectué avec adminer-editor. Editeur (très sommaire) de tables.

Table mw_user.
6675 rows. Dont une grande majorité de comptes bidons (qui ont pourtant leur emailAuthentication etc).
J'ai pris soin des derniers comptes créés (dans les 6 derniers mois).
5546 rows ont editCount=0, donc a priori, n'ont jamais rien édité.
Il ne semble pas qu'on puisse purger aussi bien avec un autre critère.
Un échantillon de ces comptes ne permet pas de les distinguer de comptes de spam.
5546 rows avec editCount=0 ont été supprimés.

Reste 1129 rows
757 rows avec editCount=1
Un échantillon de ces comptes ne permet pas de les distinguer de comptes de spam.
757 rows avec editCount=1 ont été supprimés.

Reste 374 rows
à ce stade, on peut envisager un nettoyage à la mimine.
Les rows avec editCount=2 (encore du spam à 95%) sont supprimés après validation à la main.

Reste 192 rows.
Un croisement avec la liste des utilisateurs est enfin possible.
A part 1 ou 2 exceptions, TOUS les utilisateurs bloqués indéfiniment sont supprimés.

Les utilisateurs inconnus, qui n'ont pas fait l'effort de se présenter, avec peu de contributions 
et dont les comptes sont inactifs depuis plus de 5 ans sont aussi supprimés.

Reste 118 rows
118/6675 = 1.76% < 2%
Environ 98% (6500) de comptes de spam ont été supprimés.

Pour info, l'essentiel des comptes de spam avaient passé positivement les validations automatiques d'email (donc de facto inutiles).

La procédure :
editCount=0 = suppression automatique
editCount=1 = suppression automatique
editCount=2 = suppression avec un peu de contrôle manuel
comptes bloqués indéfiniment = suppression automatique


Maintenance des tables

mw_text

mw_text	InnoDB	utf8_general_ci	1,944,846,336	7,372,800	226,492,416	124,305	~ 376,363	 
mw_text	InnoDB	utf8_general_ci	1,945,894,912	7,405,568	1,981,808,640	124,377	~ 46,186	 

old_id : 4102-13996 = 500 1° lignes, 4102-16801 = 2500 1° lignes (et non pas ~12000)
4102 : 2005 08 06
16801 : 2006 06 15 qui est le dernier timestamp non vide

En fait, toutes les colonnes obsolètes sont soit vides soit remplies avec une valeur par défaut après la ligne 16801.

  • 11 colonnes ... dont 8 obsolètes. Et 8 index également obsolètes. Obsolètes depuis un bail, déjà en version 1.17 il n'y avait plus que 3 colonnes. On doit donc les trainer depuis longtemps. En effet, depuis 2005, alors qu'ils sont obsolètes depuis 2006.
  • On va essayer de virer ces colonnes obsolètes en douceur.
  • En les renommant une à une d'abord. Pour le renommage, les noms de colonnes sont suffixés _obsolete.
  • aucun impact observé.
  • Une fois qu'on est assuré que le renommage a été sans effet, on vire les colonnes. Une à une également.
103863 rows en tout
old_comment : 1075 rows != ''. range=4102-16801, donc plutôt au début. https://www.mediawiki.org/wiki/Manual:Old_table ... ça date en effet des versions <= 1.4. Sauvegarde et délétion.
old_title   : 2434 rows != ''. range=4102-16801. idem.
idem pour toutes les colonnes obsolètes.
Délétion terminée 26/2/2015 à 12:35. Aucun impact apparent sur les pages. Tout semble s'être bien passé. OOUUFF !


Tables ou colonnes obsolètes (pour v 1.20.2)

NB : En octobre 2014-février 2015, wikiberal tourne sur une version mediawiki 1.20.2, et la BD comprend encore des tables obsolètes (inutilisées) depuis la version 1.4.

Il s'agit de tables totalement obsolètes, où dont une partie (quelques colonnes) sont devenues obsolètes.

Le 26/2/2015, la BD a été entièrement nettoyée de ses tables/colonnes obsolètes. (une dizaine de tables droppées).

  • https://www.mediawiki.org/wiki/Manual:Text_table
    • la table majeure, qui pèse 1GB (au 13/2/2015)
    • All fields in the text table except old_id, old_text and old_flags are not needed anymore and can be safely deleted.
    • old_flags peut prendre la valeur utf-8
    • Table complètement nettoyée le 26/2/2015


Tables bientôt obsolètes


Autres tables

6E65777573657273 637265617465 20130513221231 16012 2 KarriBrog 16012	90614	0	KarriBrog	0
N E W U S E R S  C R E A T E


Joie des accents etc

...

bref, éviter les accents là où on peut, c'est éviter les ennuis.


Misc

  • Dans les premières versions de mediawiki, la plupart des réglages s'effectuaient directement dans la BD, sans passer par des pages php. C'est une manière de procéder legit.
  • Lors des interventions dans les tables, pour rendre inopérantes certaines lignes sans les supprimer, on insère un préfixe AdmChange dans certains champs. On peut donc également retrouver ces lignes par une recherche avec AdmChange.


Sauvegardes

A priori, la seule façon de procéder pour une base aussi grosse, est via un dump.


Liens