web-dev-qa-db-fra.com

Comment sauvegarder la base de données Live MySQL?

J'ai 12 gb MySQL InnoDb Base de données avec environ 800 questions par seconde. Pas plus tôt que je commence 'mysqldump' sur elle pour faire de la sauvegarde, je commence à obtenir "503" sur mon site Web.

Comment faire de la sauvegarde de ma base de données en direct sans affecter la performance du site?

5
dragosrsupercool

essayez la commande suivante car la taille de la base de données n'est pas petite:

mysqldump -u USER -p --single-transaction --quick --lock-tables=false --all-databases (or) DATABASE | gzip > OUTPUT.gz
5
Ahmad Abuhasna

Vous devez utiliser la boîte de données PerCona Toolkit pour éviter de bloquer la base de données:

Sudo innobackupex --user=root --password=rootPASSWORD --Host localhost /tmp/
Sudo innobackupex --apply-log --use-memory=2G /tmp/$TIMESTAMP/

Vous avez besoin d'assez d'espace disque dans /tmp. Une fois que vous avez terminé, vous pouvez copier un répertoire complet sur un autre serveur.

Dans xtrabackup_binlog_info, il y a des informations de réplication. (Il est utile que vous ayez besoin de configurer la réplication des esclaves)

4
Gea-Suan Lin

Vous devez utiliser l'outil Percona Xtrabackup. Cela fonctionne comme un charme pour d'énormes jeux de données et n'interrompt pas les opérations MySQL. http://www.percona.com/doc/Prona-xtrabackup/2.2/innobackupex/Creatting_a_backup_ibk.html Il y a des astuces mais ça vaut le coup.

4
vfedorkov

Vous devez utiliser ( - transaction unique Option

mysqldump -uroot -p --single-transaction databasename > dump.sql

Il permet une instantanée de données de points de temps. Une fois que MySqldump démarre, toutes les tables InnoDB seront gelées dans le temps. Supposons que vous commenciez le mysqldump à 2h30 PM et il finit à 15h00. Toutes les tables InnoDB Dubliquées seront à partir de 14h30. Tous les autres modifications (insertions, mises à jour, suppressions ) continuera d'interruption et ne sera pas inclus dans la décharge.

Myisam interférerait avec la sauvegarde ponctuelle si les tables MyISAM étaient mises à jour par des insertions, des mises à jour ou des suppresses. Si les tables de myisam étaient juste pour des lectures, ( - une transaction unique irait toujours bien.

SUGGESTION

Si vous avez une réplication MySQL configurée, vous pourriez aller à l'esclave et courir ceci.

mysql -uroot -p... -ANe"STOP SLAVE"
mysqldump -uroot -p --single-transaction databasename > dump.sql
mysql -uroot -p... -ANe"START SLAVE"

Le maître ne connaîtrait aucune sauvegarde en cours.

2
RolandoMySQLDBA