Downtime untuk meningkatkan penyimpanan AWS RDS?

22

Saya mencari untuk meningkatkan penyimpanan dua instance RDS (hanya ruang penyimpanan yang dialokasikan, bukan tipe instance atau parameter lainnya). Dokumentasi di https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html#USER_PIOPS.ModifyingExisting menyarankan:

Anda dapat mengubah dari penyimpanan standar ke penyimpanan IOPS yang Diisi, atau dari IOPS yang Diisi menjadi penyimpanan standar, serta meningkatkan penyimpanan, dengan sedikit atau tanpa downtime.

Saya pasti akan menjadwalkan jendela pemeliharaan sebelum melakukan perubahan. Tetapi dokumentasi tampaknya agak kabur di daerah ini. Untuk seseorang yang mungkin pernah melakukan ini sebelumnya, apa yang "sedikit atau tidak ada downtime"? Bisakah saya mengharapkan 5 detik atau lebih seperti 5 menit?

Pembaruan Juli, 2019:

Saya telah memperbarui tautan ke dokumentasi AWS yang benar dan diperbarui (yang rusak). Dokumentasi yang lebih baru memiliki uraian yang membantu menjawab pertanyaan asli juga:

Dalam kebanyakan kasus, penskalaan penyimpanan tidak memerlukan pemadaman apa pun dan tidak menurunkan kinerja server. Setelah Anda mengubah ukuran penyimpanan untuk instance DB, status instance DB adalah Storage-optimization. Instance DB beroperasi penuh setelah modifikasi penyimpanan. Namun, Anda tidak dapat membuat modifikasi penyimpanan lebih lanjut baik selama enam jam atau sementara status instance DB adalah optimasi penyimpanan, mana yang lebih lama.

Namun, kasus khusus adalah jika Anda memiliki turunan SQL Server DB dan belum mengubah konfigurasi penyimpanan sejak November 2017. Dalam kasus ini, Anda mungkin mengalami pemadaman singkat beberapa menit ketika Anda memodifikasi turunan DB Anda untuk meningkatkan alokasi penyimpanan. Setelah pemadaman, instance DB sedang online tetapi dalam kondisi optimisasi Penyimpanan. Performa mungkin menurun selama optimisasi penyimpanan.

Andy Shinn
sumber

Jawaban:

21

Pertama, perhatikan bahwa Anda mungkin melihat operasi yang salah - Anda menjelaskan bahwa Anda ingin mengubah ukuran penyimpanan , tetapi mengutip dokumentasi yang menjelaskan jenis penyimpanan . Ini adalah distorsi penting: RDS menyarankan agar Anda tidak akan mengalami pemadaman karena mengubah ukuran penyimpanan, tetapi Anda akan mengalami pemadaman karena mengubah jenis penyimpanan.

Harapkan kinerja yang menurun untuk mengubah ukuran penyimpanan, durasi dan dampaknya tergantung pada beberapa faktor:

  • Jenis instance RDS Anda
  • Konfigurasi
    • Apakah ini akan terjadi selama pemeliharaan?
    • Apakah perubahan ini terjadi pertama kali pada budak Multi-AZ Anda, dan kemudian gagal?
  • Ukuran basis data saat ini
  • Ukuran basis data kandidat
  • Kapasitas AWS untuk menangani permintaan ini pada waktu yang diminta, di zona ketersediaan yang diminta, di wilayah yang Anda minta
  • Jenis mesin (untuk pengguna Amazon Aurora , penambahan penyimpanan dikelola oleh RDS sesuai kebutuhan dalam peningkatan 10 GB, sehingga diskusi ini dapat diperdebatkan)

Dengan mengingat hal ini, Anda akan lebih baik dilayani dengan menguji sendiri, di lingkungan Anda, dan dengan persyaratan Anda. Coba bereksperimen dengan yang berikut:

  • Mengembalikan instance RDS baru dari snapshot instance Anda yang ada, dan melakukan operasi ini pada klon baru.
  • Dengan klon ini:
    • Tambah ukuran pada waktu yang berbeda dalam sehari, saat Anda mengharapkan beban berbeda pada AWS.
    • Tingkatkan ke berbagai ukuran.
    • Cobalah dengan multi-AZ. Lihat apakah perubahan waktu nyata Anda dibandingkan dengan tidak mengaktifkan multi-AZ.
    • Cobalah selama jendela pemeliharaan, dan bandingkan dengan langsung menerapkan perubahan.

