Saya mengimpor 7 GB foobar.sql
untuk mengembalikan tabel di database lokal.
$ mysql -h localhost -u root 'my_data' < foobar.sql
$ mysql --version
/usr/local/mysql/bin/mysql Ver 14.12 Distrib 5.0.96, for apple-darwin9.8.0 (i386) using readline 5.1
Bagaimana saya bisa memonitor perkembangannya?
Jawaban:
Jika Anda hanya mengimpor dari file dump dari CLI di * nix, mis
maka pertama instal pipa viewer di OS Anda kemudian coba sesuatu seperti ini:
yang akan menampilkan bilah progres saat program berjalan.
Ini sangat berguna dan Anda juga dapat menggunakannya untuk mendapatkan perkiraan untuk kemajuan mysqldump.
pv membuang
sqlfile.sql
dan meneruskannya ke mysql (karena operator pipa). Saat dumping, ini menunjukkan kemajuan. Yang keren adalah bahwa mysql mengambil data hanya secepat itu dapat memajukannya, jadi pv dapat menunjukkan kemajuan impor. Saya tidak punya bukti. Tapi sepertinya begitu. Saya kira ada beberapa buffer yang digunakan, tetapi pada beberapa titik saya pikirmysql
tidak membaca data lagi ketika masih diproses.sumber
sudo hd /dev/sda1 | less
dan tidak memiliki seluruh partisi sistem Anda dalam memori.pv
tidak akan terlalu akurat dalam banyak kasus karena beberapa potongan SQL akan membutuhkan waktu lebih lama untuk diproses daripada yang lain. Baris yang merupakan sisipan sederhana akan berjalan jauh lebih cepat daripada yang dibuat pada indeks pada tabel yang sudah memiliki banyak baris, misalnya. Tetapi gagasan kasar tentang kemajuan, output harus membantu kecuali jika buffer baca yang digunakanmysql
sangat besar (untuk input 7Gb, buffer harus sangat besar untuk membuatpv
output tidak berguna sama sekalimysqldump
?Jika Anda sudah memulai impor, Anda dapat menjalankan perintah ini di jendela lain untuk melihat ukuran database Anda saat ini. Ini dapat membantu jika Anda mengetahui ukuran total file .sql yang Anda impor.
Kredit untuk: http://forums.mysql.com/read.php?108,201578,201578
The MySQL 8.0 Referensi negara berikut tentang akurasi:
sumber
Saat Anda menjalankan mysqldump dari satu basis data, semua tabel ditumpuk dalam urutan abjad.
Secara alami, reload mysqldump ke dalam basis data juga dalam urutan abjad.
Anda bisa melakukan PROSES SHOW; dan temukan Koneksi DB yang menjalankan mysqldump. Ketika dump dimuat, Koneksi DB akan hilang.
Jika Anda ingin tahu tabel apa yang ada di dumpfile, jalankan ini terhadap foobar.sql
UPDATE 2012-05-02 13:53 EDT
Maaf karena tidak memperhatikan bahwa hanya ada satu meja.
Jika tabelnya adalah MyISAM, satu-satunya cara untuk memantau adalah dari sudut pandang OS. Alasannya? Tabel ini dikunci pada seluruh isi ulang. apa yang kamu cari? Ukuran file
.MYD
dan.MYI
. Tentu saja, Anda perlu membandingkannya dengan ukuran tabel sebelumnya di server DB lain yang Anda impor.Jika tabelnya adalah InnoDB dan Anda telah mengaktifkan innodb_file_per_table , satu-satunya cara untuk memantau adalah dari sudut pandang OS. Alasannya? Tabel ini dikunci pada seluruh isi ulang. apa yang kamu cari? Ukuran
.ibd
file. Tentu saja, Anda perlu membandingkannya dengan ukuran tabel sebelumnya di server DB lain yang Anda impor.Jika tabelnya adalah InnoDB dan Anda telah menonaktifkan innodb_file_per_table , bahkan sudut pandang OS pun tidak bisa membantu.
UPDATE 2012-05-02 13:56 EDT
Saya membahas sesuatu seperti ini tahun lalu: Bagaimana cara saya mendapatkan% kemajuan untuk "type db.sql | mysql"
UPDATE 2012-05-02 14:09 EDT
Karena mysqldump standar menulis-mengunci tabel seperti ini:
kemudian, tidak ada cara untuk mendapatkan kemajuan dari dengan mysql sampai kunci tabel dilepaskan.
Jika Anda bisa mendapatkan
LOCK TABLES
danUNLOCK TABLES
berkomentar keluar dari dumpfile ...sumber
.MYD
dan.MYI
ukuran file?Setiap 2 detik Anda akan melihat proses berjalan.
Jika Anda menginginkannya lebih jarang maka tambahkan di
-n x
mana x adalah jumlah detik. 5 detik adalah:sumber
Jika Anda hanya ingin memeriksa apakah macet, Anda dapat meminta
dan lihat apa yang sedang dieksekusi.
sumber
Sebagai solusi untuk seseorang yang tidak bisa mendapatkan pv untuk bekerja atau untuk siapa pv berbohong. Anda dapat memonitor ukuran file ibdata1 di / var / lib / mysql yang berisi data. Ini akan berakhir dengan ukuran yang sama (atau sekitar) dari filesize di server sumber Anda.
Jika ada banyak tabel, Anda juga dapat melihatnya muncul satu per satu di / var / lib / mysql / <database name>.
Saya kebetulan menggunakan fakta ini baru-baru ini ketika database jangka panjang telah membangun file log sekitar 20G selama tiga atau empat tahun. Saya perhatikan pemindahan itu memakan waktu lama dan menggunakan teknik ini untuk memantau kemajuan.
Saya pikir sangat tidak mungkin bahwa hari akan subuh ketika database tidak melibatkan file di suatu tempat atau lainnya. Sementara itu, Anda dapat memonitor file untuk melihat bagaimana kemajuan transfer. Metode yang saya sarankan adalah sesuatu yang bisa Anda lakukan dalam satu atau lain bentuk sejak database sql pertama ditulis. Saya tidak pernah berniat untuk menyarankan bahwa itu adalah jenis teknik "resmi" mana joki manual bisa jatuh kembali. Ini mengasumsikan tingkat kemahiran umum dengan komputer pada umumnya dan unix pada khususnya.
sumber
Jika DB Anda tenang (artinya tidak ada pengguna lain yang aktif) dan Anda hanya ingin melihat aktivitas baca / tulis, mengapa tidak melakukan sesuatu seperti:
Anda akan melihat jumlah membaca / menulis / memasukkan / menunggu / pembaruan.
Jika Anda memasukkan misalnya, Anda akan melihat sesuatu seperti:
Di mana 28.958 adalah jumlah baris yang dimasukkan untuk interval Anda (10 detik dalam kasus saya).
sumber
Untuk seseorang yang mencari contoh penampil pipa menggunakan
mysqldump
Anda hanya akan melakukan sesuatu seperti ini:The
-W
bendera hanya memberitahu pv menunggu byte pertama datang sebelum menunjukkan kemajuan (setelah prompt)sumber
Anda dapat memonitor Impor di folder \ Msql \ Data [nama DB]
sumber
Ok, pekerjaan lain di sekitar. Tapi itu mungkin pilihan yang terburuk dan tidak akurat.
Yang mengatakan, inilah solusi saya untuk Windows:
Buka Task Manager dengan menekan
Salin kecepatan nilai disk "mysqld.exe"
Masukkan itu ke dalam kalkulator seperti ini: https://techinternets.com/copy_calc?do
Perkirakan ETA. Kasus saya adalah:
Hasil:
sumber
Saya sangat terkejut tidak ada yang hanya memposting 'mysql -v' sebagai opsi. Jika macet, output akan berhenti.
sumber
mysql -v
tidak akan menawarkan. Selain itu, memuntahkan data 7 GB ke terminal akan secara signifikan memperlambat pemulihan.