{"id":216,"date":"2007-11-22T21:46:21","date_gmt":"2007-11-22T19:46:21","guid":{"rendered":"http:\/\/www.kill-9.it\/blog\/index.php\/2007\/11\/22\/commenti-riparati\/"},"modified":"2007-11-22T22:47:05","modified_gmt":"2007-11-22T20:47:05","slug":"commenti-riparati","status":"publish","type":"post","link":"https:\/\/www.kill-9.it\/blog\/index.php\/2007\/11\/22\/commenti-riparati\/","title":{"rendered":"Commenti riparati :)"},"content":{"rendered":"<p>Prima di tutto, bentornati!<br \/>\nE` passato un intenso quasi-mese dall&#8217;ultima volta che ho scritto &#8211; sono successe molte cose tra cui l&#8217;uscita di Leopard (che ho installato il giorno dopo il LinuxDay), giochi con l&#8217;iPhone, e diverse escursioni interessanti (<a href=\"http:\/\/www.flickr.com\/photos\/zen0\/sets\/72157603146932096\/\">flickr mi e` testimone<\/a>)<br \/>\n<em>[Adesso che l&#8217;ho finito, so che questo post e` troppo lungo, ma dopo un mese spero nella vostra pazienza&#8230; n.d.a.]<br \/>\n<\/em><br \/>\nDovete sapere che l&#8217;ultima volta che ho tentato di dare uno sguardo ai settaggi di Spam Karma per questo blog, l&#8217;allegro MySQL ha deciso di morirmi addosso. La cosa non mi ha sorpreso piu` di tanto, dato che come sapete in passato accadeva abbastanza di frequente, pero` negli ultimi tempi mi pareva che le cose fossero andate a posto.<br \/>\nCercando di approfondire, ho notato che nella tabella dei commenti c&#8217;erano 2700 righe: questo invece mi ha sorpreso parecchio, mi aspettavo di trovarci quelle poche centinaia che ci avevamo scritto insieme&#8230;<\/p>\n<p><!--more--><\/p>\n<p>Facciamo breve una storia lunga: la ragione di un numero cosi` alto di commenti nella tabella e` il fatto che SK non cancella i commenti, ma semplicemente li marca come spam. La vera ragione della morte di MySQL era il fatto che la tabella poggiasse in parte su una pagina di db corrotta (cosi` almeno diceva innochecksum).<br \/>\nIl problema vero e` stato trovare il modo di ripristinare la tabella senza perdere i commenti vecchi, visto che<br \/>\n&#8211; il db copiato su un&#8217;altra macchina andava in crash con certe query, e con altre no (tipicamente quelle che richiedevano uno scan dell&#8217;intera tabella, direi)<br \/>\n&#8211; non so niente di SQL<br \/>\n&#8211; non ci volevo perdere delle settimane<br \/>\n&#8211; i classici &#8220;check table&#8221;, &#8220;delete from&#8221; e svariate altre operazioni crashavano mysqld, che prontamente veniva resuscitato da mysql_safe, e che prontamente crashava di nuovo e cosi` via in una rutilante girandola di luci e suoni (quali fossero e` lasciato come esercizio al fantasioso lettore)<\/p>\n<p>Quindi (<em>wordpress manual table purge picohowto<\/em>):<br \/>\n&#8211; <strong>installato un mysql<\/strong> uguale su un&#8217;altra macchina (e smadonna perche` va piano, e cerca un altro mirror, &#8230;)<br \/>\n&#8211; <strong>copia di tutta la dir mysql<\/strong> (stop di mysql qui, tar|gz|scp sull&#8217;altra macchina|start di mysql qui e la`)<br \/>\n&#8211; scoperto che si legge tranquillamente file binari anche di architetture di endianness diversa (fico!)<br \/>\n&#8211; scoperto come fa wp a <strong>capire se un commento e` buono<\/strong>, da approvare o spam<br \/>\n&#8211; <strong>trovati i commenti &#8220;buoni&#8221;<\/strong>, riversati un un file di testo chenonsisamai e salvati i rispettivi comment_id<br \/>\n<code><br \/>\nselect comment_id from wp_comments where comment_approved = '1';<br \/>\n<\/code><br \/>\n&#8211; studiato 23 modi di spostarli senza fare troppa fatica usando sapienti mix di shell, awk, perl e anche modula-2<br \/>\n&#8211; appurato che era una strada piu` in salita che imparare tre righe di SQL (stima)<br \/>\n&#8211; scoperto <strong>come si vede la struttura di una tabella<\/strong> e applicato a wp_comments<br \/>\n<code>show create table wp_comments;<\/code><br \/>\n&#8211; <strong>creata una tabella wp_comments2<\/strong> usando l&#8217;output del comando precedente, e la funzione <strong>source<\/strong><br \/>\n&#8211; <strong>assemblato un file sql<\/strong> a colpi di shell fatto cosi`<br \/>\n<code><br \/>\ninsert into wp_comments2 select * from wp_comments where comment_id = id_commento_buono;<br \/>\n<\/code><br \/>\nda una riga per comment_id, e lanciato da dentro mysql. (source <strong>muovi.sql<\/strong>)<br \/>\n&#8211; <strong>DROP<\/strong> della fo*$$*a tabella corrotta, <strong>e rename<\/strong> della nuova come la vecchia<br \/>\n<code><br \/>\nrename table wp_comments2 to wp_comments;<br \/>\n<\/code><br \/>\n&#8211; <strong>dump in formato testo<\/strong> della tabella|gzip|scp qui<br \/>\n&#8211; <strong>source del file sql<\/strong>, con conseguente drop e ripopolamento della tabella corrotta<br \/>\n&#8211; <strong>backup<\/strong> del tutto che sai mai che muoia di nuovo domani<\/p>\n<p>Alla fine, sembra andare&#8230; (e per natale forse mi regalo la Nikon D40x)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Prima di tutto, bentornati! E` passato un intenso quasi-mese dall&#8217;ultima volta che ho scritto &#8211; sono successe molte cose tra cui l&#8217;uscita di Leopard (che ho installato il giorno dopo il LinuxDay), giochi con l&#8217;iPhone, e diverse escursioni interessanti (flickr mi e` testimone) [Adesso che l&#8217;ho finito, so che questo post e` troppo lungo, ma &hellip; <a href=\"https:\/\/www.kill-9.it\/blog\/index.php\/2007\/11\/22\/commenti-riparati\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Commenti riparati :)&#8221;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,5],"tags":[],"class_list":["post-216","post","type-post","status-publish","format-standard","hentry","category-geek","category-italiano"],"_links":{"self":[{"href":"https:\/\/www.kill-9.it\/blog\/index.php\/wp-json\/wp\/v2\/posts\/216","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kill-9.it\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kill-9.it\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kill-9.it\/blog\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kill-9.it\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=216"}],"version-history":[{"count":0,"href":"https:\/\/www.kill-9.it\/blog\/index.php\/wp-json\/wp\/v2\/posts\/216\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.kill-9.it\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=216"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kill-9.it\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=216"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kill-9.it\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=216"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}