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 memori. Saat menggunakan Memorystore sebagai cache, aplikasi Anda dapat mentoleransi kehilangan data cache atau dapat dengan mudah mengisi ulang cache dari penyimpanan persisten. Namun, ada beberapa kasus penggunaan saat periode nonaktif untuk instance Memorystore, atau kehilangan data instance sepenuhnya, dapat menyebabkan periode nonaktif aplikasi yang lama.
Sebaiknya gunakan Tingkat Standar sebagai mekanisme utama untuk ketersediaan tinggi (HA). Tingkat Standar menyediakan instance dengan ketersediaan tinggi dengan beberapa replika, dan memungkinkan pemulihan cepat menggunakan failover otomatis jika instance utama gagal. Selain itu, mengaktifkan snapshot RDB pada instance Paket Standar memberikan perlindungan ekstra dari kegagalan node.
Dalam beberapa skenario, Anda mungkin juga ingin memastikan bahwa Anda dapat memulihkan data dari cadangan snapshot. Dalam skenario ini, pencadangan dan kemampuan untuk memulihkan data dari snapshot RDB dapat memberikan perlindungan tambahan dari kehilangan data.
Jika Anda mengaktifkan snapshot RDB dan perlu memulihkan data, Memorystore for Redis dapat melakukannya dari snapshot terbaru. Snapshot ini hanya untuk pemulihan sistem internal dan Anda tidak dapat mengaksesnya. Anda juga dapat menggunakan snapshot 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
1hdan maksimum adalah24h.Instance Tingkat Dasar memulihkan data dari snapshot terbaru setiap kali instance dimulai ulang karena kegagalan, instance menjalani operasi penskalaan, atau instance menjalani upgrade versi.
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 menambah 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 hambatan 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 dengan kemampuan terbaik kami. 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, 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 menghadapi skenario saat Anda 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 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 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
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 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 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.
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 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 lipat 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 Memantau snapshot, membantu Anda mengelola beban kerja agar snapshot berhasil.
Snapshot yang tidak berlaku
Memulihkan instance dari snapshot yang tidak aktif dapat menyebabkan masalah performa untuk aplikasi Anda karena aplikasi 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 RDB snapshot last_status
dan RDB snapshot last_success_age.
Pemulihan yang lebih lama dari snapshot
Sebaiknya Siapkan 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 dengan cermat dampak performa, dan mempertimbangkan manfaat penggunaan snapshot RDB untuk beban kerja.
Memantau snapshot
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 mengetahui 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
- Pelajari cara mengimpor dan mengekspor cadangan.
- Ikuti panduan untuk Mengekspor data dari instance Redis.