Saya sudah melihat sedikit ini. Saya menyadari ada pertanyaan serupa tentang Stack Overflow, dan Amazon sendiri memiliki dokumen yang membantu memberi saran di sini:
http://aws.amazon.com/articles/2933
Kekhawatiran saya adalah sebagai berikut:
Amazon merekomendasikan penggunaan mysqldump
hanya untuk "sejumlah kecil data", yang mereka definisikan kurang dari 1GB. Basis data yang ingin saya migrasi lebih dari 20GB.
Satu hal yang menyenangkan tentang mysqldump
itu, adalah memiliki --single-transaction
bendera, yang memungkinkan saya untuk memastikan status DB yang konsisten dengan satu titik waktu.
Untuk jumlah data yang lebih besar, rekomendasi Amazon adalah mengekspor database ke file datar (mis., CSV) dan kemudian menggunakannya mysqlimport
untuk mengimpornya ke RDS. Namun, cara terbaik yang saya tahu bagaimana melakukan ini adalah melalui SELECT ... INTO OUTFILE
perintah, yang hanya mengoperasikan satu tabel pada satu waktu. Kelemahan dari ini, tentu saja, adalah tidak memberikan jaminan konsistensi --single-transaction
.
Saya kira saya bisa memastikan konsistensi dengan menurunkan seluruh DB sementara; tapi saya ingin menghindari itu jika memungkinkan.
- Apa cara terbaik untuk mendapatkan basis data besar saya (> 20GB) ke dalam file datar sehingga saya dapat menggunakannya
mysqlimport
? - Jika itu memang
SELECT ... INTO OUTFILE
perintah, bagaimana cara mengekspor semua tabel dalam database (lebih disukai tanpa harus melakukan satu per satu)? - Apakah ada cara yang baik untuk memastikan konsistensi selama ini?
--opt
default, yang mempercepat. Saya pikir kami butuh 6 jam untuk memuat ulang ke server yang kuat, tetapi transisi adalah transisi ... :)Jawaban:
Saya baru-baru ini menghabiskan banyak waktu untuk mencari tahu transisi 15GB ke RDS. Akhirnya menemukan skrip di salah satu forum amazon yang saya modifikasi untuk saya gunakan sendiri dan tampaknya berfungsi dengan baik. Saya tidak yakin apakah Anda dapat melakukan transaksi tunggal, tetapi dump itu sendiri sangat cepat dibandingkan dengan transfer yang sebenarnya. Saya pikir 15GB hanya membutuhkan waktu 12 menit untuk dibuang, jadi meskipun tidak memiliki opsi transaksi tunggal, saya tidak berpikir Anda akan memiliki rentang waktu yang sangat lama untuk terjadinya inkonsistensi. Saya tidak yakin apakah itu cukup baik untuk Anda, tetapi saya menemukan solusinya jauh lebih anggun daripada metode flat file.
sumber