2010-08-03 5 views
1

Je dois supprimer certaines données de table dans prod. db et pour les enregistrements qui vont être supprimés, une sauvegarde des enregistrements doit être copiée sur une autre base de données locale. Cela implique deux bases de données, résidant dans deux différents serveurs/instances .Copie de données de 1 DB vers un autre DB

Est-il possible de faire via sql (mysql) requête pour ce faire?

+0

@Sharpeye: Je suis sûr que vous pouvez le faire via une requête mysql. Mais vous pouvez aussi le faire via phpmyadmin, juste une simple exportation puis importer j'ai peur? –

+0

Juste une autre base de données, ou un autre serveur MySQL (instance)? – Wrikken

+1

Il va entre 2 bases de données résidant dans deux serveurs différents. – Sharpeye500

Répondre

1

J'utiliser mysqldump avec une condition where pour obtenir les enregistrements sur. Une fois que vous avez tout enregistré, vous pouvez ensuite les supprimer de prod. Ces commandes devraient fonctionner à partir de la ligne de commande, y compris le mot de passe pour éviter que l'invite soit facultative.

mysqldump -u user -pPassword -h hostname1 dbname tablename 
    --where 'field1="delete"' 
    --skip-add-drop-table --no-create-db --no-create-info > deleted.sql 
mysql -u user -pPassword -h hostname2 dbname < deleted.sql 
mysql -u user -pPassword -h hostname1 dbname -e 'DELETE FROM tablename WHERE field1="delete"' 
0

J'essaie de faire exactement la même chose, copier les données d'une table vers un autre serveur, puis le supprimer de l'original.

Jusqu'à présent, je vois deux options:

  1. copier les données à une base de données locale, puis répliquer cette base de données vers un autre serveur
  2. utilisation du moteur de stockage Federated

Les deux nécessitent une reconfiguration sérieuse de notre les serveurs car ni la journalisation fédérée ni la journalisation binaire (requise pour la réplication) ne sont pas activées. Cela prendrait du temps et il serait préférable que d'autres solutions soient trouvées.

Le processus doit être exécuté quotidiennement, il doit donc être entièrement automatisé.

Peut-être une troisième option est d'automatiser les choses avec une tâche cron:

  • copier les données dans une base de données séparée sur le même serveur
  • sauvegarde
  • cette base de données avec mysqldump dans un dossier qui est lié à la autre serveur trop
  • sur le second serveur, restaurer la base de données de la décharge sql
Questions connexes