web-dev-qa-db-fra.com

Comment ignorer des tables spécifiques avec drush sql-dump?

J'ai un fichier de configuration drush ~/.drush/drushrc.php:

if (!isset($options['structure-tables']['common'])) {
  $options['structure-tables']['common'] = array(
    'cache', 'cache_*', 'history', 'search_*', 'sessions', 'watchdog'
  );
}

$options['structure-tables']['common'] = array_merge($options['structure-tables']['common'], 
  array('ctools_css_cache', 'ctools_object_cache', 'logz', 'views_object_cache')
);

Et j'ai un fichier de script bash:

/usr/bin/drush sql-dump --root="/home/username/domains/sitename/www" --skip-tables-key="common" --gzip --result-file=/home/username/backup/$year/$month/dbname_$date_now_time.sql

Mais quand je l'exécute, le fichier de sauvegarde contient toujours des données dans des tables de cache. Qu'est-ce que je fais mal?

Et la deuxième question est - Si je mets cela dans crontab, dois-je mettre le fichier de configuration ailleurs?

J'utilise Drush version 8.

9
dark_kz

Désolé, je ne peux pas vous aider beaucoup avec votre première question ...

Votre 2e question demandait:

Et la deuxième question est - Si je mets cela dans crontab, dois-je mettre le fichier de configuration ailleurs?

le site de documentation de drush est lié au fichier d'exemple drushrc.php qui indique où vous pouvez placer le fichier rc:

https://raw.githubusercontent.com/drush-ops/drush/master/examples/example.drushrc.php

Renommez ce fichier en drushrc.php et copiez-le éventuellement à l'un des emplacements répertoriés ci-dessous par ordre de priorité:

  1. Dossier du site Drupal (par exemple sites/{default | example.com} /drushrc.php).
  2. Drupal/drush et sites/all/drush, ou le dossier/drush dans le répertoire au-dessus de la racine Drupal.
  3. Dans n'importe quel emplacement, comme spécifié par l'option --config (-c).
  4. Dossier .drush de l'utilisateur (c'est-à-dire ~/.drush/drushrc.php).
  5. Dossier de configuration à l'échelle du système (par exemple /etc/drush/drushrc.php).
  6. Dossier d'installation Drush.

Pour Cron, la documentation recommande que Drush soit configuré pour fonctionner comme le même utilisateur qui exécute votre serveur Web. Cela étant dit, je vous recommande de placer votre fichier rc à l'emplacement (5), un dossier de configuration à l'échelle du système. Oui, les fichiers rc Drush plus localisés devront alors remplacer votre fichier de configuration à l'échelle du système si nécessaire (eh bien).

0
tenken

Vider toutes les tables sauf la table cache et les tables commençant par cache_.

drush sql-dump --skip-tables-list=cache,cache_* > dumpfile.sql

Structure de la base de données uniquement. Pas de données du tout.

drush sql-dump --extra=--no-data > dumpfile.sql

Données uniquement. Aucune donnée de cache et aucune structure de cache.

drush sql-dump --skip-tables-list=cache,cache_* --data-only > dumpfile.sql

Pas de données de cache mais vidage dans leurs structures.

drush sql-dump --structure-tables-list=cache,cache_* > dumpfile.sql

documentation sql-dump

24
Francisco Luz

Pour une raison quelconque, cache_ * n'a pas fonctionné pour moi avec drush 9+ tant que je n'ai pas omis le trait de soulignement. Cependant, cela peut être spécifique à mon (serveur) bash/terminal. Ce qui a fonctionné pour moi:

drush sql-dump --skip-tables-list=cache*

et vous pouvez toujours ajouter le --verbose pour voir le vidage mysql réel et son paramètre --ignore.

0
awm