MariaDB 10.5は2020年6月にGAとしてリリースされました。このリリースでは、Amazon S3、またはS3APIをサポートするサードパーティのパブリッククラウドまたはプライベートクラウドのサポートが追加されました。また、粒度を拡張する特権の高度な処理機能を備えているため、たとえばDBAは、データベースのセキュリティを強化するために、特定のデータベースユーザーに制限付きの特権を提供できます。
MariaDB 10.5は、そのパフォーマンスに関してInnoDBストレージエンジンでの改善も誇っています。また、いくつかの新しい変数も表示されますが、主要な非推奨変数は非推奨としてマークされているか、完全に削除されています。たとえば、MariaDB 10.5では、バージョン10.6で削除されるように設定されている間、innodb_buffer_pool_instancesはすでに非推奨としてマークされていることに注意してください。彼らが言う理由について知りたい場合は、MDEV-15058をチェックしてください。
これらすべての変更を加えて、このブログを配信して、MariaDB10.4をMariaDB10.5にアップグレードする方法のガイドを提供することをお勧めします。アップグレードのために考慮する必要があることについて、段階的に説明します。
テストを行わずに、本番環境でデータベースをライブでアップグレードすることが常に最良の方法であるとは限りません。この単純な専門用語は、SNAFUと呼ばれる用語を定義します。あなたはその用語を見つけるためにグーグルを打つかもしれませんが、基本的に、通常の健康、特に正常に機能しているシステムに触れないことが常に最善です。ただし、システムを常に一定に保つ必要があるとは限りません。新しいバージョンのリリースに存在するセキュリティパッチ、バグ修正、および高度な機能を利用できるようにアップグレードする必要があります。したがって、この場合、アップグレードの前に常にフェイルバックメカニズムを計画してセットアップします。システムをアップグレードすると、見過ごされていた問題に追いついた場合、ビジネスに影響を与える可能性があります。
この場合、常にデータのバックアップを提供してください。 mariabackupやmydumperなどのツールを使用できます。また、ClusterControlユーザーの場合は、データベースバックアップ管理ツールを使用できます。必要なバックアップの種類についてまだ準備ができていない場合は、バックアップを取るときにベストプラクティスを確認する必要があるかもしれません。
バックアップは、予期しない問題が発生した場合にプライマリ状態に復元する必要がある場合にフィードするデータを提供しますが、メジャーリリースへのアップグレードは、最初に開発マシンまたはステージングマシンでテストする必要があります。大企業の場合、データベースサーバーのメジャーバージョンへのアップグレードを最初に適用する必要があるターゲットQA環境またはステージング環境で常に回帰テストを実行するのが一般的な方法です。アプリケーションとデータベースのすべてのシステムは、すべてが合格するまで回帰テストまたは一連のQAテストを続行する必要があります。アプリケーションのテストケースをデータベースシステムに単純化して、データベースがクラッシュしない限り、またはテストが行われる場所で短時間だけ証明されている限り、すべてが正常であることを除外することはお勧めできません。短く、システム全体のごく一部をカバーする非常に単純なテストです。ステージング環境またはQA環境で最初にアップグレードをテストすることは、データベースのアップグレードに遅れて気付くよりも、ビジネス側やアプリケーションを利用するユーザーに影響を与えることなく、アプリケーションの完全に良好な形状を実現する必要があるように優先順位を付ける必要があります。まだ発見していない変更が原因で、システムが異常に動作する原因になります。
メンテナンスウィンドウが長すぎない場合は、Ansible、Chef、Puppet、SaltStack、Terraformなどの自動ツールを使用して復元手順を準備することをお勧めします。人的エラーを最小限に抑え、重要なタスクを実行するためのスピードと敏捷性を提供します。自動化スクリプトが失敗した場合に単一のエラーが発生した場合に損害を与える可能性がありますが、それはまた、これが発生する可能性を無視できないことを意味します。したがって、これは、復元がシームレスである必要があり、有効な手順に復元できるように適切にテストされていることも示しています。
MariaDBのアップグレード手順
MariaDBバージョン10.4から10.5へのアップグレードは、面倒ではありませんが簡単です。以下は、最新のMariaDB10.5バージョンにアップグレードするために実行できる手順です。
MariaDB 10.4を使用していることは理解できるので、現在のMariaDBサーバーノードに現在のリポジトリがあることを前提としています。それ以外の場合は、とにかくリポジトリを追加できます。これは簡単です。
Ubuntu / Debian
Ubuntu / Debianベースのシステムの場合、既存のmariadbリポジトリの場合、リポジトリを編集できます。既存のリポジトリがホストにあるかどうかを確認したり、既存のMariaDBリポジトリがどこかにあるかどうかを確認したりできる場合があります。そのためには、ただ
$ grep ^[^#] /etc/apt/sources.list /etc/apt/sources.list.d/*
通常、mariadb.listリポジトリがあります。 Ubuntu 18.0(Bionic)でのセットアップでは、これは次のように表示されます。
[email protected]:/vagrant# cat /etc/apt/sources.list.d/mariadb.list
deb [arch=amd64] http://ftp.osuosl.org/pub/mariadb/repo/10.4/ubuntu bionic main
次のコマンドラインを実行するだけで、MariaDB10.5リポジトリを追加できます
. /etc/os-release
sudo echo "deb [arch=amd64] http://ftp.osuosl.org/pub/mariadb/repo/10.5/${ID} ${VERSION_CODENAME} main" >> /etc/apt/sources.list.d/mariadb.list
MariaDBパッケージをインストールする前に、インストールするパッケージを、リポジトリ内のパッケージのデジタル署名を検証するために使用されるGPG公開鍵を使用してインポートする必要があります。次の方法でaptキーを確認できます
$ apt-key list |grep -C2 -i 'mariadb'
キーがインポートされていない場合は、
$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
完了したら、実行するだけです
$ sudo apt update
CentOS / RHEL
CentOS / RHELの場合、既存のリポジトリがある場合は、ファイルを追加または編集するだけです。それ以外の場合は、MariaDB 10.5リポジトリ用に以下の行を追加するだけで、リポジトリの要件が満たされます(mariadb.repoを参照)。たとえば、CentOS8.0ホストに次のmariadb.repoがあります。
[[email protected] ~]# cat /etc/yum.repos.d/mariadb.repo
[mariadb]
name = MariaDB Repository
baseurl = http://yum.mariadb.org/10.4/centos8-amd64
enabled = 1
gpgkey = https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck = 1
[mariadb_10.5]
name = MariaDB Repository For 10.5
baseurl = http://yum.mariadb.org/10.5/centos8-amd64
enabled = 1
gpgkey = https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck = 1
MariaDBリポジトリが有効になっていて正常に機能しているかどうかを確認できます:
[[email protected] ~]# dnf --disablerepo=* --enablerepo=mariadb_10.5 repolist
repo id repo name status
mariadb_10.5 MariaDB Repository For 10.5 83
MariaDBを使用したアップグレードは非常に簡単です。最初にMariaDBサーバーを適切にシャットダウンしたことを確認してください。
ビジーで稼働中の本番サーバーの場合は、着信接続がないこと、およびダーティページがディスクに適切にフラッシュされていることを確認してください。サーバーをシャットダウンする前に、Innodbストレージエンジンを使用してダーティページのフラッシュを積極的に設定して、すべてのダーティページをすべてフラッシュし、シャットダウンプロセスを高速化することができます。
set global innodb_max_dirty_pages_pct = 0;
次に、次の方法でダーティページを監視します
$ mysqladmin ext -i10 | grep dirty
| Innodb_buffer_pool_pages_dirty | 0 |
| Innodb_buffer_pool_bytes_dirty | 0 |
問題がなければ、MariaDBインスタンスをシャットダウンします
systemctl stop mariadb
マスター/レプリカデータベースクラスターの場合、常にレプリカでアップグレードを開始することをお勧めします。したがって、アップグレード前とシャットダウン後に、my.cnf構成ファイルに以下を追加したことを確認してください。
[mysqld]
….
skip-slave-start
これにより、MariaDBサーバーの起動時にレプリケーションスレッドが自動的に開始されないようにすることができます。これにより、安全性が高まり、レプリケーションでのさらなるミスを回避できます。次のステートメントを使用して準備ができたら、レプリケーションスレッドを手動で開始するだけです。
START SLAVE;
Ubuntu / Debian
Ubuntu/Debianベースのシステムでのアップグレードは非常に簡単です。
sudo apt install --only-upgrade mariadb-server mariadb-client mariadb-backup mariadb-common
もちろん、-yオプションを指定しないでください。そうすれば、更新する次のパッケージを確認できます。
Centos / RHEL
Ubuntu / Debianベースのシステムと同様に、CentOS/RHELも現在のMariaDB10.4バージョンをアップグレードする手間がありません。以下のコマンドを実行して、プロセスを実行できます。
$ dnf --disablerepo=* --enablerepo=mariadb_10.5 upgrade Mariadb-server MariaDB-client MariaDB-backup MariaDB-common Mariadb-shared
$ systemctl daemon-reload
これで設定が完了したので、mariadbサービスを開始します
$ systemctl start mariadb
そしてmysqld_upgradeを実行します
$ mysql_upgrade
mysql_upgradeの実行中は、常にエラーログを監視して、通常の操作のすべてを実行および開始する前にエラーをキャッチできるようにしてください。
tail -5f /var/log/mariadb/mariadb.log
ClusterControlユーザー向けのアップグレードのヒント
ClusterControlはメジャーバージョンのアップグレードを提供しないため、パッケージアップグレードを実行するときは、MariaDBクラスターの自動回復モードをオフにすることを常に忘れないでください。ノードをメンテナンスモードに設定して、アラートがサイレントになり、誤ったアラートが通知されないようにします。