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

MySQLのパフォーマンス:MySQLをMariaDBに変換する

    MySQLパフォーマンスシリーズの前回の記事で説明したように、MySQLとMariaDBは、標準のMySQLよりもMariaDBを使用することのデメリットはほとんどありません。当社の高可用性MariaDBは、欠点を簡単に軽減できる価値のある後継者であることが証明されています。シリーズの最後の記事として、次のサーバーでさまざまなMySQLおよびMariaDBバージョンにアップグレードすることに焦点を当てます。

    CentOS 6/7

    • cPanelを使用したCentOS6/7でのMySQLからMariaDBへ
    • PleskOnyx17を搭載したCentOS7上のMySQLからMariaDBへ
    • CentOS6上のMySQL5.1-5.5からMariaDB5.5へ
    • CentOS6上のMariaDB5.5からMariaDB10.0

    Ubuntu 14.04 / 16.04

    • MySQL5.1-5.5からUbuntu14.04上のMariaDB5.5へ
    • MySQL5.7からUbuntu16.04上のMariaDB10.2へ

    MariaDBアップグレードプランの選択

    適切なアップグレードプランを選択するには、目的のシステムで実行されているMySQLのバージョンを判別する必要があります。サーバーが現在実行しているMySQLのバージョンを判別する一般的な方法は、サーバー自体にクエリを実行してバージョンを報告することです。これは、サーバー上でLinuxディストリビューションが実行されている場合でも同じように機能します。

    mysql -h localhost -e'SHOW VARIABLES LIKE "version" \ G'

    出力例:

    〜$ mysql -h localhost -p -e'SHOW VARIABLES LIKE "version" \ G'
    *********************** ****1.行***************************
    Variable_name:バージョン
    値:5.5.61 -MariaDB

    MySQLのバージョンを特定したら、以下のキーを使用して、特定のサーバーの正しいアップグレード手順を見つけます。 MySQLの一部のバージョンでは、MariaDB10.xバージョンにアップグレードする前にMariaDB5.5にアップグレードする必要があります。

    MySQLからMariaDBへのアップグレード

    アップグレードプロセスは、ほとんどのサーバータイプ間で類似しています。実行される特定のコマンドには違いがありますが、全体的な手順は次の一般的なアップグレード手順です:

      正確なダウンタイムをスケジュールします。 適切なバックアップを確保してください。 既存のMySQLバイナリ/パッケージを削除します。 正しいMariaDBリポジトリをインストールします。
    1. リポジトリキャッシュをクリアして、古いパッケージデータを消去します。
    2. システムのパッケージマネージャーを介してMariaDBパッケージをインストールします。
    3. MySQLサービスを開始して、MariaDBを起動します。
    4. MySQLアップグレードスクリプトを実行します。
    5. MySQLデータベースにアクセスでき、データが正しいことを確認します

    さまざまなLiquidWebシステムの特定の手順を以下に示します。該当するアップグレード手順を選択する前に、上記の一般的なアップグレード手順の最初の2つの手順を確認してください。 。これらの手順は一般的に普遍的であり、メンテナンス計画を成功させるために重要です。

    正確なダウンタイムをスケジュールする

    本番環境に影響を与える変更を実行するために適切なメンテナンスウィンドウをスケジュールするのは難しい場合があります。メンテナンスイベントウィンドウには、メンテナンスプランで必要なすべてのタスクを実行するのに十分な時間に加えて、トラブルシューティングと、必要に応じて復帰プランを完了するための追加の時間が含まれている必要があります。

    適切なバックアップを確保する

    メンテナンスバックアップ計画には、ファイルとデータベースをバックアップするだけではありません。また、メンテナンスを開始する前に環境を元の状態に復元するプロセスの概要を示す復帰計画を作成する必要があります。
    メンテナンスイベントにより、バックアップに復帰する代わりに予期しない問題が発生する場合があります。サービスを復元するための有効なバックアップ計画と有効な復帰計画の両方を用意することは、メンテナンスを成功させるための重要な要素です。以下は、両方のサンプルバックアッププランの概要です。 およびサンプル復帰計画 これは、この記事のアップグレード手順の概要で使用できます。

    サンプルバックアッププラン

    +

    サンプル復帰計画

    +

    cPanelを使用したCentOS6/7でのMySQLからMariaDBへの変換

    すべてのLiquidWebcPanelサーバーイメージには、すでにインストールされているMariaDB5.5が含まれています。これには、CentOS6とCentOS7の両方のサーバーイメージが含まれます。 MariaDB 10.xシリーズが必要でない限り、アップグレードする必要はありません。手動アップグレードの場合、MariaDBが提供する手順は次のとおりです。MariaDB5.5からMariaDB 10.0にアップグレードする場合、cPanelは、すべての面倒な作業を行う簡単なポイントアンドクリックインターフェイスを提供します。 「テキストのみ」形式またはグラフィック形式のいずれかで、以下の手順のいずれかに従ってください。

    cPanel MariaDBのアップグレード手順:

    ステップA) スケジュールされた時間に続行する前に、バックアップが存在することを確認してください。

    ステップB) WHMにログインし、 MySQL/MariaDBアップグレードをロードします ページ:

    ①左側のクイック検索ボックスを使用して、次のように入力します:mysql upgrade

    MySQL/MariaDBのアップグレードを見つけてクリックします リンク。

    ③MariaDBの目的のバージョンを選択しました。

    ④[次へ]ボタンをクリックします。

    ステップC)アップグレードの警告」を待ちます 」ページで読み込みを完了します。

    ①各チェックボックスを有効にして、各警告メッセージを読み、確認します。

    ②[続行]ボタンをクリックします。

    ステップD)アップグレードタイプ」を待ちます 」ページで読み込みを完了します。

    ①シームレスなアップグレードエクスペリエンスを実現するには、[無人アップグレード]を選択します。

    ②[続行]ボタンをクリックします。

    ステップE) アップグレードプロセスが完了するのを待ちます。

    PleskOnyx17を使用したCentOS7上のMariaDBへのMySQL

    すべてのLiquidWebCentOS 7サーバーイメージには、CentOS 7 Plesk Onyx 17サーバーを含め、すでにインストールされているMariaDB5.5が含まれています。 MariaDB 10.xシリーズが必要でない限り、アップグレードする必要はありません。このような場合は、標準のMariaDBPleskアップグレード手順に従ってください。LinuxでMySQL5.5を5.6/5.7にアップグレードする方法またはMariaDB5.5を10.0/ 10.1/10.2にアップグレードする方法

    CentOS6上のMySQL5.1-5.5からMariaDB5.5へ

    互換性の制限により、MySQL 5.1、5.2、5.3、および5.5.xはMariaDB 5.5にアップグレードする必要があり、MariaDB10.0に直接アップグレードすることはできません。このアップグレードプランでは、これらの非推奨のMySQLバージョンのいずれかをMariaDB5.5にアップグレードする方法について説明します。 MariaDB 5.5へのアップグレードが完了したら、CentOS6でMariaDB5.5をMariaDB10.0にアップグレードする方法に従ってください。 MariaDB10へのアップグレードプロセスを続行するための手順。

    ステップ1: スケジュールされた時間に続行する前に、バックアップが存在することを確認してください。

    ステップ2: MySQLサービスを停止します。

    service mysqld stop

    出力例:
    〜$ service mysqld restart
    mysqldの停止:[OK]

    ステップ3: CentOS6用のMariaDB5.5リポジトリをインストールします

    cat [mariadb]
    name =MariaDB
    baseurl =http://yum.mariadb.org/5.5/centos6 -amd64
    gpgkey =https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
    gpgcheck =1
    EOF
    エラーが発生しない限り、このコマンドには表示される出力はありません。

    ステップ4: yumリポジトリキャッシュをクリーンアップします

    yum clean all
    出力例:

    〜$ yum clean all
    ロードされたプラグイン:fastestmirror
    クリーニングリポジトリ:baseextrasmariadbの更新
    すべてをクリーンアップ
    最速のミラーのリストをクリーンアップ

    ステップ5: MySQLパッケージを削除する

    yum remove mysql-server mysql 出力例:

    トランザクションテストの実行
    トランザクションテストが成功しました
    トランザクションの実行
    消去:mysql-server-5.1.73-8.el6_8.x86_64 1/1
    警告:/ var / log / mysqld.logは/var/log/mysqld.log.rpmsaveとして保存されます
    確認:mysql-server-5.1.73-8.el6_8.x86_64 1/1
    削除:
    mysql -server.x86_64 0:5.1.73-8.el6_8
    完了!
    簡潔にするために切り捨てられました。

    ステップ6: MariaDB-serverをインストールします およびMariaDB-client yum経由のパッケージ。

    yum install MariaDB-server MariaDB-client -y

    出力例:インストール済み:
    MariaDB-client.x86_64 0:10.1.35-1.el6 MariaDB-compat.x86_64 0:10.1.35-1.el6 MariaDB-server.x86_64 0:10.1.35 -1.el6
    インストールされている依存関係:
    MariaDB-common.x86_64 0:10.1.35-1.el6 boost-program-options.x86_64 0:1.41.0-28.el6
    galera .x86_64 0:25.3.23-1.rhel6.el6 jemalloc.x86_64 0:3.6.0-1.el6
    置換:
    mysql-libs.x86_64 0:5.1.73-8.el6_8
    完了!
    簡潔にするために切り捨てられました。

    ステップ7: MySQLサービスを再起動します

    service mysql start 出力例:

    〜$ service mysql start
    MariaDB.18080818:21:13の開始mysqld_safe「/var/lib/mysql/cent6.hostname.err」へのログ記録。
    18080818:21:13 mysqld_safe / var / lib / mysql
    SUCCESS!
    のデータベースを使用してmysqldデーモンを起動します ステップ8:MySQLアップグレードツールを実行する

    mysql_upgrade 出力例:

    〜$ mysql_upgrade
    MySQLアップグレードが検出されました
    フェーズ1/4:mysqlからのビューを修正します
    mysql
    mysql.columns_priv OK
    mysql.db OK
    mysql.event OK
    mysql.func 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
    フェーズ4/4:「mysql_fix_privilege_tables」の実行
    OK
    簡潔にするために切り捨てられました。

    ステップ9:MariaDBサーバーが期待どおりに実行されていることを確認します

    mysql -e'SHOW VARIABLES LIKE "version" \ G' 出力例:

    〜$ mysql -e'SHOW VARIABLES LIKE "version" \ G'
    *************************** 1 .row ***************************
    Variable_name:version
    Value:5.5.61-MariaDB
    >

    ステップ10: アップグレードが完了しました。データベースが存在し、機能していることを確認してください。

    [ オプション ] CentOS6の手順でMariaDB5.5をMariaDB10.0にアップグレードする方法に従ってください。

    CentOS6上のMariaDB5.5からMariaDB10.0

    ステップ1: スケジュールされた時間に続行する前に、バックアップが存在することを確認してください。

    ステップ2: すべてのMariaDBパッケージを削除します。

    yum remove MariaDB-* 出力例:
    実行中のトランザクションテスト
    実行中のトランザクション
    実行中のトランザクション
    消去:MariaDB-server-5.5.61-1.el6.x86_64 1/2
    消去:MariaDB-client-5.5.61-1.el6.x86_64 2/2
    検証:MariaDB-server-5.5.61-1.el6.x86_64 1/2
    検証:MariaDB- client-5.5.61-1.el6.x86_64 2/2
    削除:
    MariaDB-client.x86_64 0:5.5.61-1.el6 MariaDB-server.x86_64 0:5.5.61-1 .el6
    完了!
    簡潔にするために切り捨てられました。

    ステップ3: 既存のMariaDBリポジトリを削除します。

    rm -f /etc/yum.repos.d/MariaDB*.repo エラーが発生しない限り、このコマンドには表示される出力はありません。

    ステップ4: MariaDB10.OYumリポジトリファイルを作成します。

    cat [mariadb]
    name =MariaDB
    baseurl =http://yum.mariadb.org/10.0/centos6 -amd64
    gpgkey =https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
    gpgcheck =1
    EOF
    エラーが発生しない限り、このコマンドには表示される出力はありません。

    ステップ5: Yumキャッシュをクリーンアップします。

    yum clean all

    出力例:

    〜$ yum clean all
    ロードされたプラグイン:fastestmirror
    クリーニングリポジトリ:baseextrasmariadbの更新
    すべてをクリーンアップ
    最速のミラーのリストをクリーンアップ

    ステップ6: MariaDB-serverをインストールします およびMariaDB-client Yum経由のパッケージ。

    yum install MariaDB-server MariaDB-client 出力例:

    トランザクションテストの実行
    トランザクションテストが成功しました
    トランザクションの実行
    インストール:MariaDB-client-10.0.36-1.el6.x86_64 1 / 2
    インストール:MariaDB-server-10.0.36-1.el6.x86_64 2/2
    確認:MariaDB-server-10.0.36-1.el6.x86_64 1/2
    確認中:MariaDB-client-10.0.36-1.el6.x86_64 2/2
    インストール済み:
    MariaDB-client.x86_64 0:10.0.36-1.el6 MariaDB-server.x86_64 0:10.0 .36-1.el6
    完了!
    簡潔にするために切り捨てられました。

    ステップ7: MySQLサービスを開始します。

    service mysql start

    ステップ8: MySQLアップグレードスクリプトを実行します。

    mysql_upgrade

    ステップ9: アップグレードが完了しました。データベースが存在し、機能していることを確認してください。

    Ubuntu14.04上のMySQL5.1-5.5からMariaDB5.5へ

    ステップ1: スケジュールされた時間に続行する前に、バックアップが存在することを確認してください。

    ステップ2: このワンライナーを使用してMariaDB5.5リポジトリをインストールすると、必要なツール(欠落している場合)、Ubuntu 14.04 GPGキー、およびaptパッケージキャッシュの更新中にMariaDB5.5リポジトリがインストールされます。

    sudo apt-get install software-properties-common -y
    sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
    sudo add -apt-repository'deb [arch =amd64、i386、ppc64el] http://ftp.osuosl.org/pub/mariadb/repo/5.5/ubuntu trusty main'
    sudo apt-get update

    出力例:
    〜$ sudo apt-get install software-properties-common -y> / dev / null
    〜$ sudo apt-key adv --recv-keys- -keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
    実行中:gpg --ignore-time-conflict --no-options --no-default-keyring --homedir /tmp/tmp.PtpHIXMNvY- -no-auto-check-trustdb --trust-model always --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --recv-keys --keyserver hkp:// keyserver.ubuntu.com:80 0xcbcb082a1bb943db
    gpg:hkpサーバーからキー1BB943DBをリクエストしていますkeyserver.ubuntu.com
    gpg:キー1BB943DB:パブリックキー"MariaDBパッケージ署名キー "imported
    gpg:処理された総数:1
    gpg:imported:1
    〜$ sudo add-apt-repository'deb [arch =amd64、i386、ppc64el] http:/ /ftp.osuosl.org/pub/mariadb/repo/5.5/ubuntu trusty main'
    〜$ sudo apt-get update> / dev / null
    簡潔にするために切り捨てられました。

    ステップ3: mysqlサービスを停止します。

    sudo service mysql stop
    出力例:
    〜$ sudo service mysql stop
    mysql stop / waiting

    ステップ4: MySQL構成ファイルの名前を/etc/mysql/my.cnfから/etc/mysql/my.cnf.bakに変更します。この手順は、インストールの問題を防ぐために、互換性のないすべてのディレクティブ/変数が構成から削除されていることを確認するために必要です。

    sudo mv /etc/mysql/my.cnf {,. bak}

    ステップ5: mariadb-serverをインストールします パッケージ。これにより、既存のMySQLバイナリが同時に削除され、新しいMariaDBバイナリがインストールされます。
    sudo apt-get install mariadb-server -y

    出力例:

    +

    ステップ6: インストール中に、MySQLルートパスワードを2回変更するように求める画面ダイアログが表示されます。指示に従って、パスワードを変更するか、空白のパスワードを入力して変更をスキップします。


    ステップ7: 正常に完了すると、mysqlサービスが自動的に開始され、インストールプロセス中にmysql_upgradeスクリプトが自動的に完了します。

    A)mysqlサービスが実行されていることを確認します。 sudoservice mysql status
    出力例:
    〜$ sudo service mysql status
    mysql start / running、process 4745

    B)mysql_upgradeが成功したことを確認します。 sudomysql_upgrade

    出力例:
    〜$ sudo mysql_upgrade
    このMySQLのインストールはすでに5.5.61にアップグレードされています-MariaDB、まだmysql_upgradeを実行する必要がある場合は--forceを使用してください

    ステップ8: アップグレードが完了しました。データベースが存在し、機能していることを確認してください。

    MySQL5.7からUbuntu16.04上のMariaDB10.2へ

    ステップ1: スケジュールされた時間に続行する前に、バックアップが存在することを確認してください。

    ステップ2: ローカルrootアカウントに適切なパスワードがあることを確認してください。 MariaDB 10.2にアップグレードする前に、「root」@「localhost」を確認してください。 パスワードが他の方法で割り当てられていることを確認するユーザー、 auth_socket プラグインは空のパスワードを使用します。これは古いセットアップでは一般的な方法であり、StrictSQLのMariaDB10.2のデフォルトモードが原因で、アップグレードプロセスで問題が発生します。

    次のスクリプトは、ローカルrootユーザーの詳細を出力します。

    mysql -e'select User、Host、Plugin、authentication_string from user where authentication_string ="" and plugin ="auth_socket";' mysql
    出力例:
    〜$ mysql -e'select User、Host、Plugin、authentication_string from user where authentication_string ="" and plugin ="auth_socket";' mysql
    + ------ + ----------- + ------------- + ----------- ------------ +
    |ユーザー|ホスト|プラグイン| authentication_string |
    + ------ + ----------- + ------------- + ---------- ------------- +
    |ルート|ローカルホスト| auth_socket | |
    + ------ + ----------- + ------------- + ----------- ------------ +

    以下は、これらのエントリを更新する方法の2つの例です。

    オートマジックメソッド :次のワンライナーは、/root/.my.cnfからパスワードを読み取り、ファイルが存在する場合は、そのパスワードを使用してMySQLユーザーエントリを更新します。

    sudo test -e /root/.my.cnf &&sudo mysql -e "ALTER USER'root' @'localhost' IDENTIFIED WITH mysql_native_password BY'$(awk -F" [='] "'tolower($ 1) 〜/ password / {print $(NF-1)}'/root/.my.cnf)'; select User、Host、Plugin、authentication_string from user where user ='root' and host ='localhost'; " mysql || echo「エラー:/root/.my.cnfは存在しません、あなたはルートですか?」
    出力例:
    〜$ sudo test -e /root/.my.cnf &&sudo mysql -e "ALTER USER'root' @'localhost' IDENTIFIED WITH mysql_native_password BY'$(awk -F "[=']"' tolower($ 1)〜/ password / {print $(NF-1)}'/root/.my.cnf)'; select User、Host、Plugin、authentication_string from user where user ='root'およびhost='localhost'; " mysql || echo「エラー:/root/.my.cnfは存在しません、ルートですか?」
    + ------ + ----------- + ------ ----------------- + -------------------------------- ----------- +
    |ユーザー|ホスト|プラグイン| authentication_string |
    + ------ + ----------- + ----------------------- + ------------------------------------------- +
    |ルート|ローカルホスト| mysql_native_password | * 40C5E49F0CC7BDC637FEEDFBF14FF100C37619D7 |
    + ------ + ----------- + ----------------------- + ------------------------------------------- +

    手動による方法: rootユーザーアカウントに適切なパスワードを追加するには、次の構文が必要です。 /root/.my.cnfファイルを正しいパスワードで更新することを忘れないでください。そうしないと、更新でエラーが発生する可能性があります。 SuperSecretPassの代わりに正しいパスワードを使用してください。

    ALTER USER‘root’ @’localhost’ IDENTIFIED WITH mysql_native_password BY‘SuperSecretPass’;

    ステップ3: MariaDB10.2リポジトリをインストールします。これは、必要なツール、GPGキー、リポジトリをインストールし、パッケージキャッシュを更新するマルチコマンドスタンザです。

    sudo apt-get install software-properties-common -y> / dev / null
    sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
    sudo add-apt-repository'deb [arch =amd64、arm64、i386、ppc64el] http://ftp.osuosl.org/pub/mariadb/repo/10.2/ubuntu xenial main'
    sudo apt -更新を取得>/dev / null

    出力例:
    〜$ sudo apt-get install software-properties-common -y
    〜$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu .com:80 0xF1656F24C74CD1D8
    実行中:/tmp/tmp.J8PdET9w5B/gpg.1.sh --recv-keys
    --keyserver
    hkp://keyserver.ubuntu.com:80
    0xF1656F24C74CD1D8
    gpg:hkpサーバーkeyserver.ubuntu.comからキーC74CD1D8を要求しています
    gpg:キーC74CD1D8:公開キー"MariaDB署名キー"がインポートされました
    gpg:処理された総数:1
    gpg:インポートされた:1(RSA:1)
    〜$ sudo add-apt-repository'deb [arch =amd64、arm64、i386、ppc64el] http: //ftp.osuosl.org/pub/mariadb/repo/10.2/ubuntu xenial main'
    〜$ sudo apt-get update> / dev / null
    簡潔にするために切り捨てられました。

    ステップ4: mysqlサービスを停止します。

    sudo service mysql stop
    出力例:
    〜$ sudo service mysql stop
    mysql stop / waiting

    ステップ5: MySQL構成ファイルの名前を/etc/mysql/my.cnfから/etc/mysql/my.cnf.bakに変更します。この手順は、インストールの問題を防ぐために、互換性のないすべてのディレクティブ/変数が構成から削除されていることを確認するために必要です。
    sudo mv /etc/mysql/my.cnf{,.bak}
    ステップ6: mariadb-serverパッケージをインストールします。これにより、既存のMySQLバイナリが同時に削除され、新しいMariaDBバイナリがインストールされます。

    sudo apt-get install mariadb-server -y 出力例:
    〜$ sudo apt install mariadb-server -y

    ステップ7: インストール中に画面上のダイアログが表示され、rootパスワードがすでに設定されているため変更できなかったことを確認します。 Enterキーを押して続行します。

    ステップ8: 正常に完了すると、mysqlサービスが自動的に開始されます。
    sudo service mysql status 出力例:
    〜$ sudo service mysql status
    mysql start / running、process 4745

    ステップ9: 最後に、mysql_upgradeを実行してアップグレードを完了します。
    sudomysql_upgrade 出力は、アップグレード時の通常のエラーを示しています。

    出力例:

    +

    ステップ10: アップグレードが完了しました。データベースが存在し、機能していることを確認してください。

    シリーズナビゲーション<<前の記事次の記事>>

    1. PDO mysql:挿入が成功したかどうかを知る方法

    2. 日付と時刻で降順で並べ替えますか?

    3. FIND_IN_SET()とIN()

    4. 1つのスクリプトで複数のトリガーを作成する方法はありますか?