วิธีข้ามตารางเฉพาะด้วย drush sql-dump


9

ฉันมีไฟล์ config 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')
);

และฉันมีไฟล์สคริปต์ทุบตี:

/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

แต่เมื่อฉันรันมันไฟล์สำรองก็ยังมีข้อมูลในตารางแคช ผมทำอะไรผิดหรือเปล่า?

และคำถามที่สองคือ - ถ้าฉันใส่สิ่งนี้ลงใน crontab ฉันต้องใส่ไฟล์กำหนดค่าไว้ที่อื่นหรือไม่?

ฉันใช้ Drush เวอร์ชัน 8


1
ฉันสงสัยว่าdrushrc.phpจะไม่ถูกเรียกใช้ ลองใช้ var_dump ของปุ่ม$options['structure-tables']ในdrushrc.phpเพื่อยืนยันว่ากำลังทำงานอยู่

คำตอบ:


0

ขออภัยฉันไม่สามารถช่วยเหลือคุณได้มากกับคำถามแรก

คำถามที่ 2 ของคุณถาม:

และคำถามที่สองคือ - ถ้าฉันใส่สิ่งนี้ลงใน crontab ฉันต้องใส่ไฟล์กำหนดค่าไว้ที่อื่นหรือไม่?

เชื่อมโยงเว็บไซต์เอกสาร drush เพื่อ drushrc.php ไฟล์ตัวอย่างที่บอกว่าที่คุณอาจวางแฟ้ม rc นี้:

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

เปลี่ยนชื่อไฟล์นี้เป็น drushrc.php และเลือกที่จะคัดลอกไฟล์ไปยังหนึ่งในสถานที่ที่ระบุไว้ด้านล่างตามลำดับก่อนหน้า:

  1. โฟลเดอร์ไซต์ Drupal (เช่น sites / {default | example.com} /drushrc.php)
  2. โฟลเดอร์ Drupal / drush และ sites / all / drush หรือโฟลเดอร์ / drush ในไดเรกทอรีด้านบนรูท Drupal
  3. ในตำแหน่งใด ๆ ตามที่ระบุโดยตัวเลือก --config (-c)
  4. โฟลเดอร์ .drush ของผู้ใช้ (เช่น ~ / .drush / drushrc.php)
  5. โฟลเดอร์การกำหนดค่าทั่วระบบ (เช่น /etc/drush/drushrc.php)
  6. โฟลเดอร์การติดตั้ง Drush

สำหรับ Cron เอกสารแนะนำว่า Drush ได้รับการกำหนดค่าให้ทำงานในฐานะผู้ใช้เดียวกันกับที่เรียกใช้เว็บเซิร์ฟเวอร์ของคุณ ที่ถูกกล่าวว่าฉันขอแนะนำให้คุณวางไฟล์ rc ของคุณในตำแหน่ง (5), โฟลเดอร์การกำหนดค่าทั่วทั้งระบบ ใช่ไฟล์ Drush rc ที่โลคัลไลซ์แล้วจะต้องแทนที่ไฟล์กำหนดค่าทั่วทั้งระบบของคุณตามต้องการ (ดีมาก)


ลิงก์เหล่านี้ทั้งหมดเป็น 404 :(
Dale Anderson

@DaleAnderson ... นี่คืออินเทอร์เน็ตและไม่มีอะไรถาวร นี่คือบริการที่มีประโยชน์สำหรับคุณฉันขอแนะนำให้คุณเรียนรู้วิธีใช้โปรดทราบว่าฉันเพิ่งเลือกภาพรวมกันยายน 2015 ของเว็บไซต์ drush.org web.archive.org/web/20150905130324/http://www.drush.org: 80 / en / … ในเวลานี้คุณควรพิจารณาถึงเครื่องมือใหม่ ๆ เช่น Drupal Console หรือ Drush 9 เอกสาร
tenken

24

การถ่ายโอนข้อมูลตารางทั้งหมดยกเว้นตารางและตารางที่เริ่มต้นด้วยcachecache_

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

โครงสร้างฐานข้อมูลเท่านั้น ไม่มีข้อมูลเลย

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

ข้อมูลเท่านั้น ไม่มีข้อมูลแคชและไม่มีโครงสร้างแคช

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

ไม่มีข้อมูลแคช แต่ดัมพ์ในโครงสร้าง

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

เอกสาร sql-dump


การ--extra=--no-dataทำงานไม่ได้สำหรับฉัน แต่ฉันสามารถทำได้--skip-tables-list="*"และได้ผล
greggles

คุณอาจต้องการใช้เครื่องหมายคำพูดเช่น"cache,cache_*"เพื่อป้องกันเชลล์ของคุณจากไฟล์ที่ตรงกันที่เรียกว่าcache_*ในไดเรกทอรีทำงานของคุณ
rudolfbyker

0

ด้วยเหตุผลบางอย่าง cache_ * ไม่ทำงานสำหรับฉันด้วย drush 9+ จนกว่าฉันจะไม่ใส่เครื่องหมายขีดล่าง อย่างไรก็ตามสิ่งนี้อาจเฉพาะเจาะจงกับเซิร์ฟเวอร์ (bash / terminal) ของฉัน อะไรที่ทำให้ฉัน:

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

และคุณสามารถเพิ่ม--verboseเพื่อดูการถ่ายโอนข้อมูล mysql ที่แท้จริงและมันคือ - พารามิเตอร์เข้าสู่ระบบ


ด้วย bash หากcache_*ตรงกับไฟล์ใด ๆ ในไดเรกทอรีปัจจุบันของคุณแล้วทุบตีจะทำให้ชื่อไฟล์เหล่านั้นและใช้เป็นอาร์กิวเมนต์ คุณสามารถใส่เครื่องหมายอัญประกาศคู่ล้อมรอบมันเพื่อให้แน่ใจว่าค่าตัวอักษรถูกส่งผ่านไปยังคำสั่งแทนไฟล์ใด ๆ ที่มันละลาย
greggles
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.