Saya perlu memindahkan file besar (tabel MySQL rusak ~ 40GB) ke server terpisah untuk memperbaikinya. (Ketika mencoba memperbaiki pada server produksi saya, ia dengan cepat membunuh server).
Untuk melakukan ini, saya ingin rsync file .frm, .MYI dan .MYD dari server produksi saya ke server cloud.
Saya menyalin file dari / var / lib / mysql / {database} / ke / home / {myuser} sehingga saya tidak perlu mengaktifkan akses root untuk perintah rsync dan 100% yakin file database tidak sedang digunakan (seharusnya tidak ditulis atau dibaca, tetapi jelas saya tidak ingin mematikan basis data produksi saya untuk memastikan).
File pertama yang saya coba salin sekitar 10GB. Saya mentransfer dari satu bagian dari server produksi saya ke yang lain, yaitu ke array disk yang sama.
Sayangnya perintah salin "cp filename newfilename" mengambil begitu banyak sumber daya sehingga server terhenti.
Bagaimana saya bisa menggunakan lebih sedikit sumber daya saat menyalin file ke direktori lain? (Tidak masalah berapa lama).
Dengan asumsi saya berhasil melakukan ini, penggunaan sumber daya apa yang bisa saya harapkan ketika rsyncing file ke cloud?
Adakah yang bisa menyarankan cara yang lebih baik untuk melakukan ini? Saya cepat kehabisan ruang disk sehingga perlu memperbaiki tabel ini dan diarsipkan SECEPATNYA.
sumber
nice
kebiasaan kebanyakan.iotop
juga temanmu.nice -n 20 ionice -c 3 cp /var/lib/mysql/{database}/{table}.MYI /home/{USER}/
Ini memang menambah beban pada server saya sedikit melambat, tetapi situs web tersedia selama durasi transferDua pilihan selain pembatasan bandwidth rsync:
ionice -c 3 cp foo bar
buffer -u 150 -m 16m -s 100m -p 75 -i foo -o bar
ionice
akan berinteraksi dengan penjadwal I / O.buffer
adalah buffer bundar yang dimaksudkan untuk membantu perangkat karakter agar lebih efisien, tetapi-u 150
kehentian sementara 150 mikrodetik antara penulisan yang, menurut manual, mungkin cukup untuk memberikan ruang disk untuk bernafas.Keduanya
ionice
danbuffer
tersedia dalam persediaan Ubuntu.iotop
berguna jika Anda memiliki CONFIG_TASK_DELAY_ACCT dikonfigurasi di kernel Anda, tetapi kotak Ubuntu saya tidak yang sangat membatasi kegunaan perintah. Saya sudah tahu perintah mana yang menenggelamkan hard drive saya, saya hanya ingin memberinya ruang bernapas.Selain itu, ketika salinan sedang berlangsung, lihat output
iostat -x 1
(biasanya dalam paket sysstat) dan lihat bahwa% sibuk bidang untuk perangkat Anda adalah 90% atau kurang selama salin. Jika 99-100%, maka Anda kelaparan proses lain untuk I / O.sumber
ionice -c 3 -p $pidUnison
bekerja serempak pada HDD eksternal, thx !!gunakan rsync dengan --bwlimit = KBPS switch (batas I / O bandwidth; KBytes per detik). bermain-main dengan file yang lebih kecil dan mencoba untuk menemukan campuran yang optimal antara kecepatan transfer dan penggunaan sistem. Monitor di shell kedua dengan "vmstat 1"
sumber
rsync
akan menyalin file secara lokal. Pikirkanrsync --bwlimit=28000 foo.frm /bar/foo.frm
dan tontonlahiostat
. Saya tidak yakin mengapavmstat
akan memberi tahu Anda jika Anda menjenuhkan drive. Cari% sibuk diiostat
.Salah satu alternatifnya adalah:
Tapi saya rasa itu tidak akan berhasil jika $ {src} adalah file yang sedang tumbuh ... dapatkah Anda menyarankan cara untuk menyalin dan menunggu sumber ditutup ...
sumber