Tentang snapshot RDB

Halaman ini memberikan ringkasan snapshot RDB untuk Memorystore for Redis. Halaman ini mengasumsikan bahwa Anda telah mengetahui Snapshot RDB dan fitur import/export 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 menoleransi hilangnya data cache atau dapat dengan mudah mengisi ulang cache dari penyimpanan persisten. Namun, ada beberapa kasus penggunaan ketika periode nonaktif untuk instance Memorystore, atau kehilangan data instance sepenuhnya, dapat menyebabkan waktu nonaktif aplikasi yang lama.

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

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

Snapshot RDB cocok untuk kasus penggunaan yang dapat menoleransi sejumlah data yang usang 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 point-in-time lengkap pada interval yang ditentukan pengguna di penyimpanan persisten.

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

  • Instance Tingkat Dasar memulihkan data dari snapshot terbaru setiap kali instance dimulai ulang karena kegagalan, melakukan operasi penskalaan, atau melakukan 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 maupun replika mengalami mulai ulang.

  • Tidak ada biaya tambahan pada penagihan instance Anda.

Perilaku tambahan

  • Snapshot digunakan untuk pemulihan instance dan tidak tersedia untuk pemulihan manual. Kapan pun, hanya snapshot terakhir yang berhasil yang tersedia untuk dipulihkan. Selain snapshot RDB, Anda dapat menggunakan Export and Import untuk mencadangkan dan memulihkan data secara manual.

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

Batasan

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

  • Jika instance Anda memiliki banyak kunci (sekitar 200 juta atau lebih), snapshot dan pemulihan RDB dapat berjalan lambat. Pada volume kunci ini, server Redis bisa 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, ini menentukan jadwal harian snapshot. Interval yang dapat Anda setel 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 pengaktifannya, dan berlanjut setiap jam setelahnya.

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

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

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

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

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

Menyesuaikan jadwal yang ada

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

Untuk berhenti mengambil snapshot sementara dalam waktu singkat, Anda dapat menyesuaikan waktu mulai menjadi tanggal di masa mendatang. Setelah Anda menyesuaikan waktu mulai ke tanggal di masa mendatang, snapshot berikutnya tidak akan dimulai sampai tanggal tersebut. Jika Anda melakukannya, snapshot terakhir 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 upgrade versi instance Anda. Snapshot RDB menyimpan 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 dimuat dari snapshot. Instance Tingkat Standar dipulihkan dari snapshot saat pemulihan dari replika gagal.

Konsistensi data pada pemulihan

Jika diaktifkan, snapshot RDB melakukan upaya terbaik untuk memastikan pencadangan terjadi pada interval yang ditentukan, tetapi hal ini tidak dapat dijamin. Snapshot bisa 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 berubah menjadi usang secara arbitrer.

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

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

Waktu pemulihan

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

Mengurangi pemulihan yang lambat

Terkadang pemulihan dari snapshot mungkin membutuhkan waktu lebih lama dari yang diperkirakan. Anda mungkin perlu mengambil tindakan agar aplikasi Anda 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 dipulihkan.

Kegagalan snapshot dan kegagalan pemulihan

Kegagalan snapshot

Setiap snapshot yang gagal akan dilaporkan ke Cloud Monitoring, dan snapshot tersebut akan segera dicoba lagi. Kegagalan snapshot yang berurutan meningkatkan jumlah data yang hilang jika terjadi pemulihan karena data yang dipulihkan menjadi semakin usang. Untuk mendapatkan informasi 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 mendapatkan hasil terbaik saat mencadangkan instance dengan snapshot RDB, Anda harus mengikuti praktik terbaik yang dijelaskan di bawah ini:

Pengelolaan memori

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

Guna memastikan instance memiliki memori yang cukup untuk menyelesaikan snapshot, Anda harus menetapkan maxmemory-gb ke 80% kapasitas instance sehingga 20% dicadangkan untuk overhead. Lihat Praktik terbaik pengelolaan memori untuk mempelajari lebih lanjut. Overhead memori ini, selain Snapshot Monitoring, membantu Anda mengelola beban kerja agar memiliki snapshot yang sukses.

Snapshot tidak berlaku

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

Jika menurut Anda snapshot terlalu lama, atau instance Anda mengalami perubahan penting lain yang sulit untuk direkonsiliasi 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, setel pemberitahuan pada metrics snapshot RDB last_status dan last_success_age snapshot RDB.

Pemulihan yang lebih lama dari snapshot

Sebaiknya Setel pemberitahuan untuk metrik redis.googleapis.com/server/uptime guna memberi tahu Anda jika instance tidak tersedia.

Jika instance Anda 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 dipulihkan, 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 oleh aplikasi, Anda dapat meminimalkan dampak performa snapshot RDB dengan menjadwalkannya agar berjalan selama periode traffic instance yang rendah.

Gunakan waktu dan interval mulai untuk menjadwalkan snapshot selama 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 menyetel 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 workload.

Snapshot pemantauan

Penting untuk memantau snapshot dan menyetel peringatan untuk snapshot yang gagal. Snapshot yang gagal dapat menunjukkan adanya instance kelebihan beban yang mungkin akan terus kesulitan untuk dipulihkan dari snapshot.

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

Memantau dampak performa

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

Langkah selanjutnya