| MySQLバージョンアップの基礎知識 2018/12/01 第25回 中国地方DB勉強会 in 鳥取(倉吉) updated 2018/12/03 Yoshiaki Yamasaki / 山﨑 由章 MySQL Global Business Unit MySQL Senior Sales Consultant
サービスレベルの違い(概要) • Premier Support – 通常出荷開始(GA)日から5年間、包括的なメンテナンスとソフトウェア・アップグレード を提供(最も高いサポートレベルを提供) • Extended Support – 製品およびリリースによっては、Extended Support期間が設定されることがある (MySQLには設定されている) – Premier Supportの後さらに3年間、Premier Supportとほぼ同等の保守・サポートを提供 • Sustaining Support – 新規の問題に対する修正(パッチの提供)は原則的に行われないが、サポートエンジ ニアからのサポートは受けられる 9
マニュアルからバージョン間の差異を確認する • マニュアルの”Changes Affecting Upgrades to MySQL x.x”セクション – MySQL 8.0 Reference Manual / 2.11.1.3 Changes in MySQL 8.0 • https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html – MySQL 5.7 Reference Manual / 2.11.1.2 Changes Affecting Upgrades to MySQL 5.7 • https://dev.mysql.com/doc/refman/5.7/en/upgrading-from-previous-series.html – MySQL 5.6 Reference Manual / 2.11.1.2 Changes Affecting Upgrades to MySQL 5.6 • https://dev.mysql.com/doc/refman/5.6/en/upgrading-from-previous-series.html – MySQL 5.6 リファレンスマニュアル / 2.11.1.3 MySQL 5.5 から 5.6 へのアップグレード • https://dev.mysql.com/doc/refman/5.6/ja/upgrading-from-previous-series.html 37
「Changes Affecting Upgrades to MySQL 5.7」の例 • Incompatible change – In MySQL 5.7.5, the executable binary version of mysql_install_db is located in the bin installation directory, whereas the Perl version was located in the scripts installation directory. For upgrades from an older version of MySQL, you may find a version in both directories. To avoid confusion, remove the version in the scripts directory. For fresh installations of MySQL 5.7.5 or later, mysql_install_db is only found in the bin directory, and the scripts directory is no longer present. Applications that expect to find mysql_install_db in the scripts directory should be updated to look in the bin directory instead. – The location of mysql_install_db becomes less material as of MySQL 5.7.6 because as of that version it is deprecated in favor of mysqld --initialize (or mysqld --initialize- insecure). See Section 2.10.1.1, “Initializing the Data Directory Manually Using mysqld” 38
「Changes Affecting Upgrades to MySQL 5.7」の例 • Incompatible change – In MySQL 5.7.5, the executable binary version of mysql_install_db is located in the bin installation directory, whereas the Perl version was located in the scripts installation directory. For upgrades from an older version of MySQL, you may find a version in both directories. To avoid confusion, remove the version in the scripts directory. For fresh installations of MySQL 5.7.5 or later, mysql_install_db is only found in the bin directory, and the scripts directory is no longer present. Applications that expect to find mysql_install_db in the scripts directory should be updated to look in the bin directory instead. – The location of mysql_install_db becomes less material as of MySQL 5.7.6 because as of that version it is deprecated in favor of mysqld --initialize (or mysqld --initialize- insecure). See Section 2.10.1.1, “Initializing the Data Directory Manually Using mysqld” 39 ⇒データディレクトリの初期化(初期DB作成)方法として、mysql_install_dbではなく、 ”mysqld --initialize”が推奨されている ⇒scripts配下のmysql_install_dbが廃止されている
マニュアルから各パラメーターの詳細を確認する • マニュアルの“Server System Variables”セクションを参照し、 確認したいパラメーター名で検索 – MySQL 8.0 Reference Manual / 5.1.8 Server System Variables • https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html – MySQL 5.7 Reference Manual / 5.1.5 Server System Variables • https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html – MySQL 5.6 Reference Manual / 5.1.5 Server System Variables • https://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html – MySQL 5.6 リファレンスマニュアル / 5.1.4 サーバーシステム変数 • https://dev.mysql.com/doc/refman/5.6/ja/server-system-variables.html 46
参考資料: パラメーター変更に伴う注意事項解説 • MySQL 5.6 と MySQL 5.7 のシステム変数の設定の違いと注意事項に ついて解説した資料 – MySQL 5.7とMySQL 5.6設定パラメータ比較 https://www.mysql.com/jp/why-mysql/presentations/mysql-variables-comparation- ppt-201702-ja/ • MySQL 5.7 と MySQL 8.0 のシステム変数の設定の違いと注意事項などに ついて解説した資料 – MySQL 8.0へのアップグレードのポイントとパラメタ比較 https://www.mysql.com/jp/why-mysql/presentations/mysql-variables-comparation- ppt-57-80-ja/ 48
予約語、関数の差異の確認 • バージョンアップにより、予約語や使用できる関数に違いがある 可能性がある • これらの変更点はマニュアルやリリースノートで確認できる – MySQL Server Version Reference / Keywords and Reserved Words • https://dev.mysql.com/doc/mysqld-version-reference/en/mysqld-version-reference-keywords.html – MySQL Server Version Reference / Functions and Operators • https://dev.mysql.com/doc/mysqld-version-reference/en/mysqld-version-reference-opsfuncs.html 51 ※MySQL 5.7へバージョンアップする場合でも、将来MySQL 8.0にバージョンアップすることを見越して、 MySQL 8.0でキーワード/予約語となっている文字列をオブジェクト名等に使用しないことを推奨します。
モジュールのバージョンアップについて • Yum、RPMによるMySQLのバージョンアップ – MySQL 8.0 Reference Manual / 2.11.1.6 Upgrading MySQL with the MySQL Yum Repository https://dev.mysql.com/doc/refman/8.0/en/updating-yum-repo.html – MySQL 5.7 Reference Manual / 2.11.1.3 Upgrading MySQL with the MySQL Yum Repository https://dev.mysql.com/doc/refman/5.7/en/updating-yum-repo.htm – MySQL 5.7 Reference Manual / 2.11.1.5 Upgrading MySQL with Directly-Downloaded RPM Packages https://dev.mysql.com/doc/refman/5.7/en/updating-direct-rpms.html 67
モジュールのバージョンアップについて • APTによるMySQLのバージョンアップ – MySQL 8.0 Reference Manual / 2.11.1.7 Upgrading MySQL with the MySQL APT Repository https://dev.mysql.com/doc/refman/8.0/en/updating-apt-repo.html – MySQL 5.7 Reference Manual / 2.11.1.4 Upgrading MySQL with the MySQL APT Repository https://dev.mysql.com/doc/refman/5.7/en/updating-apt-repo.html • WindowsインストーラーによるMySQLのバージョンアップ – MySQL 8.0 Reference Manual / 2.3.8 Upgrading MySQL on Windows https://dev.mysql.com/doc/refman/8.0/en/windows-upgrading.html – MySQL 5.7 Reference Manual / 2.3.8 Upgrading MySQL on Windows https://dev.mysql.com/doc/refman/5.7/en/windows-upgrading.html 68
mysqldumpを使用してデータを新環境にロードする • ユーザーは新環境に予め作成しておき、データだけ新環境にロードする • ユーザーの移行にはmysqlusercloneを活用可能 – MySQL Utilities 1.6 / 5.28 mysqluserclone — Clone Existing User to Create New User https://dev.mysql.com/doc/mysql-utilities/1.6/en/mysqluserclone.html 70
備考:3つ以上のバージョンが混在する構成に関する記述 77 • MySQL 8.0 Reference Manual / 17.4.2 Replication Compatibility Between MySQL Versions – https://dev.mysql.com/doc/refman/8.0/en/replication-compatibility.html The use of more than two MySQL Server versions is not supported in replication setups involving multiple masters, regardless of the number of master or slave MySQL servers. This restriction applies not only to release series, but to version numbers within the same release series as well. For example, if you are using a chained or circular replication setup, you cannot use MySQL 8.0.1, MySQL 8.0.2, and MySQL 8.0.4 concurrently, although you could use any two of these releases together.