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

Cara Melakukan Rolling Upgrade untuk MySQL

Ada berbagai alasan untuk memutakhirkan basis data Anda. Bisa untuk menerapkan perbaikan keamanan, menggunakan fitur baru, memecahkan masalah kompatibilitas, atau hanya untuk menjaga sistem Anda tetap mutakhir. Pemutakhiran ini dapat berupa pemutakhiran besar atau pemutakhiran kecil, dan tergantung pada teknologinya, ada berbagai pendekatan untuk melakukan pekerjaan ini, tetapi jika Anda memerlukan sistem Anda berjalan sepanjang waktu tanpa waktu henti, melakukan pemutakhiran bergulir bisa menjadi pilihan terbaik .

Di blog ini, kita akan melihat beberapa pertimbangan yang harus dipertimbangkan sebelum memutakhirkan dan bagaimana melakukan pemutakhiran bergulir di MySQL.

Upgrade Kecil vs Besar

Secara umum, peningkatan kecil aman karena Anda dapat dengan mudah menurunkan atau mengembalikannya dan harus kompatibel dengan paket dan fitur sebelumnya.

Upgrade versi utama melibatkan beberapa risiko seperti penghapusan paket database, konfigurasi dan kompatibilitas konektor, fitur yang tidak digunakan lagi, dan banyak lagi.

Jadi, meskipun pengujian penting untuk kedua skenario, dalam kasus peningkatan besar, itu adalah suatu keharusan jika Anda ingin menghindari masalah serius untuk bisnis Anda.

Sebelum Meningkatkan

Sekarang, mari kita lihat beberapa pertimbangan sebelum meningkatkan versi, untuk menghindari masalah di masa mendatang.

Cadangan

Backup selalu penting, dan terlebih lagi jika Anda ingin mengupgrade database Anda. Jika terjadi kesalahan, dan opsi pemulihan bencana lainnya gagal, Anda memerlukan cadangan untuk memulihkan basis data Anda. Jadi, sebelum memulai tugas, ambil cadangan penuh (fisik atau/dan logis) dari database Anda saat ini dan simpan dengan aman hingga memastikan semuanya berfungsi dengan baik selama beberapa hari/minggu.

Tinjau Fitur yang Tidak Digunakan Lagi

Jika Anda menggunakan fitur yang tidak digunakan lagi di versi baru, aplikasi Anda bisa gagal, dan Anda perlu melakukan rollback untuk memulihkan sistem Anda, yang akan menghasilkan waktu henti (tergantung pada pendekatannya) dan kehilangan waktu. Memeriksa fitur yang tidak digunakan lagi dan membandingkannya dengan fitur yang Anda gunakan akan menghindari upaya peningkatan yang gagal ini.

Pengujian

Ini penting tidak hanya untuk peningkatan tetapi juga untuk setiap perubahan dalam database atau aplikasi Anda. Memiliki lingkungan pengujian yang mereplikasi lingkungan produksi dapat menghemat waktu Anda dan menghindari masalah yang tidak terduga selama peningkatan versi atau perubahan basis data.

Kembalikan

Dalam setiap pemutakhiran, penting untuk memiliki rollback yang siap digunakan jika diperlukan agar database Anda aktif dan berjalan secepatnya. Jika tidak, ini dapat memengaruhi RTO (Tujuan Waktu Pemulihan) jika Anda perlu membuat ulang kluster dari cadangan atau opsi paket pemulihan lainnya.

Perlu diingat bahwa terkadang downgrade tidak dapat dilakukan, jadi Anda harus memiliki paket sekunder jika Anda perlu mengembalikan perubahan Anda.

Pemeriksaan Vendor

Tergantung pada vendor dan versinya, Anda dapat menggunakan perintah mysqlcheck untuk melakukan pemeriksaan awal pada penginstalan Anda saat ini dan mengonfirmasi bahwa Anda siap untuk pergi.

$ mysqlcheck -u root -p --all-databases --check-upgrade

Enter password:

mysql.columns_priv                                 OK

mysql.db                                           OK

mysql.engine_cost                                  OK

mysql.event                                        OK

mysql.func                                         OK

mysql.general_log                                  OK

mysql.gtid_executed                                OK

mysql.help_category                                OK

mysql.help_keyword                                 OK

mysql.help_relation                                OK

mysql.help_topic                                   OK

mysql.innodb_index_stats                           OK

mysql.innodb_table_stats                           OK

mysql.ndb_binlog_index                             OK

mysql.plugin                                       OK

mysql.proc                                         OK

mysql.procs_priv                                   OK

mysql.proxies_priv                                 OK

mysql.server_cost                                  OK

mysql.servers                                      OK

mysql.slave_master_info                            OK

mysql.slave_relay_log_info                         OK

mysql.slave_worker_info                            OK

mysql.slow_log                                     OK

mysql.tables_priv                                  OK

mysql.time_zone                                    OK

mysql.time_zone_leap_second                        OK

mysql.time_zone_name                               OK

mysql.time_zone_transition                         OK

mysql.time_zone_transition_type                    OK

mysql.user                                         OK

sys.sys_config                                     OK

