Bagaimana cara melewati tabel tertentu dengan sql-dump yang diminum?


9

Saya punya file konfigurasi 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')
);

Dan saya punya file skrip 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

Tetapi ketika saya menjalankannya file cadangan masih memiliki data dalam tabel cache. Apa yang saya lakukan salah?

Dan pertanyaan kedua adalah - Jika saya meletakkan ini di crontab saya harus meletakkan file konfigurasi di tempat lain?

Saya menggunakan Drush versi 8.


1
Saya ingin tahu apakah drushrc.phptidak dijalankan. Coba var_dump dari $options['structure-tables']dalam drushrc.phphanya untuk mengonfirmasi bahwa itu sedang dijalankan.
golok

Jawaban:


0

Maaf saya tidak bisa banyak membantu Anda dengan pertanyaan pertama Anda ...

Pertanyaan ke-2 Anda bertanya:

Dan pertanyaan kedua adalah - Jika saya meletakkan ini di crontab saya harus meletakkan file konfigurasi di tempat lain?

Situs dokumentasi drush menautkan ke file contoh drushrc.php yang mengatakan di mana Anda dapat meletakkan file rc:

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

Ubah nama file ini menjadi drushrc.php dan secara opsional salin ke salah satu tempat yang tercantum di bawah ini dalam urutan prioritas:

  1. Folder situs Drupal (mis. Situs / {default | example.com} /drushrc.php).
  2. Drupal / drush dan situs / semua / folder drush, atau folder / drush dalam direktori di atas root Drupal.
  3. Di lokasi mana pun, sebagaimana ditentukan oleh opsi --config (-c).
  4. Folder .drush pengguna (yaitu ~ / .drush / drushrc.php).
  5. Folder konfigurasi lebar sistem (mis. /Etc/drush/drushrc.php).
  6. Folder instalasi drush.

Untuk Cron, dokumentasi merekomendasikan agar Drush dikonfigurasikan untuk dijalankan sebagai pengguna yang sama yang menjalankan server web Anda. Yang sedang berkata saya sarankan Anda menempatkan file rc Anda di lokasi (5), folder konfigurasi sistem-lebar. Ya, file Drush rc yang lebih dilokalkan akan perlu mengganti file konfigurasi sistem Anda sesuai kebutuhan (oh well).


Semua tautan ini sekarang 404's. :(
Dale Anderson

@DaleAnderson ... ini adalah Internet dan tidak ada yang permanen. Ini adalah layanan praktis untuk Anda. Saya sarankan Anda mempelajari cara menggunakan, harap dicatat saya baru saja memilih snapshot September 2015 dari situs drush.org web.archive.org/web/20150905130324/http://www.drush.org: 80 / id / ... Pada saat ini Anda harus mempertimbangkan juga melihat alat yang lebih baru seperti Drupal Console atau Drush 9 docs.
Tenken

24

Buang semua tabel kecuali cachetabel dan tabel dimulai dengan cache_.

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

Hanya struktur basis data. Tidak ada data sama sekali.

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

Hanya data. Tidak ada data cache dan tidak ada struktur cache.

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

Tidak ada data cache tetapi dibuang dalam struktur mereka.

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

dokumentasi sql-dump


Itu --extra=--no-datatidak bekerja untuk saya, tetapi saya bisa melakukannya --skip-tables-list="*"dan itu berhasil.
Greggles

Anda mungkin ingin menggunakan kutipan, ingin "cache,cache_*"mencegah shell Anda dari mencocokkan file yang dipanggil cache_*di direktori kerja Anda.
rudolfbyker

0

Untuk beberapa alasan cache_ * tidak berfungsi untuk saya dengan drush 9+ sampai saya menghilangkan garis bawah. Namun, ini mungkin khusus untuk bash / terminal (server) saya. Apa yang berhasil untuk saya:

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

dan Anda selalu dapat menambahkan --verboseuntuk melihat dump mysql aktual dan parameter --ignore.


Dengan bash, jika cache_*cocok dengan file apa pun di direktori Anda saat ini maka bash akan menggumpal nama file tersebut dan menggunakannya sebagai argumen. Anda dapat menempatkan tanda kutip ganda di sekitarnya untuk memastikan nilai literal diteruskan ke perintah alih-alih file apa pun yang digelutinya.
Greggles
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.