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 Tingkat 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 dengan beberapa replika, dan 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 parah 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 snapshot RDB diaktifkan, jika diperlukan, pemulihan dilakukan dari snapshot RDB terbaru.

Snapshot RDB cocok untuk kasus penggunaan yang dapat mentoleransi sejumlah data yang sudah tidak baru 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 lengkap pada waktu tertentu dengan interval yang ditentukan pengguna di penyimpanan persisten.

  • Anda 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, menjalani operasi penskalaan, atau menjalani upgrade untuk versi OSS Redis instance Anda.

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

  • Tidak menambahkan biaya tambahan pada penagihan instance Anda.

Perilaku tambahan

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

  • Pada instance Paket Standar, snapshot diambil di replika untuk meminimalkan penggunaan memori dan CPU di 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), snapshot dan pemulihan RDB dapat menjadi lambat. Pada volume kunci ini, server Redis itu sendiri dapat menjadi penyebab kemacetan 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, opsi 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 setelah itu.

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

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

Namun, pemicuan snapshot berdasarkan jadwal harian dilakukan sesuai kemampuan terbaik. Jadwal dapat berbeda 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 dimulai segera setelah snapshot saat ini selesai.

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

Menyesuaikan jadwal yang ada

Anda mungkin mengalami skenario saat 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 untuk menonaktifkan sementara snapshot guna memecahkan masalah performa.

Untuk menghentikan pengambilan snapshot sementara selama jangka waktu singkat, Anda dapat menyesuaikan waktu mulai ke tanggal mendatang. Setelah Anda menyesuaikan waktu mulai ke tanggal mendatang, snapshot berikutnya tidak akan dimulai hingga tanggal tersebut. Jika Anda melakukannya, snapshot terakhir akan dipertahankan 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 menskalakan dan mengupgrade versi instance Anda. Snapshot RDB mempertahankan data instance Tingkat Dasar selama operasi 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 melakukan upaya terbaik untuk memastikan pencadangan terjadi pada interval yang ditentukan, tetapi hal ini tidak dapat dijamin. Snapshot dapat gagal karena sejumlah alasan. Lihat praktik terbaik tentang cara mengonfigurasi dan memantau instance saat snapshot RDB diaktifkan.

Jika snapshot gagal secara berturut-turut pada beberapa interval, cadangan terakhir yang tersedia dapat menjadi tidak valid 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 Anda menyetel notifikasi 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 perkiraan waktu pemulihan, 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 diperkirakan. Anda mungkin perlu mengambil tindakan untuk menghubungkan kembali aplikasi Anda 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

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

Pemulihan gagal

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 Anda 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 ukuran data dalam instance.

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

Snapshot usang

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

Jika Anda merasa snapshot Anda sudah terlalu lama, atau instance Anda telah mengalami perubahan penting lainnya yang sulit disesuaikan 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 usang.

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

Pemulihan yang lebih lama dari snapshot

Sebaiknya Setel pemberitahuan untuk metrik redis.googleapis.com/server/uptime agar Anda diberi tahu jika instance Anda 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 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 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 konstan dan memerlukan snapshot yang sering, Anda harus mengevaluasi dampak performa dengan cermat, dan mempertimbangkan manfaat penggunaan snapshot RDB untuk beban kerja.

Snapshot pemantauan

Penting untuk memantau snapshot, dan menyetel pemberitahuan untuk snapshot yang gagal. Snapshot yang gagal dapat menunjukkan instance yang kelebihan beban yang mungkin terus mengalami kesulitan untuk dipulihkan 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 snapshot RDB last_status. Anda juga dapat menggunakan konsol Google Cloud untuk memeriksa kegagalan.

Memantau dampak performa

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

Langkah berikutnya