Tentang snapshot RDB

Halaman ini memberikan ringkasan snapshot RDB untuk Memorystore for Redis. Halaman ini mengasumsikan bahwa Anda mengetahui Snapshot RDB Redis open source dan fitur impor/ekspor Memorystore.

Untuk mempelajari cara mengaktifkan, menonaktifkan, dan memantau snapshot RDB, lihat Mengelola snapshot RDB.

Memorystore for Redis terutama digunakan sebagai cache dalam memori. Saat menggunakan Memorystore sebagai cache, aplikasi Anda dapat mentoleransi hilangnya data cache atau dapat dengan mudah mengisi ulang cache dari penyimpanan persisten. Namun, ada beberapa kasus penggunaan saat periode nonaktif untuk instance Memorystore, atau hilangnya data instance sepenuhnya, dapat menyebabkan periode nonaktif aplikasi yang lama.

Sebaiknya gunakan Paket Standar sebagai mekanisme utama untuk ketersediaan tinggi. Selain itu, mengaktifkan snapshot RDB pada instance Tingkat Standar memberikan perlindungan tambahan dari kegagalan yang dapat menyebabkan penghapusan cache. Tingkat Standar menyediakan instance dengan ketersediaan tinggi dan beberapa replika, serta memungkinkan pemulihan cepat menggunakan failover otomatis jika instance utama gagal.

Dalam beberapa skenario, Anda mungkin juga ingin memastikan data dapat dipulihkan dari cadangan snapshot jika terjadi kegagalan besar pada instance Tingkat Standar. Dalam skenario ini, pencadangan otomatis dan kemampuan untuk memulihkan data dari snapshot RDB dapat memberikan perlindungan tambahan dari kehilangan data. Dengan mengaktifkan snapshot RDB, jika diperlukan, pemulihan akan dilakukan dari snapshot RDB terbaru.

Snapshot RDB cocok untuk kasus penggunaan yang dapat menoleransi sejumlah data yang sudah tidak berlaku setelah pemulihan. Anda juga dapat menggunakan snapshot RDB untuk mengotomatiskan pencadangan dan pemulihan instance Tingkat Dasar.

Ringkasan snapshot RDB

Fitur snapshot RDB memiliki perilaku berikut:

  • Menyimpan snapshot titik waktu lengkap pada interval yang ditentukan pengguna di penyimpanan persisten.

  • Anda dapat memilih frekuensi dan jadwal snapshot rutin. Interval snapshoot minimum adalah 1h dan maksimum adalah 24h.

  • Instance Tingkat Dasar memulihkan data dari snapshot terbaru setiap kali instance dimulai ulang karena kegagalan, menjalani operasi penskalaan, atau menjalani upgrade untuk versi OSS Redis instance Anda.

  • Secara default, instance Tingkat Standar memulihkan data dari replika, bukan snapshot. Namun, instance Tingkat Standar memulihkan data dari snapshot jika replika tidak tersedia dan instance utama dan replika mengalami mulai ulang.

  • Tidak akan ada biaya tambahan untuk penagihan instance Anda.

Perilaku tambahan

  • Snapshot digunakan untuk pemulihan instance dan tidak tersedia untuk pemulihan manual. Pada waktu tertentu, hanya snapshot terakhir yang berhasil yang tersedia untuk pemulihan. Selain snapshot RDB, Anda dapat menggunakan Ekspor dan Impor untuk mencadangkan dan memulihkan data secara manual.

  • Pada instance Paket Standar, snapshot diambil pada replika untuk meminimalkan penggunaan memori dan CPU pada instance utama. Snapshot tidak pernah diambil dari node utama.

Batasan

  • Tersedia di instance Memorystore for Redis yang menggunakan Redis versi 5.0 atau yang lebih baru.

  • Jika instance Anda memiliki banyak kunci (sekitar 200 juta atau lebih), pembuatan snapshot dan pemulihan RDB dapat menjadi lambat. Pada volume kunci ini, server Redis itu sendiri dapat menjadi bottleneck yang memperlambat snapshot dan pemulihan.

Menjadwalkan snapshot RDB

Saat mengaktifkan snapshot RDB selama pembuatan instance, Anda harus menentukan interval snapshot. Anda juga memiliki opsi untuk menentukan waktu mulai. Bersama-sama, hal ini menentukan jadwal harian snapshot. Interval yang dapat Anda tetapkan adalah 1h, 6h, 12h, dan 24h. Misalnya, jika Anda menetapkan waktu mulai ke pukul 04.00 dan interval ke 1 jam, snapshot akan dimulai pada pukul 04.00 pada hari saat diaktifkan, dan berlanjut setiap jam setelahnya.

Jika waktu mulai tidak ditentukan, snapshot pertama akan diambil sesegera mungkin, dan interval akan dipatuhi. Misalnya, dengan waktu mulai yang tidak ditentukan dan interval 1 jam, snapshot dapat dimulai pukul 06.13 dan dilanjutkan pukul 07.13, 08.13, dll.

