Dalam empat posting terakhir dari seri blog, kami membahas penyebaran pengelompokan/replikasi (MySQL/Galera, Replikasi MySQL, MongoDB &PostgreSQL), manajemen &pemantauan database dan cluster Anda yang ada, pemantauan kinerja dan kesehatan dan di posting terakhir, cara membuat pengaturan Anda sangat tersedia melalui HAProxy dan ProxySQL.
Jadi sekarang setelah database Anda aktif dan berjalan dan sangat tersedia, bagaimana Anda memastikan bahwa Anda memiliki cadangan data Anda?
Anda dapat menggunakan cadangan untuk beberapa hal:pemulihan bencana, untuk menyediakan data produksi untuk diuji terhadap pengembangan atau bahkan untuk menyediakan node budak. Kasus terakhir ini sudah dicakup oleh ClusterControl. Saat Anda menambahkan node (replika) baru ke pengaturan replikasi, ClusterControl akan membuat cadangan/snapshot node master dan menggunakannya untuk membuat replika. Itu juga dapat menggunakan cadangan yang ada untuk membuat replika, jika Anda ingin menghindari beban ekstra pada master. Setelah cadangan diekstraksi, disiapkan, dan database aktif dan berjalan, ClusterControl akan secara otomatis menyiapkan replikasi.
Membuat Cadangan Instan
Pada intinya membuat backup sama untuk Galera, replikasi MySQL, PostgreSQL dan MongoDB. Anda dapat menemukan bagian pencadangan di bawah ClusterControl> Cadangan dan secara default Anda akan melihat daftar cadangan cluster yang dibuat (jika ada). Jika tidak, Anda akan melihat placeholder untuk membuat cadangan:
Dari sini Anda dapat mengklik tombol "Buat Cadangan" untuk membuat pencadangan instan atau menjadwalkan pencadangan baru:
Semua cadangan yang dibuat juga dapat diunggah ke cloud dengan mengaktifkan "Unggah Cadangan ke Cloud", asalkan Anda menyediakan kredensial cloud yang berfungsi. Secara default, semua cadangan yang lebih lama dari 31 hari akan dihapus (dapat dikonfigurasi melalui pengaturan Retensi Cadangan) atau Anda dapat memilih untuk menyimpannya selamanya atau menentukan periode khusus.
"Buat Cadangan" dan "Jadwalkan Cadangan" berbagi opsi serupa kecuali bagian penjadwalan dan opsi pencadangan tambahan untuk yang terakhir. Oleh karena itu, kita akan melihat fitur Create Backup (a.k.a instant backup) secara lebih mendalam.
Karena semua basis data yang berbeda ini memiliki alat pencadangan yang berbeda, jelas ada beberapa perbedaan dalam opsi yang dapat Anda pilih. Misalnya dengan MySQL Anda bisa memilih antara mysqldump dan xtrabackup (penuh dan tambahan). Untuk MongoDB, ClusterControl mendukung mongodump dan mongodb-consistent-backup (beta) sementara PostgreSQL, pg_dump dan pg_basebackup didukung. Jika ragu mana yang harus dipilih untuk MySQL, lihat blog ini tentang perbedaan dan kasus penggunaan untuk mysqldump dan xtrabackup.
Mencadangkan MySQL dan Galera
Seperti disebutkan dalam paragraf sebelumnya, Anda dapat membuat cadangan MySQL menggunakan mysqldump atau xtrabackup (penuh atau tambahan). Dalam wizard "Buat Cadangan", Anda dapat memilih host tempat Anda ingin menjalankan pencadangan, lokasi di mana Anda ingin menyimpan file cadangan, dan direktorinya serta skema spesifik (xtrabackup) atau skema dan tabel (mysqldump).
Jika node yang Anda cadangkan menerima lalu lintas (produksi), dan Anda khawatir penulisan disk tambahan akan mengganggu, disarankan untuk mengirim cadangan ke host ClusterControl dengan memilih opsi "Store on Controller". Ini akan menyebabkan cadangan mengalirkan file melalui jaringan ke host ClusterControl dan Anda harus memastikan ada cukup ruang yang tersedia di node ini dan port streaming dibuka di host ClusterControl.
Ada juga beberapa opsi lain apakah Anda ingin menggunakan kompresi dan tingkat kompresi. Semakin tinggi tingkat kompresi, semakin kecil ukuran cadangannya. Namun, ini membutuhkan penggunaan CPU yang lebih tinggi untuk proses kompresi dan dekompresi.
Jika Anda akan memilih xtrabackup sebagai metode untuk pencadangan, itu akan membuka opsi tambahan:desync, backup locks, compression dan xtrabackup parallel threads/gzip. Opsi desync hanya berlaku untuk desync node dari cluster Galera. Kunci cadangan menggunakan tipe kunci MDL baru untuk memblokir pembaruan ke tabel non-transaksional dan pernyataan DDL untuk semua tabel yang lebih efisien untuk beban kerja khusus InnoDB. Jika Anda menjalankan Galera Cluster, disarankan untuk mengaktifkan opsi ini.
Setelah menjadwalkan pencadangan instan, Anda dapat melacak kemajuan pekerjaan pencadangan di Aktivitas> Pekerjaan :
Setelah selesai, Anda seharusnya dapat melihat entri baru di bawah daftar cadangan.
Mencadangkan PostgreSQL
Mirip dengan backup instan MySQL, Anda dapat menjalankan backup pada database Postgres Anda. Dengan pencadangan Postgres, ada dua metode pencadangan yang didukung - pg_dumpall atau pg_basebackup. Perhatikan bahwa ClusterControl akan selalu melakukan pencadangan penuh terlepas dari metode pencadangan yang dipilih.
Kami telah membahas aspek ini dalam detail ini di Menjadi DBA PostgreSQL - Pencadangan PostgreSQL Logis &Fisik.
Mencadangkan MongoDB
Untuk MongoDB, ClusterControl mendukung mongodump standar dan mongodb-consistent-backup yang dikembangkan oleh Percona. Yang terakhir ini masih dalam versi beta yang menyediakan cadangan MongoDB point-in-time yang konsisten dengan cluster yang cocok untuk pengaturan sharded cluster. Karena kluster MongoDB sharded terdiri dari beberapa set replika, set replika konfigurasi, dan server shard, sangat sulit untuk membuat cadangan yang konsisten hanya dengan menggunakan mongodump.
Perhatikan bahwa di wizard, Anda tidak harus memilih node database untuk dicadangkan. ClusterControl akan secara otomatis memilih replika sekunder yang paling sehat sebagai node cadangan. Jika tidak, yang utama akan dipilih. Saat pencadangan berjalan, node pencadangan yang dipilih akan dikunci hingga proses pencadangan selesai.
Menjadwalkan Pencadangan
Sekarang kami telah bermain-main dengan membuat cadangan instan, sekarang kami dapat memperluasnya dengan menjadwalkan pencadangan.
Penjadwalannya sangat mudah dilakukan:Anda dapat memilih pada hari mana pencadangan harus dilakukan dan pada jam berapa pencadangan harus dijalankan.
Untuk xtrabackup ada fitur tambahan:incremental backup. Pencadangan tambahan hanya akan mencadangkan data yang berubah sejak pencadangan terakhir. Tentu saja, cadangan tambahan tidak berguna jika tidak ada cadangan lengkap sebagai titik awal. Di antara dua pencadangan penuh, Anda dapat memiliki cadangan inkremental sebanyak yang Anda suka. Tetapi memulihkannya akan memakan waktu lebih lama.
Setelah dijadwalkan, pekerjaan akan terlihat di bawah tab "Cadangan Terjadwal" dan Anda dapat mengeditnya dengan mengklik tombol "Edit". Seperti halnya pencadangan instan, tugas ini akan menjadwalkan pembuatan cadangan dan Anda dapat melacak kemajuannya melalui tab Aktivitas.
Daftar Cadangan
Anda dapat menemukan Daftar Cadangan di bawah ClusterControl> Cadangan dan ini akan memberi Anda gambaran umum tingkat cluster dari semua cadangan yang dibuat. Mengeklik setiap entri akan memperluas baris dan menampilkan lebih banyak informasi tentang cadangan:
Setiap pencadangan disertai dengan log cadangan saat ClusterControl menjalankan tugas, yang tersedia di bawah tombol "Tindakan Lainnya".
Pencadangan di Luar Situs di Cloud
Karena kami sekarang memiliki banyak cadangan yang disimpan di host database atau host ClusterControl, kami juga ingin memastikan mereka tidak hilang jika kami menghadapi pemadaman infrastruktur total. (mis. DC terbakar atau kebanjiran) Oleh karena itu, ClusterControl memungkinkan Anda untuk menyimpan atau menyalin cadangan Anda di luar lokasi di cloud. Platform cloud yang didukung adalah Amazon S3, Google Cloud Storage, dan Azure Cloud Storage.
Proses pengunggahan terjadi tepat setelah cadangan berhasil dibuat (jika Anda mengaktifkan "Unggah Cadangan ke Cloud") atau Anda dapat mengklik tombol ikon awan dari daftar cadangan secara manual:
Pilih kredensial cloud dan tentukan lokasi pencadangan yang sesuai:
Pulihkan dan/atau Verifikasi Cadangan
Dari antarmuka Daftar Cadangan, Anda dapat langsung memulihkan cadangan ke host di cluster dengan mengklik tombol "Pulihkan" untuk cadangan tertentu atau klik tombol "Pulihkan Cadangan":
Salah satu fitur yang bagus adalah ia dapat memulihkan node atau cluster menggunakan cadangan penuh dan tambahan karena akan melacak cadangan lengkap terakhir yang dibuat dan memulai pencadangan tambahan dari sana. Kemudian itu akan mengelompokkan cadangan lengkap bersama dengan semua cadangan tambahan hingga cadangan lengkap berikutnya. Ini memungkinkan Anda untuk memulihkan mulai dari cadangan penuh dan menerapkan cadangan tambahan di atasnya.
ClusterControl mendukung pemulihan pada node database yang ada atau memulihkan dan memverifikasi pada host mandiri baru:
Kedua opsi ini sangat mirip, kecuali opsi verifikasi memiliki opsi tambahan untuk informasi host baru. Jika Anda mengikuti wizard pemulihan, Anda harus menentukan host baru. Jika "Instal Perangkat Lunak Database" diaktifkan, ClusterControl akan menghapus instalasi MySQL yang ada pada host target dan menginstal ulang perangkat lunak database dengan versi yang sama dengan server MySQL yang ada.
Setelah cadangan dipulihkan dan diverifikasi, Anda akan menerima pemberitahuan tentang status pemulihan dan node akan dimatikan secara otomatis.
Pemulihan Point-in-Time
Untuk MySQL, baik xtrabackup dan mysqldump dapat digunakan untuk melakukan pemulihan point-in-time dan juga untuk menyediakan slave replikasi baru untuk replikasi master-slave atau Galera Cluster. Cadangan yang kompatibel dengan PITR mysqldump berisi satu file dump tunggal, dengan info GTID, file binlog, dan posisi. Jadi, hanya node basis data yang menghasilkan log biner yang akan memiliki opsi "kompatibel dengan PITR":
Ketika opsi yang kompatibel dengan PITR diaktifkan, bidang database dan tabel berwarna abu-abu karena ClusterControl akan selalu melakukan pencadangan penuh terhadap semua database, peristiwa, pemicu, dan rutinitas server MySQL target.
Sekarang memulihkan cadangan. Jika pencadangan kompatibel dengan PITR, opsi akan ditampilkan untuk melakukan Pemulihan Point-In-Time. Anda akan memiliki dua opsi untuk itu - "Berbasis Waktu" dan "Berbasis Posisi". Untuk "Berbasis Waktu", Anda bisa melewatkan hari dan waktu. Untuk "Berbasis Posisi", Anda dapat meneruskan posisi yang tepat ke tempat yang ingin Anda pulihkan. Ini adalah cara yang lebih tepat untuk memulihkan, meskipun Anda mungkin perlu mendapatkan posisi binlog menggunakan utilitas mysqlbinlog. Detail lebih lanjut tentang pemulihan titik waktu dapat ditemukan di blog ini.
Enkripsi Cadangan
Secara universal, ClusterControl mendukung enkripsi cadangan untuk MySQL, MongoDB, dan PostgreSQL. Cadangan dienkripsi saat istirahat menggunakan algoritma AES-256 CBC. Kunci yang dibuat secara otomatis akan disimpan dalam file konfigurasi cluster di bawah /etc/cmon.d/cmon_X.cnf (di mana X adalah ID cluster):
$ sudo grep backup_encryption_key /etc/cmon.d/cmon_1.cnf
backup_encryption_key='JevKc23MUIsiWLf2gJWq/IQ1BssGSM9wdVLb+gRGUv0='
Jika tujuan pencadangan bukan lokal, file cadangan akan ditransfer dalam format terenkripsi. Fitur ini melengkapi pencadangan offsite di cloud, di mana kami tidak memiliki akses penuh ke sistem penyimpanan yang mendasarinya.
Pemikiran Terakhir
Kami menunjukkan kepada Anda cara mencadangkan data dan cara menyimpannya dengan aman di luar situs. Pemulihan selalu merupakan hal yang berbeda. ClusterControl dapat memulihkan database Anda secara otomatis dari cadangan yang dibuat di masa lalu yang disimpan di tempat atau disalin kembali dari cloud.
Jelas ada lebih banyak untuk mengamankan data Anda, terutama di sisi mengamankan koneksi Anda. Kami akan membahas ini di posting blog berikutnya!