sql >> データベース >  >> RDS >> MariaDB

MariaDB10.4からMariaDB10.5にアップグレードする方法

    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環境で最初にアップグレードをテストすることは、データベースのアップグレードに遅れて気付くよりも、ビジネス側やアプリケーションを利用するユーザーに影響を与えることなく、アプリケーションの完全に良好な形状を実現する必要があるように優先順位を付ける必要があります。まだ発見していない変更が原因で、システムが異常に動作する原因になります。

    復元手順の準備 データベースのアップグレード中にすべてを計画する必要があります。バックアップが利用可能であり、テストによって強力で有望な結果が明らかになったときはいつでも、本番のMariaDBデータベースサーバーのアップグレード中に予期しない問題が発生した場合に備えて、常に安全で予測可能であると感じます。この場合、常にスムーズかつシームレスに正常に戻るための手順を作成して準備してください。

    メンテナンスウィンドウが長すぎない場合は、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
    または新しいUbuntu/Debianベースのバージョンの場合、つまり、Debian 9(Stretch)、Debian Unstable(Sid)、およびUbuntu 16.04 LTS(Xenial)以降

    $ 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を使用したアップグレードは非常に簡単です。最初に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
    インストール後/パッケージのアップグレード パッケージがアップグレードされたら。これはメジャーアップグレードであるため、systemdのデーモンをリロードすることを忘れないでください。実行するだけです

    $ systemctl daemon-reload

    これで設定が完了したので、mariadbサービスを開始します

    $ systemctl start mariadb

    そしてmysqld_upgradeを実行します

    $ mysql_upgrade 

    mysql_upgradeの実行中は、常にエラーログを監視して、通常の操作のすべてを実行および開始する前にエラーをキャッチできるようにしてください。

    tail -5f /var/log/mariadb/mariadb.log

    ClusterControlユーザー向けのアップグレードのヒント

    ClusterControlはメジャーバージョンのアップグレードを提供しないため、パッケージアップグレードを実行するときは、MariaDBクラスターの自動回復モードをオフにすることを常に忘れないでください。ノードをメンテナンスモードに設定して、アラートがサイレントになり、誤ったアラートが通知されないようにします。


    1. ORDERBYを使用するとクエリが遅くなる

    2. Datetimeを使用して文字列として保存された日付を比較する

    3. Pyodbc-データソース名が見つからず、デフォルトのドライバーが指定されていません

    4. SQLServerでマスターデータベースを簡単に再構築する方法