Skenario cadangan MySQL saya saat ini adalah untuk mereplikasi db kami ke server kedua dan menjalankan mysqldump di server itu untuk menghapus segala downtime dari penguncian tabel atau baris. Ini bekerja dengan baik tetapi biaya $ 150 per bulan untuk server kedua (hosting Australia jauh lebih mahal daripada AS.)
Saya membaca banyak pertanyaan di sini tentang ini, kebanyakan orang memerlukan bantuan dengan backup terjadwal dan yang lainnya yang bukan yang saya butuhkan. Saya perlu mysqldump (lebih disukai setiap 4 jam) tanpa downtime. Db ~ 7GB tidak terkompresi, sehingga mysqldump dapat memakan waktu tergantung pada server.
Saya telah mempertimbangkan mereplikasi ke mesin yang sama, tetapi saya tidak ingin budak memakan memori yang sangat dibutuhkan. Saya tidak yakin dapat membatasi penggunaan memori berdasarkan basis per db? Either way, ini akan menempatkan beban pada server sambil membuang db.
Saya baru saja membaca ini http://www.zmanda.com/quick-mysql-backup.html dan kelihatannya bagus, $ 300 per tahun ok, itu menghemat banyak hal.
Sayangnya saya tidak dapat mereplikasi ke Amazon RDS tetapi saya bisa mereplikasi ke contoh RC2 mikro tetapi replikasi akan terjadi over-net dan ping adalah ~ 220ms.
Saya melihat beberapa orang di sini berbicara tentang snapshot LVM yang mungkin merupakan pilihan yang baik. Saya tidak tahu banyak tentang opsi ini.
Pendapat akan sangat dihargai.
sumber
Jawaban:
Jika Anda menggunakan tabel innodb, Anda bisa menggunakan
http://www.percona.com/docs/wiki/percona-xtrabackup:start
Itu akan mengambil dump database Anda yang dapat diimpor oleh alat mereka juga tanpa mengunci. Saya percaya jika Anda memiliki tabel myisam itu mengunci mereka.
sumber
Jika Anda menggunakan innodb atau backend lain yang sepenuhnya transaksional, Anda dapat menggunakan
mysqldump --single-transaction ...
. Saya telah menggunakan ini pada basis data yang cukup besar (~ 100GB) dengan hasil yang baik; jika database berada di bawah beban yang berat itu bisa memakan waktu berjam - jam tetapi tidak berfungsi tanpa mengunci tabel Anda. Replikasi umumnya lebih baik tetapi kadang-kadang Anda menginginkan file dump yang bagus. Perlu diingat bahwa Anda dapat membuang budak replikasi mysql juga.Dari halaman mysqldump (perhatikan peringatan tentang operasi yang akan bocor ke dalam transaksi):
sumber
Saya tidak melihat banyak masalah mereplikasi koneksi latensi tinggi ke VPS murah di AS. Latensi tinggi seharusnya tidak terlalu menjadi masalah. Replikasi dirancang untuk dapat mengejar ketinggalan dengan cepat bahkan ketika seorang budak jatuh berjam-jam , yaitu dapat beroperasi secara tidak sinkron.
Selama Anda dapat mempertahankan bandwidth keluar sebanyak itu pada paket hosting Australia Anda.
Berikut ini adalah respons yang jauh lebih rinci untuk apakah latensi tinggi itu penting
sumber
Secara realistis, hanya waktu yang diperlukan untuk benar-benar mengekspor basis data akan menjadi tidak aktif. Lakukan selama periode waktu yang cukup lambat dan seharusnya tidak ada masalah APA PUN. Apa yang sebenarnya diharapkan oleh departemen TI pada anggaran itu?
Anda harus dapat mysqldump database 7GB dalam 5-10 menit MAX, lepaskan kunci baca / tulis dan downtime akan berakhir. Anda kemudian dapat menemukan cara bandwidth paling efektif untuk file 7GB ke server baru (baca: KOMPRESI TINGGI). Anda punya banyak waktu untuk mentransfer file dan mengimpor ke MySQL di server baru. Kemudian, masukkan informasi masterlog dan mulai replikasi. Seharusnya sepotong kue!
Dokumentasi MySQL sangat fantastis : http://dev.mysql.com/doc/refman/5.0/en/replication.html
sumber
Tentu saja Anda bisa - Anda hanya perlu menjalankan slave dengan /etc/my.cnf yang berbeda
Anda bahkan dapat melakukan hal-hal untuk memanipulasi prioritas penjadwalan / afinitas CPU pada master dan slave menggunakan nice / renice dan tasket (dengan asumsi itu adalah server Linux).
Latensi cukup tidak relevan - yang penting adalah bandwidth - dan bandwidth database (dengan asumsi Anda tidak mereplikasi data sesi) adalah beberapa urutan besarnya lebih kecil dari bandwidth HTTP.
Tetapi strategi yang Anda diskusikan tidak memungkinkan untuk pemulihan pada saat seperti itu.
Saya pikir opsi termurah akan menjadi budak di mesin yang sama - dan jika itu mempengaruhi kinerja di luar apa yang dapat Anda konfigurasi ulang maka tingkatkan paket hosting saat ini.
Anda mungkin juga mempertimbangkan menjalankan slave yang terputus: aktifkan log bin pada server saat ini. Dapatkan cadangan, pulihkan cadangan di mesin lokal, lalu salin log tempat sampah saat diputar dan putar ke depan pada DBMS lokal .
sumber
Saran saya:
1 - simpan akun / server kedua Anda dan terapkan replikasi ke database di akun / server asli Anda.
2 - hentikan replikasi ke akun / server kedua.
3 - memantau kinerja selama beberapa hari. Pastikan Anda memantaunya cukup lama untuk memasukkan periode tersibuk Anda.
4 - siap untuk beralih ke pengaturan lama Anda jika ada masalah kinerja utama. Inilah alasan mengapa Anda menyimpan akun kedua.
5 - beli lebih banyak kapasitas / tingkatkan server di akun asli Anda. Ini harus lebih murah daripada membayar untuk dua server yang saya percaya.
6 - batalkan akun kedua.
Semoga berhasil!
sumber