このブログでは、アップグレードする前に考慮すべきいくつかの考慮事項と、MySQLでローリングアップグレードを実行する方法について説明します。
一般に、マイナーアップグレードは、簡単にダウングレードまたはロールバックできるという点で安全であり、以前のパッケージおよび機能と互換性がある必要があります。
メジャーバージョンのアップグレードには、データベースパッケージの削除、構成とコネクタの互換性、廃止された機能など、いくつかのリスクが伴います。
したがって、両方のシナリオでテストが重要である場合でも、メジャーアップグレードの場合、ビジネスの深刻な問題を回避したい場合は必須です。
では、将来の問題を回避するために、アップグレードする前にいくつかの考慮事項を見てみましょう。
バックアップは常に重要であり、データベースをアップグレードする場合はさらに重要です。何か問題が発生し、他の障害復旧オプションが失敗した場合は、データベースを復元するためのバックアップが必要になります。したがって、タスクを開始する前に、現在のデータベースの完全バックアップ(物理的または/および論理的)を取り、すべてが数日/週の間正しく機能することを確認するまで安全に保管してください。
新しいバージョンで廃止された機能を使用している場合、アプリケーションが失敗する可能性があり、システムを回復するためにロールバックする必要があります。これにより、ダウンタイム(アプローチによって異なります)と時間の損失。非推奨の機能を確認し、使用している機能と比較することで、この失敗したアップグレードの試みを回避できます。
これは、アップグレードだけでなく、データベースまたはアプリケーションの変更にとっても重要です。本番環境を複製するテスト環境を用意することで、時間を節約し、アップグレードやデータベースの変更時に予期しない問題を回避できます。
どのアップグレードでも、データベースをできるだけ早く稼働させるために必要な場合は、ロールバックを使用できるようにしておくことが重要です。そうしないと、バックアップまたは別の目標復旧計画オプションからクラスターを再作成する必要がある場合に、RTO(目標復旧時間)に影響を与える可能性があります。
ダウングレードが不可能な場合があることに注意してください。変更をロールバックする必要がある場合に備えて、二次的な計画を立てる必要があります。
ベンダーとバージョンによっては、mysqlcheckコマンドを使用して、現在のインストールの予備チェックを実行し、準備ができていることを確認できます。
$ 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
これは、アップグレードする前に実行する最初のチェックであり、アップグレードされていないことをチェックします。
- 定義者が欠落しているか空であるか、作成コンテキストが無効なトリガー
確認する必要のあることがいくつかありますが、広範なブログ投稿を避けるために、これについてはMySQLの公式ドキュメントを参照してください。
MySQLの手動ローリングアップグレード
1つのマスターノードと2つのスレーブノードがあり、それらの前に1つのHAProxyノードがあるMySQLレプリケーションがあるとします。
この環境で手動ローリングアップグレードを実行する簡単な方法は、次のとおりです。
- HAProxyから1つのスレーブノードを無効にする
- レプリケーションのステータスをチェックして、最新であることを確認します
- HAProxyのマスターノードを無効にする
- HAProxyで有効にする
- HAProxyから2番目のスレーブを無効にする
- レプリケーションのステータスをチェックして、最新であることを確認します
- HAProxyで有効にする
- スレーブノードがトラフィックを受信していることを確認します(必要な場合)
- レプリケーションのステータスをチェックして、最新であることを確認します
- HAProxyで有効にする
- 古いマスター(現在はスレーブ)がトラフィックを受信していることを確認します(必要な場合)
ご覧のとおり、単純化された方法でも、このタスクには多くの手順が必要であり、何かがうまくいかない可能性が高くなります。
MySQLのClusterControlローリングアップグレード
失敗の可能性を減らす最善の方法は、これらのすべて(またはほとんどすべて)の手順を自動化することです。 ClusterControlを使用すると、数回クリックするだけでMySQLクラスターのマイナーローリングアップグレードを実行できます。
これを行うには、ClusterControl->[クラスター]->[管理]->[アップグレード]を選択します。[アップグレード]オプションが表示されます。
アップグレードはオンラインで、一度に1つのノードで実行されます。ノードが停止し、ソフトウェアが更新されてから、ノードが再起動されます。ノードのアップグレードに失敗した場合、プロセスは中止されます。
アップグレードオプションを選択すると、アップグレードされるバージョンに関する確認が表示されます:
そして、このジョブを確認するには、アップグレードを押す必要があります。この後、ClusterControlアクティビティセクションでアップグレードプロセスを監視できます:
同時に、ClusterControlはトラフィックを送信するようにロードバランサーを再構成します利用可能なノードに。
ClusterControlはマイナーアップグレードのみをサポートします。これは、前述のように、メジャーアップグレードはリスクの高いタスクであり、アプリケーションが新しいメジャーバージョンで正常に動作することを確認するためのテストと調査が必要になるためです。
アップグレードはすべての企業にとって重要なタスクであり、特定の予防措置を講じず、すべてのアップグレード手順に正しく従わないとリスクが生じる可能性があります。
このブログでは、データベースをアップグレードする前に考慮すべきいくつかの考慮事項について説明し、このタスクを手動で実行することと、障害の可能性を最小限に抑えるのに役立つClusterControlを使用することの違いを示しました。