Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Skenario Pencadangan dan Pemulihan Cloud MySQL Menggunakan Microsoft Azure

Cadangan adalah bagian yang sangat penting dari operasi basis data Anda, karena bisnis Anda harus diamankan saat terjadi bencana. Ketika saatnya tiba (dan itu akan terjadi), Sasaran Titik Pemulihan (RPO) dan Sasaran Waktu Pemulihan (RTO) Anda harus ditentukan sebelumnya, karena ini adalah seberapa cepat Anda dapat pulih dari insiden yang terjadi.

Sebagian besar organisasi memvariasikan pendekatan mereka terhadap pencadangan, mencoba memiliki kombinasi pencadangan citra server (snapshot), pencadangan logis, dan fisik. Cadangan ini kemudian disimpan di beberapa lokasi, untuk menghindari bencana lokal atau regional. Ini juga berarti bahwa data dapat dipulihkan dalam waktu sesingkat mungkin, menghindari downtime besar yang dapat berdampak pada bisnis perusahaan Anda.

Menghosting database Anda dengan penyedia cloud, seperti Microsoft Azure (yang akan kita bahas di blog ini), tidak terkecuali, Anda masih perlu mempersiapkan dan menentukan kebijakan pemulihan bencana Anda.

Seperti penawaran cloud publik lainnya, Microsoft Azure (Azure) menawarkan pendekatan untuk pencadangan yang praktis, hemat biaya, dan dirancang untuk memberi Anda opsi pemulihan. Solusi pencadangan Microsoft Azure memungkinkan Anda untuk mengonfigurasi dan mengoperasikan dan ditangani dengan mudah menggunakan Cadangan Azure mereka atau melalui Vault Layanan Pemulihan (jika Anda mengoperasikan database menggunakan mesin virtual).

Jika Anda menginginkan database terkelola di cloud, Azure menawarkan Azure Database untuk MySQL. Ini harus digunakan hanya jika Anda tidak ingin mengoperasikan dan mengelola database MySQL sendiri. Layanan ini menawarkan solusi yang kaya untuk pencadangan yang memungkinkan Anda membuat cadangan instans basis data Anda, baik dari wilayah lokal atau melalui lokasi geo-redundan. Ini dapat berguna untuk pemulihan data. Anda bahkan mungkin dapat memulihkan node dari periode waktu tertentu, yang berguna dalam mencapai pemulihan point-in-time. Ini dapat dilakukan hanya dengan satu klik.

Di blog ini, kami akan membahas semua skenario pencadangan dan pemulihan ini menggunakan database MySQL di cloud Microsoft Azure.

Melakukan Pencadangan pada Mesin Virtual di Azure

Sayangnya, Microsoft Azure tidak menawarkan solusi jenis pencadangan khusus MySQL (mis. Pencadangan Perusahaan MySQL, Percona XtraBackup, atau Mariabackup MariaDB).

Setelah membuat Mesin Virtual Anda (menggunakan portal), Anda dapat menyiapkan proses untuk mencadangkan VM Anda menggunakan brankas Layanan Pemulihan. Ini akan menjaga Anda dari setiap insiden, bencana, atau malapetaka dan data yang disimpan dienkripsi secara default. Menambahkan enkripsi adalah opsional dan, meskipun direkomendasikan oleh Azure, itu ada harganya. Anda dapat melihat halaman Azure Backup Pricing mereka untuk detail lebih lanjut.

Untuk membuat dan menyiapkan cadangan, buka panel kiri dan klik Semua Sumber Daya → Hitung → Mesin Virtual. Sekarang atur parameter yang diperlukan di bidang teks. Setelah Anda berada di halaman itu, buka tab Manajemen dan gulir ke bawah. Anda akan dapat melihat bagaimana Anda dapat mengatur atau membuat cadangan. Lihat tangkapan layar di bawah ini:

Kemudian atur kebijakan pencadangan Anda berdasarkan persyaratan pencadangan Anda. Tekan saja tautan Buat Baru di bidang teks Kebijakan cadangan untuk membuat kebijakan baru. Lihat di bawah:

Anda dapat mengonfigurasi kebijakan pencadangan dengan retensi menurut minggu, bulanan, dan tahunan .

