Blog ini telah diperbarui pada 27/11/18 dan 29/11/18 untuk membuat perubahan seperti yang direkomendasikan oleh komentator kami yang luar biasa!
Seperti halnya komponen bisnis lainnya, basis data sangat penting untuk fungsi internalnya.
Baik itu inti bisnis atau hanya komponen lain, basis data harus dicadangkan secara teratur, dan disimpan di lokasi yang aman untuk kemungkinan pemulihan di masa mendatang.
Haruskah Saya Mencadangkan Ke Cloud?
Aturan umum adalah memiliki setidaknya 3 salinan dari sesuatu yang berharga dan menyimpan cadangan tersebut di lokasi yang berbeda. Cadangan di drive yang sama tidak berguna jika drive itu sendiri mati, cadangan host yang sama juga berisiko jika host mati, dan cadangan gedung yang sama juga dalam bahaya jika gedung terbakar (drastis dan tidak mungkin, tetapi mungkin).
Pencadangan cloud menawarkan solusi mudah untuk kebutuhan pencadangan di luar lokasi tanpa harus memutar perangkat keras baru di lokasi sekunder. Ada banyak layanan cloud berbeda yang menawarkan penyimpanan cadangan, dan memilih yang tepat akan bergantung pada kebutuhan pencadangan, persyaratan ukuran, biaya, dan keamanan.
Manfaat memiliki cadangan cloud banyak, tetapi terutama berkisar pada memiliki cadangan ini disimpan di lokasi yang berbeda dari database utama, memungkinkan kita untuk memiliki jaring pengaman dalam kasus pemulihan bencana. Meskipun kami tidak akan membahas secara mendetail tentang cara menyiapkan setiap opsi pencadangan ini, kami akan menjelajahi beberapa ide dan konfigurasi yang berbeda untuk pencadangan.
Ada beberapa kelemahan menyimpan cadangan di cloud, dimulai dengan transfer. Jika cadangan untuk database sangat besar, mungkin diperlukan waktu lama untuk melakukan unggahan yang sebenarnya, dan bahkan dapat meningkatkan biaya jika layanan cloud mengenakan biaya untuk transfer bandwidth. Kompresi sangat disarankan untuk menghemat waktu dan biaya.
Keamanan bisa menjadi perhatian lain dengan hosting cadangan di cloud, sementara beberapa perusahaan memiliki pedoman ketat tentang di mana data mereka disimpan dan ada. Jika keamanan menjadi perhatian, cadangan apa pun dapat dienkripsi sebelum mengekspornya ke layanan hosting awan.
Opsi Cadangan Cloud
Ada beberapa cara berbeda untuk membuat cadangan basis data untuk PostgreSQL, dan tergantung pada jenis pencadangan, waktu pemulihan, ukuran, dan opsi infrastruktur akan bervariasi. Karena banyak solusi penyimpanan cloud hanyalah penyimpanan dengan ujung depan API yang berbeda, solusi pencadangan yang cerdas dapat dibuat dengan sedikit skrip.
Cadangan Snapshot
Snapshots adalah cadangan yang memiliki salinan database PostgreSQL pada titik waktu tertentu. Cadangan ini dibuat dengan menggunakan pg_dump, yang hanya membuang database ke satu file, atau dengan menyalin direktori data dasar untuk PostgreSQL. Salah satu dari ini dapat dikompresi, disalin ke drive dan server lain, dan disalin ke opsi penyimpanan cloud yang diinginkan.
Menggunakan pg_dump dengan kompresi
pg_dump -Fc severalnines > severalnines.dmp
Pencadangan direktori data menggunakan pg_basebackup
Program pg_basebackup dapat digunakan untuk membuat cadangan dasar dengan sangat mudah. Untuk informasi selengkapnya tentang semua fitur dan cara menyiapkannya, kunjungi dokumentasi resmi untuk versi PostgreSQL yang digunakan.
pg_basebackup --format=tar -z -D severalnines_basebackup
Amazon S3
Dengan platform AWS Amazon, S3 adalah layanan penyimpanan data yang dapat digunakan untuk menyimpan cadangan database. Sementara cadangan dapat diunggah melalui antarmuka web, Amazon CLI (Antarmuka Baris Perintah) dapat digunakan untuk melakukannya dari baris perintah dan melalui skrip otomatisasi pencadangan. Informasi tentang AWS CLI dapat ditemukan di sini. Jika cadangan disimpan untuk waktu yang sangat lama, dan waktu pemulihan tidak menjadi masalah, cadangan dapat ditransfer ke layanan Amazon Glacier, menyediakan penyimpanan jangka panjang yang jauh lebih murah.
aws s3 cp severalnines.dmp s3://severalninesbucket/backups
Amazon juga memiliki wilayah yang berbeda untuk layanan mereka di seluruh dunia. Meskipun memiliki riwayat waktu aktif yang baik, menyebarkan salinan cadangan di beberapa wilayah meningkatkan opsi pemulihan bencana, dan menurunkan kemungkinan kehilangan data berharga.
Penyimpanan Microsoft Azure
Platform cloud Microsoft, Azure, memiliki opsi penyimpanan dengan antarmuka baris perintahnya sendiri, informasinya dapat ditemukan di sini.
az storage blob upload --container-name severalnines --file severalnines.dmp --name severalnines_backup
Layanan penyimpanan cloud modern lainnya harus menawarkan alat serupa untuk menyalin cadangan ke server cloud mereka, lihat dokumentasi mereka untuk detailnya.
Cadangan Siaga
Terkadang cadangan itu sendiri bisa sangat besar bahkan jika dikompresi, dan mengunggah cadangan harian atau mingguan ke layanan cloud bisa jadi tidak mungkin karena kecepatan bandwidth dan/atau biaya. Jadi, mendapatkan cadangan ke cloud untuk diamankan jauh lebih sulit.
Salah satu cara untuk melakukannya adalah dengan menjalankan siaga hangat atau panas di Mesin Virtual berbasis cloud, seperti instans EC2 Amazon, yang merupakan salinan persis dari database master utama, dan satu-satunya data yang dikirim ke instans cloud adalah setiap perubahan, bukan salinan lain dari seluruh database. Ini akan membutuhkan transfer seluruh database sekaligus, tetapi setelah itu, hanya perubahan yang perlu ditransfer.
Tetapi apakah server siaga sebenarnya merupakan cadangan? Jika database master turun, siaga dapat diubah menjadi master dan aplikasi diarahkan ke sana, namun, jika tujuannya adalah untuk memiliki cadangan untuk titik waktu tertentu selama seminggu / bulan terakhir, ini tidak akan berhasil.
Untuk mengatasinya, beberapa hal bisa dilakukan. Siaga itu sendiri dapat dipaksa untuk mengalami penundaan, menelan data hanya sekali sehari misalnya. Cara lainnya adalah membuat cadangan dengan salah satu cara tradisional (pg_dump, salinan direktori data) di cloud standby, yang berarti cadangan ini tidak perlu ditransfer melalui jaringan karena dibuat di mesin cloud itu sendiri. Transfer dalam jaringan biasanya lebih cepat dan lebih murah.
Cadangan ClusterControl Dan Cloud
Somenines menciptakan ClusterControl, sistem manajemen basis data yang membantu mengelola banyak basis data berbeda termasuk PostgreSQL. Ini adalah kotak alat utama bagi setiap Database atau Administrator Sistem untuk memiliki kontrol penuh dan visibilitas database mereka, dan menyertakan fitur pencadangan yang sangat berguna.
Dengan ClusterControl, cadangan database PostgreSQL dapat dengan mudah dikelola, dijadwalkan, dan diatur untuk secara otomatis menyalin cadangan yang dibuat ke layanan “penyimpanan cloud”, termasuk Amazon S3, Microsoft Azure, dan Google Cloud. Ini membuatnya tidak perlu membuat skrip alat khusus untuk mengunggah cadangan ke cloud, serta memberikan antarmuka pengguna yang bagus untuk cadangan secara umum.
Mencadangkan basis data kami harus selalu dilakukan, dan menyimpannya di lokasi kedua, ketiga, dan keempat adalah praktik yang sangat baik dan umum. Memasukkan opsi cloud meningkatkan opsi pemulihan bencana, dan menempatkan lapisan stabilitas back-end lain untuk bisnis, di mana dalam banyak kasus jika database menghilang, perusahaan menghilang. Menjelajahi opsi pencadangan cloud hari ini dapat menghilangkan bencana besok.