Làm thế nào để có được một cơ sở dữ liệu Drupal rất lớn hoạt động?


7

Tôi đang sử dụng Vagrant và OracleVM để chạy Drupal 7. Tôi đã có trang web và chạy và tôi đang cố gắng nhập cơ sở dữ liệu của mình. Cho đến nay tôi đã chạy drush ccvà xóa bộ đệm cache, và sau đó tôi đã làm

drush sql-cli < mydb.sql

Lệnh drush đang mất một thời gian rất dài và tôi không chắc liệu nó có làm gì không. Các tập tin cơ sở dữ liệu chỉ dưới một gigabyte.

Tôi có thể làm gì để làm việc này, hoặc có một phương pháp tốt hơn?

Câu trả lời:


6

Tôi không chắc chắn bao nhiêu drush trên đầu trang của nhập khẩu SQL lớn, tôi chỉ sử dụng nó cho nhập khẩu và truy vấn nhỏ hơn. Bạn có thể thử ứng dụng khách mysql như một giải pháp thay thế có thể loại bỏ chi phí hoạt động.

Nếu bạn có thể cài đặt trình xem đường ống trên máy ảo của mình, bạn có thể xem tiến trình của lệnh tiêu thụ nhập khẩu.

pv mydb.sql | drush sql-cli

Hoặc không có drush trên đầu

pv mydb.sql | mysql -u <DB_USER> -p<DB_PASS> <YOUR_DB>

Cảm ơn! Tôi đã cài đặt PV và nó đang theo dõi tiến trình của nó. Tôi đã sai, db ban đầu được nén 1GB, không nén được khoảng 6. Có lẽ tại sao nó lại mất nhiều thời gian như vậy!
James Ives

5

Các Backup and Migrate mô-đun có một tính năng để loại trừ các bảng được chọn, chẳng hạn như:

  • tất cả các bảng cache_ *
  • ctools_view_cache
  • ctools_object_cache
  • lũ lụt
  • lịch sử
  • xếp hàng
  • semaphore
  • canh gác
  • search_index (thường tiết kiệm rất nhiều kích thước cơ sở dữ liệu!)

Vấn đề về các bảng / dữ liệu mặc định cần loại trừ , cũng bao gồm một danh sách các bảng thú vị không được di chuyển (chọn những gì phù hợp với bạn), tức là (trích dẫn từ nó):

Khi tạo cấu hình sao lưu, mô-đun theo mặc định sẽ đặt các bảng sau để loại trừ dữ liệu của chúng theo vấn đề # 209647: Loại trừ lời khuyên :

  • bộ nhớ cache
  • cache_filter
  • cache_calWiki_ical
  • cache_menu
  • cache_page
  • cache_view
  • phiên
  • search_dataset
  • tìm kiếm_index
  • tìm kiếm_keywords_log
  • tìm kiếm
  • canh gác
  • truy cập
  • devel_queries
  • devel_times

5

Cơ sở dữ liệu nhỏ hơn sẽ nhập nhanh hơn, vì vậy drush cc alldrush watchdog delete allsẽ tăng tốc đáng kể, nếu bỏ những thứ này là một tùy chọn.

Ngoài ra, để mở rộng câu trả lời của Shawn Conn, bạn có thể sử dụng trình xem đường ống mà không cần chi phí Drush và vẫn sử dụng Drush để tra cứu thông tin đăng nhập cơ sở dữ liệu cho bạn nếu bạn sử dụng drush sql-connectthay vì drush sql-cli. Chỉ cần sử dụng $()để thực thi dòng mysql drush sql-connectin ra:

pv mydb.sql | $(drush sql-connect)

5

Tốt hơn là cắt cơ sở dữ liệu lớn trên kết xuất bằng cách sử dụng drush sql-dumpđể kết xuất tệp SQL. Điều này mang lại cho bạn lợi thế để chỉ định các tùy chọn bổ sung để bỏ qua các bảng cụ thể khi kết xuất (chẳng hạn như bộ đệm hoặc di chuyển bảng).

Điều này có thể được chỉ định trong dòng lệnh (xem drush help sql-dump:) hoặc cấu hình nó trong tệp drushrc của bạn như được hiển thị example.drushrc.phpnhư sau:

$options['structure-tables']['common'] = array('cache', 'cache_*', 'history', 'search_*', 'sessions', 'watchdog');
$options['skip-tables']['common'] = array('migration_*');

hoặc trên mỗi cơ sở máy chủ như nếu bạn đang sử dụng sql-synchoặc sql-dumpgiữa các điều khiển từ xa:

$aliases['global'] = array(
  // These options will only be set if the alias is used with the specified command.
  'command-specific' => array(
    'sql-sync' => array(
      'structure-tables-key' => 'common',
      'skip-tables-key' => 'common',
      'structure-tables' => array(
        // You can add more tables which contain data to be ignored by the database dump
        'common' => array('cache', 'cache_*', 'history', 'search_*', 'sessions', 'watchdog'),
      ),
      'skip-tables' => array(
        'common' =>array('migration_*'),
      ),
    ),
    'sql-dump' => array(
      'ordered-dump' => FALSE,
      'structure-tables-key' => 'common',
      'skip-tables-key' => 'common',
    ),
  ), // end: command-specific
);

Sau đó, bạn có thể tải cài đặt này vào máy chủ của mình thông qua:

$aliases['stage'] = array(
  // ...
) + $aliases['global'];

Sau đó, bạn có thể thử một cái gì đó như:

drush @source sql-dump | drush @self sql-cli

Để theo dõi tiến trình, bạn có thể thêm trình xem đường ống ( pv) ở giữa (như ... | pv | ...).

Xem thêm:


0

Bạn dường như đã giải quyết vấn đề, nhưng đây là một vấn đề cho tôi:

drush sql-dump> mydb.sql

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.