-
Notifications
You must be signed in to change notification settings - Fork 10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Migration histpos #770
Comments
La bonne solution semble être de désactiver le cron dbcleanup, puis de faire l'export. |
Bon, ok pour le test de reprise de l'historique avec
C'est confirmé que l'export/import est trop long pour pouvoir être fait au moment de la bascule. Une solution a "scripts constants" est de faire l'export/import 2h avant sans réactiver le vlmclean, puis de refaire le dump-alive juste au moment de la bascule. |
Ahem, bon, à refaire, car on touche les limites de fs 👎 Sur neptune 1 : /dev/mapper/vgdata-lv_mysql Sur Neptune 2 : dev/mapper/vg00-lv_mysql 28G 1,1G 26G 5% /var/lib/mysql @fmicaux : C'est peut être un peu juste côté fs de la db ? |
Bonjour, J'étais parti un peu léger, pour doser au mieux les 100 Go. Je viens de faire ça : lvextend -L+5G -r /dev/mapper/vg00-lv_mysqlCa donne ça : Et on peut encore compter sur 32 Go, à répartir au mieux ou garder sous Par exemple, on pourrait, à la volée, et à chaud pendant l'import, lvextend -L+5G -r /dev/mapper/vg00-lv_mysql@+ Le 27/02/2015 08:37, paparazzia a écrit :
|
Sur Neptune 1, il y a un fs dédié pour /var/log/mysql (qui tourne avec
~1go).
Sur Neptune 2, c'est direct dans /var/
=> Je pense que /var est un peu léger, il faudra probablement que je
l'augmente pour qu'il tienne les logs binaires de mysql
Avec ce qu'on a là, je dois pouvoir faire un test d'import de histpos ce
soir en désactivant les binary logs de mysql.
|
Oui, on est presque à 1 Go sur /var/log/mysql. Ca ne fera pas de mal de passer à 2 Go : je viens de faire un "lvextend -L+1G -r /dev/mapper/vg00-lv_var" et je Mais vu que l'on n'a plus de réplication, on peut aussi réduire le délai On est descendu à 40% dans /var qui reppose sur un LV de 3 Go.... je François Le 27/02/2015 09:10, paparazzia a écrit :
|
Je viens de rajouter -6-, non 8go sur le /var/lib/mysql (on était arrivé au bout des 31Go...) pour voir si le chargement peut se terminer... C'est le recalcul d'index qui fait varier la volumétrie, ça devrait se stabiliser dans la nuit... |
Il va falloir que je fasse quelque chose pour ces index qui nous coutent trop cher pour ce qu'ils nous servent... CREATE TABLE Il y'en a au moins 2 de trop... J'ai redémarré mysql, je ferai du ménage demain |
Je dirais bien 1 seul index race, idusers, time normalement le moteur de BD devrait savoir utiliser des index partiels, donc avec 1 seul index faire la même chose qu'avec les 4 qu'on a en définition |
Bon, c'est un peu compliqué de supprimer un index parce que c'est une opération longue, et qu'il n'y a pas que le cron-vlm-clean qui écrit dans histpos, mais aussi le moment ou un utilisateur passe la ligne d'arrivée. La requête est du genre Ce que j'ai testé en local et que je suis en train de faire en prod est :
J'en suis au premier index... mais comme cela duplique dans un index temporaire... on va voir... |
Hello, Il me semble que le passage en innodb peut se faire assez facilement, http://dev.mysql.com/doc/refman/5.6/en/converting-tables-to-innodb.html Et réduire un peu la durée de vie des données dans histpos, ça ne règle François Le 01/03/2015 08:32, paparazzia a écrit :
|
Sur la suppression des index, c'est pas la bonne méthode. Je vais prévoir la procédure de dump et de bascule sans la recréation de schéma et importer dans une table vide avec juste le bon index. Ca permettra de tester sur neptune2 une migration en innodb. Au moment de la bascule 1->2, à J-1, on fera une opération de renommage (Cf. ci-dessous) pour ne pas perdre d'historique. |
pourquoi ne pas faire :
Ca impose juste de faire la bascule suffisamment tot pour que l'export ai le temps de se faire. Et il n'y aura pas d'historique de traces sur n2 pendant quelques jours. Mais ça ne me semble pas bien grave. Ou bien est ce ce qui est prévu mais j'ai pas compris? |
Pour InnoDb, il faut quand même faire quel test qu'on ne fait pas actuellement pour traiter le cas des deadlock.
Aujourd'hui, on se base sur le lock MyIsam (qui est global sur la table) pour être sur que l'insert va bien se passer... mais les deux statements sont complètement décorrélés. Pour faire les choses biens et profiter de InnoDb en terme d'intégrité, il faudrait faire une seule transaction avec les 2 requêtes, et réessayer si InnoDb nous envoie promener. |
Avec moins d'index, c'est nettement mieux (12Go d'index au lieu de 20 sur Neptune1). @fmicaux : je t'ai rendu tes Go ;)
L'import + recalcul d'index est long mais gérable en le faisant la veille (on récupèrera juste le delta au moment de la bascule). Je vais écrire les procédures qui vont bien. |
Yo, Mais pas de problème, ces Go sont à Neptune 2 de toute façon :-P François Le 01/03/2015 11:14, paparazzia a écrit :
|
- dump only records - histpos has to be created by hand on the target server
Il faut decider et mettre en oeuvre la migration de histpos (beaucoup de Go).
Probablement en 2 steps :
The text was updated successfully, but these errors were encountered: