Vous pouvez contribuer simplement à Wikibéral. Pour cela, demandez un compte à adminwiki@liberaux.org. N'hésitez pas !
Wikiberal:Maintenance/BD
- Structures des tables mediawiki : https://www.mediawiki.org/wiki/Category:MediaWiki_database_tables LA page de référence
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 ?
- https://www.mediawiki.org/wiki/Manual:Cache
- https://www.mediawiki.org/wiki/Manual:FAQ#How_do_I_purge_a_cached_page.3F sans effet
- https://www.mediawiki.org/wiki/Manual:Purge
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.
- http://www.lairdscomputer.com/Blog/tabid/62/EntryId/27/How-to-clean-up-MediaWiki-after-a-spammer.aspx
- http://www.actiu.net/mediawiki/
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:Blobs_table Beginning with the MediaWiki 1.5 release this table is not used, and can be safely deleted.
- effacée le 26/2/2015 (la table était vide)
- https://www.mediawiki.org/wiki/Manual:Math_table This table is not used in the MediaWiki 1.18 release, and can be safely deleted.
- 21 rows. Sauvegardée et effacée le 26/2/2015.
- https://www.mediawiki.org/wiki/Manual:Brokenlinks_table Beginning with the MediaWiki 1.5 release this table is not used, and can be safely deleted.
- ~2000 rows. Sauvegardée et effacée le 26/2/2015.
- https://www.mediawiki.org/wiki/Manual:Cur_table
- After running the updater when updating from MediaWiki 1.4 or older to a newer version, this table is not needed anymore and can be safely deleted.
- Table effacée le 26/2/2015
- https://www.mediawiki.org/wiki/Manual:Links_table Beginning with the MediaWiki 1.5 release this table is not used, and can be safely deleted
- ~20000 rows. Sauvegardée et effacée le 26/2/2015.
- 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
- https://www.mediawiki.org/wiki/Manual:Trackbacks_table This feature was removed completely in version MediaWiki 1.19.
- 0 rows. dropped le 26/2/2015
- https://www.mediawiki.org/wiki/Manual:User_rights_table mw_user_rights valide pour mediawiki version <= 1.4
- This table is not used in the MediaWiki 1.5 release, and can be safely deleted.
- Table désormais utilisée pour faire des tests
- https://www.mediawiki.org/wiki/Manual:Validate_table This table is not used in the MediaWiki 1.8 release, and can be safely deleted
- 0 rows. effacée le 26/2/2015
Tables bientôt obsolètes
- https://www.mediawiki.org/wiki/Manual:External_user_table The table has been removed in MediaWiki 1.22 => on attend
- https://www.mediawiki.org/wiki/Manual:Hitcounter_table removed in 1.25 => on attend
- https://www.mediawiki.org/wiki/Manual:Linkscc_table semble obsolète (doc pas explicite) 0 rows
- On change le nom (suffixe _obsolete) pour voir s'il y a un impact.
Autres tables
- https://www.mediawiki.org/wiki/Manual:Ipblocks_table IPs ou utilisateurs bloqués
- https://www.mediawiki.org/wiki/Manual:Logging_table ne sert pas à générer la user list
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
- https://www.mediawiki.org/wiki/Manual:Objectcache_table Table vide. Sur d'autres wikis, c'est une des plus grosses tables. à voir avec memcached.
Joie des accents etc
- http://blog.developpez.com/sqlpro/p10171/langage-sql-norme/mysql_et_ses_collations_le_grand_folklor
- http://blog.episode-2.com/2008/07/25/tutoriel-mysql-et-les-collate/
...
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.
- http://www.mediawiki.org/wiki/Manual:Backing_up_a_wiki
- http://www.mediawiki.org/wiki/Manual:Backing_up_a_wiki/fr
Liens
- http://www.adminer.org/ un phpMyAdmin très léger (... mais le fichier téléchargé a une drôle de tête)