Jika waktu mulai ditentukan, jadwal harian akan selalu dipatuhi jika snapshot selalu berhasil dan tidak memerlukan waktu lebih lama dari interval pencadangan yang ditentukan.

Namun, memicu snapshot berdasarkan jadwal harian adalah upaya terbaik. Jadwal dapat menyimpang dari jadwal yang ditentukan pada awalnya karena sejumlah alasan:

  • Jika snapshot gagal atau memerlukan waktu lebih lama dari interval snapshot yang ditentukan untuk selesai, snapshot berikutnya akan segera dimulai setelah selesainya snapshot saat ini.

    • Untuk mencegah snapshot berjalan terus-menerus dan membebani instance, sebaiknya tetapkan interval yang cukup lama agar snapshot selesai.
  • Jika snapshot sudah berlangsung pada waktu yang selaras dengan jadwal harian, snapshot tersebut akan selesai dan waktu snapshot berikutnya dihitung hanya pada interval dari awal snapshot terakhir yang berhasil.

Menyesuaikan jadwal yang ada

Anda mungkin mengalami skenario saat ingin menjeda pengambilan snapshot RDB untuk sementara selama jangka waktu tertentu. Hal ini dapat dilakukan untuk memastikan tidak ada dampak performa selama peristiwa penting atau untuk menonaktifkan snapshot sementara untuk memecahkan masalah performa.

Untuk berhenti mengambil snapshot untuk sementara dalam jangka waktu singkat, Anda dapat menyesuaikan waktu mulai menjadi tanggal mendatang. Setelah Anda menyesuaikan waktu mulai ke tanggal mendatang, snapshot berikutnya tidak akan dimulai hingga tanggal tersebut. Jika Anda melakukannya, snapshot terakhir akan disimpan setidaknya selama 7 hari dan digunakan jika terjadi pemulihan.

Untuk mempelajari lebih lanjut cara menyesuaikan jadwal snapshot, lihat Menyesuaikan jadwal snapshot.

Perilaku pemulihan

Instance Redis Tingkat Dasar memicu pemulihan setiap kali instance dimulai ulang. Operasi umum yang memicu mulai ulang adalah penskalaan dan mengupgrade versi instance Anda. Snapshot RDB mempertahankan data instance Tingkat Dasar selama operasi ini yang menyebabkan mulai ulang, pemeliharaan terencana, dan kegagalan sistem yang tidak terduga.

Instance Redis Tingkat Standar melakukan failover ke replika sebagai mekanisme pemulihan utama, bukan memuat dari snapshot. Instance Tingkat Standar dipulihkan dari snapshot saat pemulihan dari replika gagal.

Konsistensi data saat pemulihan

Jika diaktifkan, snapshot RDB akan melakukan upaya terbaik untuk memastikan pencadangan terjadi pada interval yang ditentukan, tetapi hal ini tidak dapat dijamin. Snapshot dapat gagal karena beberapa alasan. Lihat praktik terbaik untuk mengetahui cara mengonfigurasi dan memantau instance saat snapshot RDB diaktifkan.

Jika snapshot gagal secara berurutan pada beberapa interval, pencadangan terakhir yang tersedia dapat menjadi usang secara arbitrer.

Kehilangan data terburuk untuk pemulihan dari snapshot adalah jumlah interval yang ditentukan sejak snapshot terakhir yang baik dimulai dan waktu untuk menyimpan snapshot berikutnya ke penyimpanan. Jika terjadi insiden pemulihan, gunakan metrik last_success_age untuk melihat jangka waktu kehilangan data.

Sebaiknya tetapkan pemberitahuan untuk mendeteksi kegagalan snapshot terjadwal dan mengambil tindakan korektif. Untuk mempelajari lebih lanjut cara menetapkan pemberitahuan, lihat Memantau snapshot.

Waktu pemulihan

Instance tidak tersedia saat instance memulihkan dari snapshot. Waktu pemulihan bergantung pada ukuran snapshot. Untuk memahami waktu pemulihan yang diprediksi, periksa metrik RDB recovery remaining time menggunakan Cloud Monitoring di konsol Google Cloud.

Mengurangi pemulihan lambat

Terkadang, pemulihan dari snapshot mungkin memerlukan waktu lebih lama dari yang diharapkan. Anda mungkin perlu melakukan tindakan agar aplikasi terhubung kembali ke Redis secepat mungkin.

Dalam situasi ini, Anda dapat membuat instance Redis baru dan mengarahkan traffic aplikasi ke instance tersebut. Kemudian, Anda dapat mentransfer data yang dipulihkan ke instance baru setelah instance asli pulih.

Kegagalan snapshot dan kegagalan pemulihan

Kegagalan snapshot