Setelah cadangan Anda dikonfigurasi, Anda dapat memeriksa apakah Anda memiliki cadangan yang diaktifkan pada mesin virtual tertentu yang baru saja Anda buat. Lihat tangkapan layar di bawah ini:

Pulihkan dan Pulihkan Mesin Virtual Anda di Azure

Mendesain pemulihan Anda di Azure bergantung pada jenis kebijakan dan persyaratan yang dibutuhkan aplikasi Anda. Itu juga tergantung pada apakah RTO dan RPO harus rendah atau tidak terlihat oleh pengguna jika terjadi insiden atau selama pemeliharaan. Anda dapat mengatur mesin virtual Anda dengan set ketersediaan atau pada zona ketersediaan yang berbeda untuk mencapai tingkat pemulihan yang lebih tinggi.

Anda juga dapat menyiapkan pemulihan bencana untuk VM Anda untuk mereplikasi mesin virtual Anda ke wilayah Azure lain untuk kelangsungan bisnis dan kebutuhan pemulihan bencana. Namun, ini mungkin bukan ide yang baik untuk organisasi Anda karena biayanya tinggi. Jika ada, Azure menawarkan Anda opsi untuk memulihkan atau membuat mesin virtual dari cadangan yang dibuat.

Misalnya, selama pembuatan mesin virtual Anda, Anda dapat pergi ke tab Disks, lalu pergi ke Data Disks. Anda dapat membuat atau melampirkan disk yang ada di mana Anda dapat melampirkan snapshot yang telah tersedia. Lihat tangkapan layar di bawah yang dapat Anda pilih dari snapshot atau blob penyimpanan:

 Anda juga dapat memulihkan pada titik waktu tertentu seperti pada tangkapan layar di bawah ini:

Memulihkan di Azure dapat dilakukan dengan cara yang berbeda, tetapi menggunakan cara yang sama sumber daya yang telah Anda buat.

Misalnya, jika Anda telah membuat snapshot atau gambar disk yang disimpan di gumpalan Azure Storage, jika Anda membuat VM baru, Anda dapat menggunakan sumber daya tersebut selama kompatibel dan tersedia untuk digunakan. Selain itu, Anda bahkan mungkin dapat melakukan beberapa pemulihan file, selain memulihkan VM seperti pada tangkapan layar di bawah ini:

Selama Pemulihan File, Anda mungkin dapat memilih dari titik pemulihan tertentu , serta mengunduh skrip untuk menelusuri dan memulihkan file. Ini sangat membantu ketika Anda hanya membutuhkan file tertentu tetapi tidak seluruh sistem atau volume disk.

Memulihkan dari cadangan pada VM yang ada membutuhkan waktu sekitar tiga menit. Namun, memulihkan dari cadangan untuk menelurkan VM baru membutuhkan waktu dua belas menit. Namun, ini dapat bergantung pada ukuran VM Anda dan bandwidth jaringan yang tersedia di Azure. Hal baiknya adalah, ketika memulihkan, itu akan memberi Anda rincian tentang apa yang telah selesai dan berapa banyak waktu yang tersisa. Misalnya, lihat tangkapan layar di bawah ini:

Cadangan untuk Database Azure Untuk MySQL

Azure Database untuk MySQL adalah layanan database yang dikelola sepenuhnya oleh Microsoft Azure. Layanan ini menawarkan cara yang sangat fleksibel dan nyaman untuk menyiapkan kemampuan pencadangan dan pemulihan Anda.

Setelah membuat instans server MySQL, Anda kemudian dapat mengatur retensi cadangan dan membuat opsi redundansi cadangan; baik secara lokal redundan (wilayah lokal) atau geo-redundan (pada wilayah yang berbeda). Azure akan memberi Anda perkiraan biaya yang akan Anda kenakan selama sebulan. Lihat contoh tangkapan layar di bawah ini:

Perlu diingat bahwa opsi pencadangan geo-redundan hanya tersedia di Tujuan Umum dan Jenis node komputasi yang Dioptimalkan Memori. Ini tidak tersedia di node komputasi Dasar, tetapi Anda dapat memiliki redundansi di region lokal (yaitu dalam zona ketersediaan yang tersedia).

