J'ai une table innodub avec 80 millions de lignes et il est extrêmement lent avec MySqldump, donc je pense à copier le répertoire deatadir pour une sauvegarde/transfert.
J'avais l'habitude de copier la base de données avec uniquement des tables MyISAM dans la version Windows de MySQL et fonctionnait parfaitement. Maintenant que je copie un répertoire de base de données avec un mélange de tables Innodb et Myisam de Linux à Windows, cette approche fonctionnerait-elle aussi bien?
Je le fais actuellement maintenant, mais je veux savoir si je manque quelque chose? N'AIS PAS DES TABLES INNODB DONNÉES Réparties sur divers endroits tels que dans Ibdata1? Je n'ai pas à sauvegarder ibdata1 ou quoi que ce soit vrai?
s'il vous plaît Dites-moi que vous n'êtes pas (et pas même pensez de) Utilisation du système de fichiers Copie sur un serveur de base de données qui fonctionne et en cours d'exécution? C'est pratiquement garanti Pour mener à la corruption de vos copies, laissant vos sauvegardes inutiles. Vous ne recevrez aucune erreur - sauf, bien sûr, lorsque vous essayez de restaurer :-)
Ce n'est pas très clair de votre message (corrigez-moi si je me trompe), mais vous exécutez maintenant votre base de données sur Linux? Si tel est le cas, utilisez Percona - xtrabackup pour vos tables InnoDB. Cet outil effectue des sauvegardes chaudes non bloquantes des tables Innodb.take un regard sur ma réponse ici pour certaines options de sauvegarde MySQL. Pour Myisam, vous pourriez regarder myDumper si MySqldump n'est pas performant.
Si votre serveur est toujours sous Windows, vous n'avez pas de chance. Xtrabackup ne fonctionne pas sur Windows, ni MyDumper (Afaik). Vous pouvez vérifier ceci out (Disclaimer - Jamais utilisé).
Encore une fois, je ne suis pas totalement clair sur quoi, exactement, vous voulez dire ici.
Maintenant que je copie un répertoire de base de données avec un mélange de tables Innodb et Myisam de Linux à Windows, cette approche fonctionnerait-elle aussi bien?
Si vous voulez dire que vous copiez le mysqldump de Linux à Windows, alors oui, cela fonctionnera comme une copie de fichier. Si, d'autre part, vous voulez dire que vous copiez (à l'aide du système de fichiers) des fichiers de données sur un serveur exécutant et transmettant ces copies de Linux à Windows, puis vos "sauvegardes" seront inutiles sur les deux systèmes.
N'AIS PAS DES TABLES INNODB DONNÉES Réparties sur divers endroits tels que dans Ibdata1? Je n'ai pas à sauvegarder ibdata1 ou quoi que ce soit vrai?
Si vous sauvegardez la base de données à l'aide de MySqldump, cela suffit. Si vous copiez simplement des fichiers d'un emplacement à un autre sur un serveur de base de données en cours d'exécution, cela ne comporte pas ce que vous faites ou ne copiez-vous pas, car votre sauvegarde sera inutile.
[Modifier] En réponse aux commentaires de l'affiche original.
De - ici (bonne réponse)
mysqldump -uuser -pass -pass -Single-transaction --Routs --Triggers --Toutes-Bases de données> Backup_db.sql
Il suffit de substituer votre nom de schéma pour --all-tous les bases de données. Vous dites que votre "table" est innodb - est le reste de la base de données/schéma innodb? Sinon, vous devriez le faire. Vous semblez penser que le datadir doit être copié sous une forme ou une forme - it ne le fait pas. La députée contient les données nécessaires pour reconstruire votre base de données.
En cas de problème, vous restaurez votre base de données de la sauvegarde [~ # ~ # ~] [~ # ~] (c'est-à-dire le décharge). Il existe d'autres solutions qui permettent à PITR (point de récupération du temps), mais elles sont plus complexes et la réplication peut également résoudre ce problème.
Voir aussi ces messages ( 1 , 2 ).
Mon principe sur le contenu de ces messages (vérifier la réputation des affiches) est qu'avec InnoDB, la commande ci-dessus permettra une sauvegarde tout en permettant en lit et écrit à la base de données - note que les performances peuvent être affectées.
Pour la section de sauvegarde à froid du manuel MySQL ( http://dev.mysql.com/doc/refman/5.6/fr/innodb-backup.html ), vous avez besoin d'IBDATA1, IB_LogFiles.
De toute évidence, cela nécessite d'arrêter le serveur et de rincer tous les caches sur le disque.