Setiap snapshot yang gagal akan dilaporkan ke Cloud Monitoring, dan snapshot akan segera dicoba lagi. Kegagalan snapshot berturut-turut meningkatkan jumlah data yang hilang jika terjadi pemulihan karena data yang dipulihkan menjadi semakin usang. Untuk mengetahui informasi tentang cara mendeteksi dan memecahkan masalah kegagalan snapshot, lihat Memantau snapshot.

Kegagalan pemulihan

Kegagalan pemulihan jarang terjadi, tetapi dapat terjadi. Jika terjadi kegagalan pemulihan, instance akan dipulihkan tanpa data.

Praktik terbaik

Untuk hasil terbaik dalam mencadangkan instance dengan snapshot RDB, Anda harus mengikuti praktik terbaik yang dijelaskan di bawah:

Pengelolaan memori

Snapshot RDB menggunakan fork proses dan mekanisme'copy-on-write' untuk mengambil snapshot instance. Bergantung pada pola penulisan ke instance, memori yang digunakan instance akan bertambah saat halaman yang disentuh oleh penulisan disalin. Dalam kasus terburuk, jejak memori dapat dua kali lipat ukuran data dalam instance.

Untuk memastikan instance memiliki memori yang memadai untuk menyelesaikan snapshot, Anda harus menetapkan maxmemory-gb ke 80% kapasitas instance sehingga 20% disediakan untuk overhead. Lihat Praktik terbaik pengelolaan memori untuk mempelajari lebih lanjut. Overhead memori ini, selain Memantau snapshot, membantu Anda mengelola beban kerja untuk mendapatkan snapshot yang berhasil.

Snapshot yang sudah tidak berlaku

Memulihkan instance dari snapshot yang sudah tidak berlaku dapat menyebabkan masalah performa untuk aplikasi Anda saat mencoba merekonsiliasi sejumlah besar kunci yang sudah tidak berlaku atau perubahan lain pada database Anda seperti perubahan skema.

Jika Anda merasa snapshot terlalu lama, atau instance Anda telah mengalami perubahan penting lainnya yang sulit disatukan dengan snapshot, Anda dapat menonaktifkan, lalu mengaktifkan kembali snapshot RDB. Tindakan ini akan menghapus snapshot yang ada, sehingga Anda dapat menghindari pemulihan dari snapshot yang sudah tidak berlaku.

Untuk memantau snapshot yang sudah tidak berlaku, tetapkan pemberitahuan pada metrik last_status snapshot RDB dan last_success_age snapshot RDB.

Pemulihan yang lebih lama dari snapshot

Sebaiknya Tetapkan pemberitahuan untuk metrik redis.googleapis.com/server/uptime agar Anda diberi tahu jika instance tidak tersedia.

Jika instance tidak tersedia dan pemulihan dari snapshot memerlukan waktu terlalu lama, Anda dapat membuat instance Redis baru dan mengarahkan traffic ke instance tersebut. Setelah instance Redis asli pulih, Anda dapat mentransfer data yang dipulihkan ke instance baru.

Dampak performa snapshot RDB

Bergantung pada pola beban kerja Anda, snapshot RDB dapat memengaruhi performa instance dan meningkatkan latensi untuk aplikasi Anda.

Bergantung pada jumlah potensi kehilangan data yang dapat ditoleransi aplikasi Anda, Anda dapat meminimalkan dampak performa snapshot RDB dengan menjadwalkannya untuk berjalan selama periode traffic instance yang rendah.

Gunakan waktu mulai dan interval untuk menjadwalkan snapshot pada waktu yang diperlukan. Misalnya, jika beban Anda sangat rendah dari pukul 01.00 hingga 04.00, Anda dapat menetapkan waktu mulai ke pukul 03.00 dan menetapkan interval ke 24 jam.

Jika sistem Anda memiliki beban yang konstan dan memerlukan snapshot yang sering, Anda harus mengevaluasi dampak performa dengan cermat, dan mempertimbangkan manfaat penggunaan snapshot RDB untuk beban kerja.

Memantau snapshot

Penting untuk memantau snapshot, dan menetapkan pemberitahuan untuk snapshot yang gagal. Snapshot yang gagal dapat menunjukkan instance yang kelebihan beban yang mungkin terus mengalami kesulitan untuk memulihkan dari snapshot.

Untuk daftar metrik yang tersedia untuk memantau snapshot, lihat Metrik snapshot RDB. Untuk menerima pemberitahuan tentang snapshot yang gagal, tetapkan pemberitahuan untuk metrik last_status snapshot RDB. Anda juga dapat menggunakan Konsol Google Cloud untuk memeriksa kegagalan.

Memantau dampak performa

Anda dapat memantau dampak performa yang dihasilkan snapshot terhadap instance Memorystore dengan melihat metrik yang tersedia melalui Cloud Monitoring seperti penggunaan CPU, penggunaan memori, dll. Jika Anda melihat penurunan performa, Anda dapat menggunakan metrik in_progress snapshot RDB untuk menentukan apakah snapshot sedang berlangsung saat masalah performa terdeteksi.

Langkah selanjutnya