Setelah Anda memiliki pengaturan master, mudah untuk membuat replika dengan membuka Database Azure untuk server MySQL → Pilih instans MyQL Anda → Replikasi → dan klik Tambah Replika. Replika Anda dapat digunakan sebagai sumber atau memulihkan target bila diperlukan.

Perlu diingat bahwa di Azure, saat Anda menghentikan replikasi antara master dan replika, ini akan berlangsung selamanya dan tidak dapat diubah karena membuat replika menjadi server mandiri. Replika yang dibuat menggunakan Microsoft Azure idealnya adalah instance terkelola dan Anda dapat menghentikan dan memulai utas replikasi seperti yang Anda lakukan pada replikasi master-slave normal. Anda dapat melakukan restart dan itu saja. Jika Anda membuat replika secara manual, dengan memulihkan dari master atau cadangan, (mis. melalui pemulihan titik waktu), maka Anda akan dapat menghentikan/memulai utas replikasi atau menyiapkan jeda budak jika diperlukan.

Memulihkan Database Azure Anda Untuk MySQL Dari Cadangan

Memulihkan sangat mudah dan cepat menggunakan portal Azure. Anda cukup menekan tombol pulihkan dengan node instance MySQL Anda dan cukup ikuti UI seperti yang ditunjukkan pada gambar di bawah:

Kemudian Anda dapat memilih periode waktu dan membuat/memunculkan instance baru berdasarkan cadangan yang diambil ini:

Setelah Anda memiliki simpul yang tersedia, simpul ini tidak akan menjadi replika dari tuannya belum. Anda perlu mengatur ini secara manual dengan langkah-langkah mudah menggunakan prosedur tersimpan yang tersedia:

CALL mysql.az_replication_change_master('<master_host>', '<master_user>', '<master_password>', 3306, '<master_log_file>', <master_log_pos>, '<master_ssl_ca>');

di mana,

master_host:nama host dari server master

master_user:nama pengguna untuk server master

master_password:sandi untuk server master

master_log_file:nama file log biner dari menjalankan status master acara

master_log_pos:posisi log biner dari menjalankan status master acara

master_ssl_ca:konteks sertifikat CA. Jika tidak menggunakan SSL, masukkan string kosong.

Kemudian memulai thread MySQL adalah sebagai berikut,

CALL mysql.az_replication_start;

atau Anda dapat menghentikan utas replikasi sebagai berikut,

CALL mysql.az_replication_stop;

atau Anda dapat menghapus master sebagai,

CALL mysql.az_replication_remove_master;

atau lewati kesalahan utas SQL sebagai,

CALL mysql.az_replication_skip_counter;

Seperti yang disebutkan sebelumnya, ketika replika dibuat menggunakan Microsoft Azure di bawah fitur Tambahkan Replika di bawah instans MySQL, prosedur tersimpan khusus ini tidak tersedia. Namun, prosedur mysql.az_replication_restart akan tersedia karena Anda tidak diizinkan untuk menghentikan atau memulai utas replikasi replika terkelola oleh Azure. Jadi contoh yang kita miliki di atas dipulihkan dari master yang mengambil salinan lengkap master tetapi bertindak sebagai node tunggal dan memerlukan pengaturan manual untuk menjadi replika dari master yang ada.

Selain itu, bila Anda memiliki replika manual yang telah Anda siapkan, Anda tidak akan dapat melihatnya di bawah Azure Database untuk server MySQL → Pilih instans MyQL Anda → Replikasi karena Anda membuat atau menyiapkan replikasi secara manual .

Solusi Pencadangan dan Pemulihan Cloud Alternatif

Ada skenario tertentu di mana Anda ingin memiliki akses penuh saat mengambil cadangan penuh database MySQL Anda di cloud. Untuk melakukan ini, Anda dapat membuat skrip Anda sendiri atau menggunakan teknologi sumber terbuka. Dengan ini Anda dapat mengontrol bagaimana data dalam database MySQL Anda harus dicadangkan dan bagaimana tepatnya harus disimpan.

Anda juga dapat memanfaatkan Azure Command Line Interface (CLI) untuk membuat otomatisasi kustom Anda. Misalnya, Anda dapat membuat snapshot menggunakan perintah berikut dengan Azure CLI:

az snapshot create  -g myResourceGroup -source "$osDiskId" --name osDisk-backup