Ini adalah pemeriksaan pertama yang dilakukan sebelum memutakhirkan, dan akan memeriksa apakah tidak ada:

  • Tabel yang menggunakan tipe atau fungsi data usang
  • File dari anak yatim
  • Pemicu dengan definisi yang hilang atau kosong atau konteks pembuatan yang tidak valid

Ada beberapa hal lagi yang perlu Anda periksa tetapi untuk menghindari posting blog yang ekstensif, Anda dapat merujuk ke dokumentasi resmi MySQL untuk ini.

Upgrade Rolling Manual untuk MySQL

Ada berbagai pendekatan untuk melakukan peningkatan versi bergulir. Itu bisa di tempat, menggunakan replikasi, atau bahkan campurannya. Bagaimanapun, jika Anda ingin menghindari waktu henti, Anda tidak boleh melakukan perubahan pada aplikasi Anda selama pemutakhiran. Untuk ini, Anda dapat menambahkan Load Balancer di depan database Anda. Aplikasi Anda akan terhubung ke Load Balancer Anda, dan itu akan mengarahkan lalu lintas ke node yang tersedia.

Misalnya Anda memiliki Replikasi MySQL dengan 1 master dan 2 node slave, dan 1 node HAProxy di depannya:

Cara yang disederhanakan untuk melakukan peningkatan pengguliran manual pada lingkungan ini dapat berupa:

  • Nonaktifkan satu node budak dari HAProxy Anda
  • Pastikan Anda tidak memiliki traffic di node slave ini
  • Upgrade node slave secara manual
  • Periksa status replikasi untuk memastikan yang terbaru
  • Nonaktifkan node master di HAProxy Anda
  • Pastikan Anda tidak memiliki lalu lintas di node master Anda
  • Promosikan node budak yang ditingkatkan
  • Aktifkan di HAProxy Anda
  • Konfirmasi bahwa master baru menerima lalu lintas
  • Konfigurasi ulang slave kedua Anda untuk direplikasi dari master baru
  • Nonaktifkan budak kedua dari HAProxy Anda
  • Pastikan Anda tidak memiliki traffic di node slave ini
  • Upgrade node slave secara manual
  • Periksa status replikasi untuk memastikan yang terbaru
  • Aktifkan di HAProxy Anda
  • Konfirmasi bahwa node slave menerima lalu lintas (jika diperlukan)
  • Konfigurasi ulang master lama Anda untuk direplikasi dari master baru
  • Tingkatkan node master lama secara manual
  • Periksa status replikasi untuk memastikan yang terbaru
  • Aktifkan di HAProxy Anda
  • Konfirmasi bahwa master lama (sekarang slave) menerima lalu lintas (jika diperlukan)

Seperti yang Anda lihat, bahkan dengan cara yang disederhanakan, tugas ini memerlukan banyak langkah, dan ini berarti lebih banyak kemungkinan terjadi kesalahan.

Upgrade Bergulir ClusterControl untuk MySQL

Cara terbaik untuk mengurangi kemungkinan kegagalan adalah dengan mengotomatiskan semua (atau hampir semua) langkah ini. Dengan menggunakan ClusterControl, Anda dapat melakukan peningkatan kecil pada cluster MySQL Anda hanya dengan beberapa klik.

Untuk melakukannya, buka ClusterControl -> Pilih Cluster -> Manage -> Upgrades, di mana Anda melihat opsi Upgrade.

Upgrade sedang online dan dilakukan pada satu node pada satu waktu. Node akan dihentikan, perangkat lunak akan diperbarui, dan kemudian node akan dimulai lagi. Jika sebuah node gagal untuk diupgrade, proses akan dibatalkan.

Jika Anda memilih opsi Upgrade, Anda akan melihat konfirmasi tentang versi yang akan ditingkatkan:

Dan Anda hanya perlu menekan Tingkatkan untuk mengonfirmasi pekerjaan ini. Setelah ini, Anda dapat memantau proses peningkatan di Bagian Aktivitas ClusterControl:

Pada saat yang sama, ClusterControl akan mengonfigurasi ulang Load Balancer Anda untuk mengirim lalu lintas ke node yang tersedia.

ClusterControl hanya mendukung peningkatan kecil, karena, seperti yang kami sebutkan sebelumnya, peningkatan besar adalah tugas berisiko yang memerlukan pengujian dan penelitian untuk memastikan bahwa aplikasi Anda akan berfungsi dengan baik pada versi utama yang baru.

Kesimpulan

Upgrade adalah tugas penting di semua perusahaan dan bisa berisiko jika Anda tidak mengambil tindakan pencegahan tertentu dan mengikuti semua langkah upgrade dengan benar.

Di blog ini, kami menyebutkan beberapa pertimbangan untuk dipertimbangkan sebelum memutakhirkan basis data Anda, dan kami menunjukkan perbedaan antara melakukan tugas ini secara manual dan menggunakan ClusterControl, yang membantu Anda meminimalkan kemungkinan kegagalan.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP - Impor file CSV ke database mysql Menggunakan LOAD DATA INFILE

  2. mySQL Error 1040:Terlalu Banyak Koneksi

  3. Bagaimana cara mengimpor file SQL menggunakan baris perintah di MySQL?

  4. Menambahkan beberapa kolom SETELAH kolom tertentu di MySQL

  5. MySQL - Bagaimana cara mencari pencocokan kata yang tepat menggunakan LIKE?