5 votes

Options pour réduire la taille d'une base de données MySQL

J'ai une base de données MySQL 5.0 de 88,9 Go sur un disque de 90 Go. La base de données contient un certain nombre de tables MyISAM pour nos rapports (personnalisés) sur l'utilisation du système. Les données sont des agrégations basées sur la date de ce qui est essentiellement des journaux de serveur web.

J'ai pensé à convertir les grandes tables au moteur de stockage MERGE. L'idée étant que je pourrais déplacer les anciennes données sur un autre disque. Cependant, je n'ai jamais fait cela auparavant, et je suis un peu nerveux à l'idée de faire des tests sur ma base de données de production.

Et, bien sûr, je suis pressé par le temps. Je dois traiter toutes les données de rapport du mois dernier très rapidement. Donc l'installation d'un disque plus grand n'est pas une option pour le moment.

Quelqu'un a-t-il des conseils ou une expérience à partager pour réduire la taille de cette base de données ?

9voto

freiheit Points 14144

Vous avez des indices que vous n'utilisez pas vraiment ?

2voto

user319660 Points 111

Ok... ce post est OOOOLD ... mais... je pense que si c'est complet, c'est mieux

Lorsque je dois déplacer une base de données mysql vers une autre partition, je le fais :

/etc/init.d/mysql stop
rsync -avz /var/lib/mysql/ /mnt/anotherdisk/mysql/
mv /var/lib/mysql/ /var/lib/mysql_original/
ln -s /var/lib/mysql/ /mnt/anotherdisk/mysql/
/etc/init.d/mysql start

Au bout d'un jour/semaine/mois/Quand je me souviens, je fais une sauvegarde de /var/lib/mysql_original/ puis je supprime le dossier.

1voto

jsumners Points 6247

Si vous envisagez déjà de déplacer les données vers une partition plus grande, vous pouvez déplacer sélectivement les tables les plus importantes et les remettre en lien symbolique dans le répertoire de la base de données. Il y a quelques inconvénients à cela, mais ils sont notés dans la documentation. Cette méthode a l'avantage d'être facilement réversible (en supposant que vos tables tiennent toujours dans l'ancienne partition).

Liens symboliques dans MySQL

1voto

ashwnacharya Points 3144

Si la plupart de vos données sont des agrégats de journaux, vous avez essentiellement trois options :

  1. Examinez votre algorithme d'agrégation pour voir s'il est conçu pour évoluer avec les données ou s'il est conçu pour rester de taille fixe.
  2. Acquérir plus de stockage.
  3. Arrêtez de stocker les journaux dans la base de données.

1voto

MarkR Points 2878

Êtes-vous prêt à réécrire l'application ?

OPTIMIZE TABLE reconstruira une table pour supprimer les "trous". Cela peut permettre d'économiser beaucoup d'espace, ou pas du tout, selon le degré d'optimisation déjà atteint. Cependant, c'est très lent sur une grande table, ET UTILISE BEAUCOUP D'ESPACE TEMPORAIRE.

Supprimer les index, ajouter des PACK_KEYS aux tables, cela réduira la taille des index, mais encore une fois, cela implique une reconstruction ET UTILISE DE L'ESPACE TEMPORAIRE.

Avez-vous regardé la taille des index par rapport aux données ?

On dirait que votre serveur est tellement plein que vous ne pourrez pas vraiment travailler.

SOLUTION : Utilisez la surveillance pour vous assurer qu'à l'avenir, votre serveur ne sera jamais aussi plein, car c'est une cause perdue lorsque vous atteignez ce stade.

À court terme, transférez le tout sur une boîte plus grande.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X