Upgrade selalu merupakan tugas yang sulit dan memakan waktu. Pertama, Anda harus menguji aplikasi Anda di lingkungan pengujian, jadi, idealnya, Anda perlu mengkloning lingkungan produksi Anda saat ini untuk ini. Kemudian, Anda perlu membuat rencana untuk melakukan pemutakhiran yang, bergantung pada bisnisnya, dapat tanpa waktu henti (atau hampir nol), atau bahkan menjadwalkan periode pemeliharaan untuk memastikan bahwa jika terjadi kesalahan, hal itu akan berdampak kecil. mungkin.
Jika Anda ingin melakukan semua ini secara manual, kemungkinan besar terjadi kesalahan manusia dan prosesnya akan lambat. Di blog ini, kita akan melihat cara mengotomatiskan pengujian untuk memutakhirkan database MySQL, MariaDB, atau Server Percona Anda menggunakan ClusterControl.
Jenis Peningkatan
Ada dua jenis upgrade:Upgrade Kecil dan Upgrade Besar.
Upgrade Kecil
Yang pertama, Peningkatan Kecil, adalah pemutakhiran yang paling umum dan aman, dan dalam banyak kasus, ini dilakukan di tempat. Karena tidak ada yang 100% aman, Anda harus selalu memiliki cadangan dan node slave replikasi, jadi jika terjadi kesalahan dengan peningkatan dan karena alasan tertentu Anda tidak dapat melakukan rollback/downgrade, Anda dapat mempromosikan node slave, dan sistem Anda masih dapat bekerja tanpa gangguan.
Anda dapat melakukan upgrade semacam ini menggunakan ClusterControl. Untuk ini, buka ClusterControl -> Pilih Cluster -> Manage -> Upgrades.
Pada setiap node yang dipilih, prosedur peningkatan akan:
-
Stop Node
-
Tingkatkan Node
-
Mulai Node
Node Master dalam Topologi Replikasi tidak akan ditingkatkan. Untuk mengupgrade Master, node lain harus dipromosikan menjadi Master baru terlebih dahulu.
Upgrade Besar
Untuk Peningkatan Besar, tidak disarankan untuk melakukan pemutakhiran di tempat, karena risiko terjadi kesalahan terlalu tinggi untuk lingkungan produksi. Alih-alih ini, Anda dapat mengkloning cluster database Anda saat ini dan menguji aplikasi Anda di sana, dan ketika Anda selesai, Anda dapat membuatnya kembali atau bahkan membuat cluster baru di versi baru dan mengalihkan lalu lintas saat sudah siap. Ada pendekatan berbeda untuk peningkatan ini. Anda dapat memutakhirkan node satu per satu, atau membuat cluster berbeda yang mereplikasi lalu lintas dari yang sekarang, Anda juga dapat menggunakan penyeimbang beban untuk meningkatkan Ketersediaan Tinggi, dan opsi lainnya. Pendekatan terbaik bergantung pada toleransi waktu henti dan Recovery Time Objective (RTO).
Anda tidak dapat melakukan Peningkatan Besar dengan ClusterControl secara langsung, karena, seperti yang kami sebutkan, Anda perlu menguji semuanya terlebih dahulu, untuk memastikan bahwa pemutakhiran aman, tetapi Anda dapat menggunakan fitur ClusterControl yang berbeda untuk membuat tugas ini lebih mudah. Jadi mari kita lihat beberapa fitur ini.
Cadangan
Backup adalah suatu keharusan sebelum upgrade apapun. Kebijakan pencadangan yang baik dapat menghindari masalah besar bagi bisnis. Jadi, mari kita lihat bagaimana ClusterControl dapat mengotomatisasi ini.
Membuat Cadangan
Buka ClusterControl -> Pilih Cluster -> Backup -> Buat Backup.
Anda dapat membuat cadangan baru atau mengonfigurasi yang terjadwal.
Anda dapat memilih metode pencadangan yang berbeda, tergantung pada teknologi basis data, dan, di bagian yang sama, Anda dapat memilih server untuk mengambil cadangan, tempat Anda ingin menyimpan cadangan, dan jika Anda ingin mengunggah cadangan ke cloud (AWS, Azure, atau Google Cloud) dalam pekerjaan yang sama.
Anda juga dapat mengompresi dan mengenkripsi cadangan, dan menentukan periode penyimpanan, di antara opsi lainnya.
Pada bagian pencadangan, Anda dapat melihat kemajuan pencadangan, dan informasi seperti metode, ukuran, lokasi, dan lainnya.
Menerapkan Lingkungan Pengujian
Untuk ini, Anda tidak perlu membuat semuanya dari awal. Alih-alih ini, Anda dapat menggunakan ClusterControl untuk melakukan ini secara manual atau otomatis.
Pulihkan Cadangan di Host Mandiri
Di bagian Cadangan, Anda dapat memilih opsi “Pulihkan dan verifikasi pada host mandiri” untuk memulihkan cadangan di node terpisah.
Di sini Anda dapat menentukan apakah Anda ingin ClusterControl menginstal perangkat lunak di node baru, dan menonaktifkan firewall atau AppArmor/SELinux (tergantung pada OS). Untuk ini, Anda memerlukan host (atau VM) khusus yang bukan bagian dari cluster.
Anda dapat membuat node tetap aktif dan berjalan, atau ClusterControl dapat mematikan layanan database hingga pekerjaan pemulihan berikutnya. Setelah selesai, Anda akan melihat cadangan yang dipulihkan/diverifikasi dalam daftar cadangan yang ditandai dengan tanda centang.
Jika Anda tidak ingin melakukan tugas ini secara manual, Anda dapat menjadwalkan proses ini menggunakan Fitur Verifikasi Cadangan, untuk mengulangi tugas ini secara berkala di Tugas Cadangan. Kita akan melihat bagaimana melakukannya di bagian selanjutnya.
Verifikasi Cadangan ClusterControl Otomatis
Untuk mengotomatiskan tugas ini, buka ClusterControl -> Pilih Cluster Anda -> Backup -> Buat Backup, dan pilih opsi Scheduled Backup.
Fitur Verifikasi Cadangan otomatis hanya tersedia untuk pencadangan terjadwal, dan prosesnya sama dengan yang kami jelaskan di bagian sebelumnya. Pada langkah kedua, pastikan Anda telah mengaktifkan opsi Verifikasi Cadangan, dan lengkapi informasi yang diperlukan.
Setelah pekerjaan selesai, Anda dapat melihat ikon verifikasi di bagian Cadangan ClusterControl, sama dengan yang Anda miliki dengan melakukan verifikasi secara manual, dengan perbedaan yang tidak Anda perlukan khawatir tentang tugas restorasi. ClusterControl akan memulihkan cadangan setiap saat secara otomatis, dan Anda dapat menguji aplikasi Anda dengan data terbaru.
Pemulihan Otomatis dan Failover
Dengan mengaktifkan fitur Autorecovery, jika terjadi kegagalan, ClusterControl akan mempromosikan node slave paling canggih untuk dikuasai serta memberi tahu Anda tentang masalahnya. Itu juga gagal pada node slave lainnya untuk mereplikasi dari server master baru.
Jika ada Load Balancer di topologi, ClusterControl akan mengkonfigurasi ulang untuk menerapkan perubahan topologi.
Anda juga dapat menjalankan Failover secara manual jika diperlukan. Buka ClusterControl -> Pilih Cluster -> Nodes -> Pilih Node yang akan dipromosikan -> Node Actions -> Promote Slave.
Dengan cara ini, jika terjadi kesalahan selama peningkatan, Anda dapat menggunakan ClusterControl untuk memperbaikinya secepatnya.
Mengotomatiskan Hal-hal dengan ClusterControl CLI
ClusterControl CLI, juga dikenal sebagai s9s, adalah alat baris perintah yang diperkenalkan di ClusterControl versi 1.4.1 untuk berinteraksi, mengontrol, dan mengelola cluster database menggunakan sistem ClusterControl. ClusterControl CLI membuka pintu untuk otomatisasi cluster di mana Anda dapat dengan mudah mengintegrasikannya dengan alat otomatisasi penerapan yang ada seperti Ansible, Puppet, Chef, dll. Sekarang mari kita lihat beberapa contoh alat ini.
Tingkatkan
$ s9s cluster --cluster-id=19 \
--check-pkg-upgrades \
--log
$ s9s cluster --cluster-id=19 \
--available-upgrades \
--nodes='10.10.10.146' \
--log \
--print-json
$ s9s cluster --cluster-id=19 \
--upgrade-cluster \
--nodes='10.10.10.146' \
--log
Buat Cadangan
$ s9s backup --create \
--backup-method=mysqldump \
--cluster-id=2 \
--nodes=10.10.10.146:3306 \
--on-controller \
--backup-directory=/storage/backups
--log
Pulihkan Cadangan
$ s9s backup --restore \
--cluster-id=19 \
--backup-id=3 \
--wait
Verifikasi Cadangan
$ s9s backup --verify \
--backup-id=3 \
--test-server=10.10.10.151 \
--cluster-id=19 \
--log
Promosikan Node Budak
$ s9s cluster --promote-slave \
--cluster-id=19 \
--nodes='10.10.10.146' \
--log
Kesimpulan
Upgrade diperlukan tetapi tugas memakan waktu. Menyebarkan lingkungan pengujian setiap kali Anda perlu memutakhirkan bisa menjadi mimpi buruk, dan sulit untuk mempertahankannya agar tetap mutakhir tanpa alat otomatisasi apa pun.
ClusterControl memungkinkan Anda untuk melakukan peningkatan kecil atau bahkan menerapkan lingkungan pengujian untuk membuat tugas peningkatan lebih mudah dan lebih aman. Anda juga dapat mengintegrasikannya dengan berbagai alat otomatisasi seperti Ansible, Puppet, dan lainnya.