[spip-dev] SPIP 2.08: javascript consomme jusqu'á 100% de CPU lors d'un restore -> perte de données

Salut,

quand je fais un restore d'une copie de sauvegarde (tous les champs) sous SPIP 2.08 la procédure se met en route mais le formulaire ajax qui me tient au courant des procédures effectées se ralentit au fur et à mesure. En même temps je constate que FF3 consomme entre 70% et 100% de CPU de mon ordinateur WinXP.

Après plusieurs heures de restore de plus en plus lent je relance enfin mon brouteur (FF3) et la restauration se termine en quelques secondes.

Je n'ai pas encore jamais observé ca avant. Il se trouve que j'ai coché toutes les cases de la page ecrire/?exec=export_all :

(source 6 heures après le début du restore)
# spip_referers (5316)
# spip_referers_articles (3811)
# spip_resultats (0)
# spip_versions (703)
# spip_versions_fragments (895)
# spip_visites (38)
# spip_visites_articles (7868)

Apparemment spip_visites et spip_visites_articles n'on pas été réinsérées dans la bdd:

(résultat du restore)
# spip_referers (5274)
# spip_referers_articles (3783)
# spip_resultats (13)
# spip_versions (700)
# spip_versions_fragments (806)
# spip_visites (0)
# spip_visites_articles (0)

Voici les autres champs (les rédacteurs et lecteurs n'ont pas chomé entretemps)

(source 6 heures après le début du restore)
# spip_mots_syndic (5)
# spip_mots_rubriques (1)
# spip_mots_forum (0)
# spip_mots_documents (0)
# spip_mots_breves (0)
# spip_petitions (1)
# spip_documents_liens (252)
# spip_auteurs_articles (5175)
# spip_mots_articles (241)
# spip_articles (5384)
# spip_auteurs (72)
# spip_breves (0)
# spip_messages (1)
# spip_mots (257)
# spip_groupes_mots (3)
# spip_rubriques (31)
# spip_documents (379)
# spip_types_documents (92)
# spip_syndic (4)
# spip_syndic_articles (0)
# spip_forum (23880)
# spip_signatures (29)
# spip_auteurs_elargis (74)
# spip_geo_pays (244)
# spip_societes (0)
# spip_jeux (10)
# spip_jeux_resultats (16)
# spip_auteurs_rubriques (0)
# spip_auteurs_messages (2)
# spip_meta (141)
# spip_urls (5970)

(résultat du restore)
# spip_mots_syndic (5)
# spip_mots_rubriques (1)
# spip_mots_forum (0)
# spip_mots_documents (0)
# spip_mots_breves (0)
# spip_petitions (1)
# spip_documents_liens (252)
# spip_auteurs_articles (5174)
# spip_mots_articles (241)
# spip_articles (5383)
# spip_auteurs (71)
# spip_breves (0)
# spip_messages (1)
# spip_mots (257)
# spip_groupes_mots (3)
# spip_rubriques (31)
# spip_documents (379)
# spip_types_documents (92)
# spip_syndic (4)
# spip_syndic_articles (0)
# spip_forum (23880)
# spip_signatures (29)
# spip_auteurs_elargis (73)
# spip_geo_pays (244)
# spip_societes (0)
# spip_jeux (10)
# spip_jeux_resultats (16)
# spip_auteurs_rubriques (0)
# spip_auteurs_messages (2)
# spip_meta (141)
# spip_urls (5969)

Est-ce que vous avez une idée comment gérer (avec SPIP) des copies de sauvegarde avec des milliers d'articles, forums etc. ? Actuellement la procédure de restauration n'a pas l'air assez fiable pour la recommander aux webmestres de sites volumineux.

En principe cela me gêne peu, mais actuellement je rencontre un problème avec la restauration des caractères spéciaux (äöüßèèê etc.) quand je fais "mysql --user=admin --password=xxx -D db_name < dump.sql" alors que SPIP gère très bien ces caractères.

Merci pour vos commentaires,
klaus++

Est-ce que vous avez une idée comment gérer (avec SPIP) des copies de
sauvegarde avec des milliers d'articles, forums etc. ? Actuellement la
procédure de restauration n'a pas l'air assez fiable pour la recommander aux
webmestres de sites volumineux.

J'utilise moi aussi mysqldump :
# mysqldump --opt BASESPIP > basespip.sql

En principe cela me gêne peu, mais actuellement je rencontre un problème
avec la restauration des caractères spéciaux (äöüßèèê etc.) quand je fais
"mysql --user=admin --password=xxx -D db_name < dump.sql" alors que SPIP
gère très bien ces caractères.

As-tu vérifié que ton site était bien encodé (?exec=convert_sql_utf8
le cas échéant )

-- Fil

Salut Fil,

je dois régulièrement migrer la bdd d'un site en prod vers un site test sur le même serveur. La config de la bdd et de SPIP (utf-8) sont identiques pour les deux sites et pourtant les caractères spéciaux ne sont pas importés correctement en passant par la ligen de commande. Quand je regarde le fichier dump tout est bon pourtant.

Voici la config des bdd:

BDD test: 38 tables, 52,845 records, Type MyISAM, Collation latin1_swedish_ci, Size 17.8 MiB, Overhead 2.9 KiB
Pour les tables: Type MyISAM, Collation utf8_general_ci

BDD prod: valeurs identiques,
sauf 61,139 Records, Size 29.5 MiB, Overhead 948.5 KiB

D'ailleurs la valeur pour la quantité de données qu'affiche la procédure de restore SPIP ne correspon à aucune des deux valeurs Size. Elle est plus grande (>31MB).

Jusque il y a quelques semaines les fonctions backup/restore de SPIP constituaient pour moi une voie pour contourner ce problème mais depuis que j'ai constaté que quelques champs ne sont pas importés je pose des questions comment m'y prendre. Et bien entendu je tenais à vous mettre au courant de mes observations.

Pour résumer il y a trois problèmes :

1. SPIP utilise du code javascript qui consomme la quasi totalité des ressources de l'ordinateur lors de la restauration d'une grande bdd.
2. Quand on interrompt la procédure de restauration (on le fait forcément à cause le l'épuisement des ressources) elle continue lors de l'appel de l'espace privé SPIP mais des données se perdent.
3. (rien à voir avec SPIP) lors du restore d'un dump à la ligen de commande les caractrères spéciaux de la bdd sont falsifiés.

Outre ces question de caractères spéciaux et de javascript je me permet de rappeler que les forums des article ne sont pas prises en compte lors ce qu'un fait une savegarde par rubrique. Si ce n'était pas le cas je pourrais essayer cette procédure.

La solution idéale pour un système de sauvegarde commencerait par un test pour savoir si la bdd est trop grande pour être sauvegardée en une seule étape et proposerait de s'y prendre en plusieurs étapes (héhé, ca te rappelle quelque chose?) ou par rubrique. Peut-être pourrait-on proposer aux webmestres de sauvegarder les valeurs de config et les statistiques séparément. Actuellement je dois changer le nom et l'URL de mon site test après chaque restore.

merci de t'avoir penché sur la question,
klaus++

Fil schrieb: