Bagaimana cara agar impor basis data Drupal yang sangat besar berfungsi?

7

Saya menggunakan Vagrant dan OracleVM untuk menjalankan Drupal 7. Saya membuat situsnya berjalan dan saya sedang mencoba untuk mengimpor basis data saya. Sejauh ini saya sudah menjalankan drush ccdan membersihkan cache drush, dan kemudian saya lakukan

drush sql-cli < mydb.sql

Perintah drush memakan waktu sangat lama dan saya tidak yakin apakah itu melakukan apa pun. File basis data hanya di bawah satu gigabyte.

Apa yang bisa saya lakukan agar ini berfungsi, atau adakah metode yang lebih baik?

James Ives
sumber

Jawaban:

6

Saya tidak yakin berapa banyak overhead drush yang diletakkan di atas impor SQL besar, saya hanya menggunakannya untuk impor dan kueri yang lebih kecil. Anda dapat mencoba klien mysql sebagai alternatif yang akan menghapus overhead drush.

Jika Anda dapat menginstal penampil pipa pada VM Anda, Anda dapat melihat kemajuan dari perintah yang memakan impor.

pv mydb.sql | drush sql-cli

Atau tanpa overhead drush

pv mydb.sql | mysql -u <DB_USER> -p<DB_PASS> <YOUR_DB>
Shawn Conn
sumber
Terima kasih! Saya menginstal PV dan melacak kemajuannya. Saya salah, db awal adalah 1GB terkompresi, tidak terkompresi sekitar 6. Mungkin mengapa begitu lama!
James Ives
5

The Backup dan Migrasi modul memiliki fitur untuk mengecualikan tabel yang dipilih, seperti:

  • semua tabel cache_ *
  • ctools_views_cache
  • ctools_object_cache
  • banjir
  • sejarah
  • antre
  • tiang sinyal
  • penjaga
  • search_index (biasanya menyimpan banyak ukuran basis data!)

Masalah tentang tabel / data Default untuk dikecualikan , juga termasuk daftar tabel menarik untuk tidak dimigrasi (pilih yang cocok untuk Anda), yaitu (kutipan dari itu):

Saat membuat profil cadangan, modul secara default menetapkan tabel berikut agar data mereka dikecualikan menurut masalah # 209647: Kecualikan saran :

  • cache
  • cache_filter
  • cache_calendar_ical
  • cache_menu
  • cache_page
  • cache_views
  • sesi
  • search_dataset
  • search_index
  • search_keywords_log
  • search_total
  • penjaga
  • accesslog
  • devel_queries
  • devel_times
Pierre
sumber
5

Database yang lebih kecil akan mengimpor lebih cepat, jadi drush cc alldan drush watchdog delete allakan mempercepat, jika menjatuhkan ini adalah pilihan.

Juga, untuk memperluas jawaban Shawn Conn, Anda dapat menggunakan pipa penampil tanpa overhead Drush, dan masih menggunakan Drush untuk mencari mandat database untuk Anda jika Anda menggunakan drush sql-connectbukan drush sql-cli. Cukup gunakan $()untuk mengeksekusi baris mysql yang drush sql-connectmencetak:

pv mydb.sql | $(drush sql-connect)
greg_1_anderson
sumber
5

Lebih baik memangkas database besar pada dump dengan menggunakan drush sql-dumpuntuk membuang file SQL. Ini memberi Anda keuntungan untuk menentukan opsi tambahan untuk melewati tabel tertentu saat membuang (seperti cache atau migrasi tabel).

Ini dapat ditentukan di baris perintah (lihat :)drush help sql-dump atau konfigurasikan di file drushrc Anda seperti yang ditunjukkan pada example.drushrc.phpseperti:

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

atau per basis host seperti jika Anda menggunakan sql-syncatau di sql-dumpantara remote:

$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
);

Kemudian Anda dapat memuat pengaturan ini ke host Anda melalui:

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

Maka Anda dapat mencoba sesuatu seperti:

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

Untuk memantau progres, Anda dapat menambahkan penampil pipa ( pv) di antaranya (seperti ... | pv | ...).

Lihat juga:

kenorb
sumber
0

Anda tampaknya telah menyelesaikan masalah, tetapi ini satu untuk saya:

sql-dump> mydb.sql

Kartagis
sumber