Saya mendapat server database MySQL produksi Ubuntu 10,04 di mana ukuran total database adalah 260 GB sementara ukuran partisi root sendiri 300 GB di mana DB disimpan, pada dasarnya berarti sekitar 96% dari / penuh dan tidak ada ruang tersisa untuk menyimpan dump / cadangan dll. Tidak ada disk lain yang terpasang ke server sampai sekarang.
Tugas saya adalah untuk memigrasi basis data ini ke server lain yang duduk di pusat data yang berbeda. Pertanyaannya adalah bagaimana melakukannya secara efisien dengan downtime minimum?
Saya sedang berpikir dalam garis:
- Permintaan untuk melampirkan drive tambahan ke server dan melakukan dump di drive itu. [EDIT: Sekarang tidak mungkin.]
- Transfer dump ke server baru, pulihkan dan buat server baru yang sudah ada untuk menyimpan data dalam sinkronisasi
- Saat migrasi diperlukan, hentikan replikasi, perbarui konfigurasi budak untuk menerima permintaan baca / tulis dan buat server lama hanya-baca sehingga tidak akan menerima permintaan penulisan apa pun dan beri tahu pengembang aplikasi untuk memperbarui di sana konfigurasi dengan alamat IP baru untuk db.
Apa saran Anda untuk meningkatkan ini atau pendekatan lain yang lebih baik untuk tugas ini?
Sebuah dump dan restore dari database yang ukurannya akan memakan waktu berjam-jam. Saya akan, Tergantung pada versi mysql selama penambahan nomor versi dan tidak ada lompatan dalam jumlah revisi utama. Anda harus dapat mengambil file database mentah di / var / lib / mysql dan meletakkannya di server baru, mengatur izin dan menjalankan server dengan saklar --skip-grant-tables. Tambahkan hibah yang diperlukan untuk pengguna yang mencerminkan alamat IP baru kemudian mulai kembali secara normal.
Saya akan membahas ukuran basis data Anda karena terlalu besar untuk efisien.
sumber
Anda dapat mengikuti langkah-langkah ini untuk memigrasi basis data InnoDB yang sangat besar ini.
Tugas ini akan memakan waktu beberapa jam. Untuk meminimalkan pengaruh skrip hotcopy pada server langsung, tetapkan prioritas rendah untuk itu menggunakan renice
$ renice -n 5 -p <SCRIPT-PID>
Anda mungkin mengalami kelambatan selama proses ini tetapi jelas tidak ada downtime. Percona XtraBackup akan membuat hotcopy yang lebih cepat dan lebih sedikit sumber daya dibandingkan dengan mysqldump. Ini sangat ideal untuk database InnoDB besar.
Bergantung pada pola penggunaan dan statistik, Anda dapat menjalankan proses ini ketika ada lalu lintas minimum di server. Mungkin melakukan ini selama akhir pekan adalah ide yang bagus? Di atas hanyalah garis besar dari proses. Anda mungkin perlu membaca dokumentasi Percona XtraBackup dan SSHFS.
sumber
Anda bisa membuang database langsung ke server jauh ...
... SQL harus dikompres dengan baik sehingga Anda harus melakukan ini jauh lebih cepat dengan salah satu opsi ini meskipun itu akan tergantung pada jumlah RAM yang Anda miliki di dalam kotak juga ...
sumber