atau buat replika server MySQL Anda dengan perintah berikut:

az mysql server replica create --name mydemoreplicaserver --source-server mydemoserver --resource-group myresourcegroup

Atau, Anda juga dapat memanfaatkan alat perusahaan yang menampilkan cara untuk mengambil cadangan Anda dengan opsi pemulihan. Menggunakan teknologi sumber terbuka atau alat pihak ketiga membutuhkan pengetahuan dan keterampilan untuk memanfaatkan dan membuat implementasi Anda sendiri. Berikut daftar yang dapat Anda manfaatkan:

  • Kontrol Cluster - Meskipun kami mungkin sedikit bias, ClusterControl menawarkan kemampuan untuk mengelola backup fisik dan logis dari database MySQL Anda menggunakan teknologi open-source yang telah teruji pertempuran (PXB, Mariabackup, dan mydumper). Ini mendukung database MySQL, Percona, MariaDB, Galera. Anda dapat dengan mudah membuat kebijakan pencadangan kami dan menyimpan cadangan basis data Anda di cloud mana pun (AWS, GCP, atau Azure) Harap perhatikan bahwa versi gratis ClusterControl tidak menyertakan fitur pencadangan.
  • Cuplikan LVM - Anda dapat menggunakan LVM untuk mengambil snapshot dari volume logis Anda. Ini hanya berlaku untuk VM Anda karena memerlukan akses ke penyimpanan tingkat blok. Menggunakan alat ini memerlukan peringatan karena dapat membuat simpul basis data Anda tidak responsif saat pencadangan sedang berjalan.
  • Percona XtraBackup (PXB) - Teknologi open source dari Percona. Dengan PXB, Anda dapat membuat salinan cadangan fisik dari database MySQL Anda. Anda juga dapat melakukan pencadangan panas dengan PXB untuk mesin penyimpanan InnoDB tetapi disarankan untuk menjalankan ini pada server MySQL db slave atau yang tidak sibuk. Ini hanya berlaku untuk instance VM Anda karena memerlukan akses biner atau file ke server database itu sendiri.
  • Mariabackup - Sama dengan PXB, ini adalah teknologi sumber terbuka yang diturunkan dari PXB tetapi dikelola oleh MariaDB. Khususnya, jika database Anda menggunakan MariaDB, Anda harus menggunakan Mariabackup untuk menghindari masalah ketidakcocokan dengan tablespace.
  • mydumper/myloader - Alat pencadangan ini membuat salinan cadangan logis dari database MySQL Anda. Anda dapat menggunakan ini dengan database Azure untuk MySQL Anda meskipun saya belum mencoba seberapa sukses ini untuk prosedur pencadangan dan pemulihan Anda.
  • mysqldump - ini adalah alat pencadangan logis yang sangat berguna ketika Anda perlu mencadangkan dan membuang (atau memulihkan) tabel atau basis data tertentu ke instance lain. Ini biasanya digunakan oleh DBA tetapi Anda perlu memperhatikan ruang disk Anda karena salinan cadangan logis sangat besar dibandingkan dengan cadangan fisik.
  • Pencadangan Perusahaan MySQL - Ini memberikan cadangan panas, online, tanpa pemblokiran di berbagai platform termasuk Linux, Windows, Mac &Solaris. Ini bukan alat pencadangan gratis tetapi menawarkan banyak fitur.
  • rsinkronisasi - Ini adalah alat penyalinan file yang cepat dan luar biasa serbaguna. Itu dapat menyalin secara lokal, ke/dari host lain melalui shell jarak jauh apa pun, atau ke/dari daemon rsync jarak jauh. Ini menawarkan sejumlah besar opsi yang mengontrol setiap aspek perilakunya dan memungkinkan spesifikasi kumpulan file yang sangat fleksibel untuk disalin. Sebagian besar di sistem Linux, rsync diinstal sebagai bagian dari paket OS.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cari teks di bidang di setiap tabel database MySQL

  2. ADDTIME() Contoh – MySQL

  3. Tidak digunakan lagi:mysql_connect()

  4. Hapus Baris Duplikat di MySQL (Abaikan Kunci Utama)

  5. DAYOFMONTH() Contoh – MySQL