Ini akan lebih mahal (tidak harus ... Anda bisa melakukan sebagian besar dalam 1-3 contoh-jam), tetapi Anda akan mendapatkan jawaban yang jauh lebih bersih daripada menjajakan pengalaman kami dalam segudang RDS yang berbeda lingkungan.

Jika Anda masih mencari jawaban "kasar", saya akan menyarankan untuk merencanakan setidaknya penurunan kinerja dalam lingkup menit, bukan detik - lagi sangat tergantung pada lingkungan dan konfigurasi Anda.

Sebagai referensi, saya baru-baru ini menerapkan operasi yang tepat ini untuk menambahkan 10GB ke contoh 40GB db.m1.small pada Sabtu sore (dalam EST). Mesin virtual tetap dalam keadaan "memodifikasi" selama sekitar 17 menit. Perhatikan bahwa kondisi pengubahan tidak menjelaskan waktu henti yang sebenarnya, melainkan durasi operasi yang sedang diterapkan . Anda tidak akan dapat menerapkan perubahan tambahan ke instance aktual (walaupun Anda masih dapat mengakses DB itu sendiri) dan ini juga merupakan durasi yang Anda harapkan terjadi penurunan kinerja.

Jika Anda hanya berencana mengubah ukuran penyimpanan, pemadaman tidak terduga, tetapi perhatikan bahwa hal itu dapat terjadi jika perubahan ini dilakukan bersamaan dengan operasi lain seperti mengubah pengenal instan / kelas, atau jenis penyimpanan.

Anthony Neace
sumber
Paragraf terakhir cukup banyak apa yang saya cari. Itu sangat membantu. Terima kasih!
Andy Shinn
3
Saya lebih dari satu jam untuk menambahkan 10GB ke 10GB m3.xlarge DB pada jam 3AM ketika hampir tidak ada lalu lintas.
Neo
2
Satu lagi titik data, mengonfirmasi ~ linear. Butuh 2 jam dan 50 menit untuk menambahkan 100G ke 300G DB.
Joan Smith
2
Meningkatkan kapasitas 10G ke kapasitas 100G hanya membutuhkan waktu 23 menit untuk saya, pada db.t2.small dengan General Purpose (SSD) dan MultiAZ. Perhatikan juga, jika Anda menambah ukuran karena DB sudah LENGKAP, itu akan tetap non-fungsional sampai operasi selesai.
davur
1
Peningkatan dari 100 hingga 200GB penyimpanan PIOPS di bawah beban, ~ 10 pagi pasifik, membutuhkan waktu sekitar 30 menit dan tidak secara signifikan mempengaruhi throughput / latensi. (Baca / tulis IOPS melonjak secara signifikan selama waktu ini.)
Taylor Hughes
7

Karena Anda hanya meningkatkan ukuran penyimpanan dan tidak mengubah jenis instance atau apa pun tidak boleh ada downtime, tetapi mungkin ada 'kinerja yang menurun' saat operasi dilakukan.

Referensi yang Anda kutip ambigu karena membahas perubahan tipe penyimpanan pada saat yang sama ketika membahas perubahan ukuran penyimpanan. Jika Anda melihat 'Alokasi Penyimpanan' di tabel di sini:

http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.DBInstance.Modifying.html

Anda akan melihat bahwa itu hanya mengatakan "Performa mungkin menurun" dan tidak ada tentang pemadaman (yang dikatakan terjadi dalam beberapa kasus ketika beralih jenis penyimpanan).

Sebagai referensi, ketika mengubah 15GB db.m3.medium database MySQL menjadi 20GB di eu-west-1 selama hari kerja, konektivitas aplikasi saya ke database tidak terganggu. Namun, baca / tulis IOPS keduanya meningkat menjadi antara 400-700 / s hanya di bawah 20 menit, oleh karena itu referensi untuk kinerja terdegradasi saya kira. Ini dilaporkan untuk instance basis data AZ tunggal dan multi AZ. (Contoh dilaporkan sebagai 'modifikasi' untuk sedikit lebih lama dari ini - sekitar 25 menit.)

Secara alami Anda dapat mencobanya pada instance db yang identik dengan db produksi Anda sebelum melakukannya pada instance db produksi sehingga Anda dapat melihat dengan aman bagaimana perilakunya dalam situasi Anda sebelum melakukannya secara nyata.

Tim
sumber
1
Mengubah jenis penyimpanan (Magnetik <-> gp2 / IOPS yang disediakan) akan menghasilkan pemadaman. Menumbuhkan volume, mengubah gp2 <-> IOPS yang disediakan, atau menyesuaikan IOPS yang disediakan seharusnya tidak menghasilkan pemadaman. Anda tidak dapat mengecilkan volume.
notpeter