Saat ini kami memiliki satu database MySQL gemuk yang menjalankan beberapa lalu lintas tinggi situs web berbasis Django serta beberapa situs web e-commerce ukuran yang layak. Sebagai hasilnya, kami memiliki cukup banyak database besar menggunakan tabel InnoDB dan MyISAM.
Sayangnya kami baru saja menabrak tembok karena jumlah lalu lintas jadi saya sudah menyiapkan server master lain untuk membantu meringankan pembacaan / cadangan.
Sekarang saat ini saya hanya menggunakan mysqldump dengan beberapa argumen dan terbukti baik-baik saja .. sampai sekarang. Jelas mysqldump adalah metode cepat yang lambat namun saya percaya kami telah melampaui penggunaannya. Saya sekarang membutuhkan alternatif yang baik dan telah mencari ke dalam memanfaatkan utilitas Maatkits mk-parallel-dump atau solusi snapshot LVM.
Versi singkat singkat:
- Saya memiliki database MySQL yang cukup besar yang harus saya backup
- Metode saat ini menggunakan mysqldump tidak efisien dan lambat (menyebabkan masalah)
- Melihat ke sesuatu seperti snapshot mk-parallel-dump atau LVM
Setiap rekomendasi atau ide akan dihargai - karena saya harus melakukan kembali bagaimana kami melakukan hal-hal yang saya lakukan dengan benar / paling efisien :).
sumber
xtrabackup - setidaknya untuk innodb.
sumber
Cara paling umum untuk mengatasi masalah ini adalah dengan mengatur server MySQL lain, yang bahkan dapat berada di mesin yang sama, dan menjalankan replikasi master / slave. Anda kemudian dapat melakukan backup pada slave, tanpa dampak pada master.
sumber
Pada EC2 EBS, saya sekarang menggunakan xfs_freeze. Saya sedang mencari kemungkinan beralih ke xtrabackup di beberapa titik, tetapi ketika saya mencobanya pertama kali, sangat lapar CPU.
sumber
Jika Anda menjalankan replikasi database yang dibagikan di seluruh aplikasi, sepertinya ada pertanyaan yang jelas apakah Anda dapat meningkatkan kinerja banyak hal, termasuk cadangan, dengan mendedikasikan server database ke aplikasi. Berbagi itu bagus, sampai tidak.
sumber
Jika Anda menyimpan tabel MyISAM Anda hanya untuk alasan lawas (Anda tidak perlu repot mengubahnya), inilah yang saya gunakan untuk memperbaikinya dengan mudah:
Anda dapat mengecualikan dan memasukkan basis data dengan awk regex seperti hanya dbs yang dimulai dengan huruf kecil dalam contoh saya di atas. Ini tentu saja akan mengunci tabel selama perubahan.
Kemudian gunakan xtrabackup untuk menyalin seluruh database langsung ke server lain tanpa mengunci tabel atau menggunakan terlalu banyak disk IO (setelah mengatur kunci ssh rsa):
dan kemudian Anda dapat melakukan langkah log berlaku sepenuhnya terpisah dan menghemat ruang disk, IO, dan CPU di server produksi.
Percona's HowTO untuk menggunakan xtrabackup
sumber