Upgrade to Pro — share decks privately, control downloads, hide ads and more …

クラウド時代のMySQL入門

 クラウド時代のMySQL入門

2019年12月18日(水)に開催された「ニフクラ エンジニア ミートアップ:MySQL超入門!進化する8.0を中の人が語る」での発表資料です。
https://fujitsufjct.connpass.com/event/153713/?fbclid=IwAR1QJzICqBv9N1T2ruRQvIIpriuqCb3rONTfmhLxUYdLWFRBJvDCjCp0fBU

7fb060398b26ed622d34921bd64e4f5d?s=128

YoshiakiYamasaki

December 18, 2019
Tweet

Transcript

  1. MySQL Principal Solution Engineer, Asia Pacific and Japan Yoshiaki Yamasaki

    / 山﨑 由章 2019/12/18 クラウド時代のMySQL入門
  2. 2 Safe harbor statement

  3. 3 The world's most popular open source database 世界で最も普及しているオープンソース データベース

  4. 4 DB-Engines Ranking による調査結果 出典:https://db-engines.com/en/ranking データベースエンジンの普及度調査で、長年Oracle Databaseに次ぐ 第2位を取り続けている ※検索エンジンでの検索回数、技術フォーラムでのディスカッション数、求人数、ソーシャルメディアでの話題数などを ベースに独自指標で作成されたランキング

  5. 5 Stack Overflow Developer Survey 2019 出典:https://insights.stackoverflow.com/survey/2019 ※複数選択可で該当するものを全て回答 エンジニア向けのアンケート調査で、 最も使われているデータベースとして

    MySQLが選ばれた
  6. 6 MySQLの歴史 MyISAM InnpDB Replciation 3.2 3 4.0 5.0 5.1

    5.5 5.6 5.7 8.0 2000 2005 2010 2015 Fulltext index (MyISAM) View Information_SCHEMA InnoDB Replication PERFORMANCE_SCHEMA memcached API GTID InnoDB++, GIS Support, QRP, Instrinc Tables MultiThreaded Sls, MultiSourceRpl, Group Rpl Document Store, New Data Dictory, Enterprise DataMasking MySQL SUN Oracle
  7. 7 勢いを増すMySQL Global Business Unit MySQL GBU Development Sales Enterprise

    Renewal ISV Enablement Pre-Sales Engineering Support Marketing  Oracle MySQL  X2, X3, X2
  8. 8 Oracle Lab とのコラボレーションも進行中

  9. 9 MySQL 8.0の主要な強化点

  10. 10 MySQL 8.0:Webアプリケーション開発効率向上を実現 24x 7 at Scale Scalable & Stable

    InnoDB Clusterによる高可 用性構成、スケールアウト 構成による拡張性も提供 Developer First ハイブリッド型のデータ モデルとNoSQL APIによる 開発柔軟性 Data Analyze データ分析に役立つSQL 構文を追加 オプティマイザの改良、 強化による高速化 Mobile Friendly 位置情報ベースのサービス 向けの機能強化と絵文字を 含めたユニコード対応
  11. 11 NoSQL + SQL = MySQL 開発者向けの柔軟なAPI ハイブリッドデータモデル データ管理の信頼性・一貫性 運用の効率化

  12. 12 アプリケーション開発者に柔軟性を ハイブリッドAPI SQL 関数 データ型 MySQL X DevAPI JSON

    JSON SQL CRUD NoSQL API JSON SQL MySQL 8.0 JSON SQL MySQL 8.0 { } ();
  13. 13 MySQL Connectors include X Dev API • SQLだけでなくCRUD APIも使用可能

    • JSONドキュメントにもリレーショナルテーブルにも対応 Operation Document Relational Create Collection.add() Table.insert() Read Collection.find() Table.select() Update Collection.modify() Table.update() Delete Collection.remove() Table.delete() 参考) http://dev.mysql.com/doc/x-devapi-userguide/en/crud-operations-overview.html
  14. 14 例)ドキュメントの検索 products.find("color = 'yellow'").sort(["name"]).execute();

  15. 15 MySQL1台だけでドキュメントデータベースとしても使用可能 リレーショナル データベース ハイブリッド データベース ドキュメント データベース SQL リレーショナルテーブル

    外部キー NoSQL JSONドキュメント スキーマレスJSONコレクション
  16. 16 JSON_TABLE()関数 SELECT * FROM seats, JSON_TABLE(doc, "$.properties.amenities[*]" COLUMNS (

    id for ordinality, amenity_type VARCHAR(100) PATH "$.type", distance float PATH '$.distance_in_meters') ) AS amenities WHERE seats.id = 28100 AND amenities.amenity_type IN ('snacks', 'bar') ORDER BY amenities.distance; +-----+---------------+-----------+ | id | amenity_type | distance | +-----+---------------+-----------+ | 2 | bar | 100.538 | | 3 | snacks | 136.647 | +-----+---------------+-----------+ 2 rows in set (0.00 sec) JSONドキュメントを リレーショナルテー ブル形式に変換可能
  17. 17 Generated Columns(生成列) JSONドキュメントを インデックス検索可能 • 実データを格納する列以外に、任意で列を追加可能 • この機能を活用すれば、JSONドキュメントに対する インデックス検索も可能に!!

    • JSONドキュメントの特定の要素を取り出した列を作成 ⇒この列に対してインデックスを作成する 例) ALTER TABLE features ADD feature_type VARCHAR(30) AS (JSON_UNQUOTE(feature->'$.type')); ALTER TABLE features ADD INDEX (feature_type);
  18. 18 MySQL 8.0による新しい適用領域の例 GIS機能を使った アプリケーション データ分析 ドキュメントデータ ベース { }

  19. 19 MySQLを使う時に 知っておきたいポイント

  20. 20 • 公式バイナリ/公式リポジトリを使おう • MySQL Workbench、MySQL Shellを使おう • 困った時はサポートを利用しよう MySQLを使う時に知っておきたいポイント

  21. 21 • 公式バイナリ/公式リポジトリを使おう • MySQL Workbench、MySQL Shellを使おう • 困った時はサポートを利用しよう MySQLを使う時に知っておきたいポイント

  22. 22 • MySQLの公式バイナリ/公式リポジトリはオラクル社から 配布されている • 公式Dockerイメージもある https://github.com/mysql/mysql-docker • Linuxディストリビューションに同梱されているMySQLなど オラクル社から直接配布されていないMySQLバイナリは、

    デバッグモジュールが削除されているなど公式バイナリと 異なる場合がある 公式バイナリ/公式リポジトリを使おう
  23. 23 • MySQL Community Downloads https://dev.mysql.com/downloads/ 公式バイナリ/公式リポジトリの配布先

  24. 24 • マニュアル • MySQL 8.0 Reference Manual / Chapter

    2 Installing and Upgrading MySQL https://dev.mysql.com/doc/refman/8.0/en/installing.html • 参考資料 • MySQL 8.0入門セミナー講演資料 (インストール&アーキテクチャ基礎編) https://www.mysql.com/jp/why-mysql/presentations/mysql-80-for- beginners-install-architecture-doc-jp/ 公式バイナリ/リポジトリのインストール方法
  25. 25 • 公式リポジトリをインストールし、yumコマンドで自動的に最新のGAバージョンを インストール(ネットワークアクセス必須) • 手順 1. 各ディストリビューションに対応したyumリポジトリをダウンロード https://dev.mysql.com/downloads/repo/yum/ 2.

    リポジトリのインストール 3. MySQLインストール 4. MySQL起動/停止(初回起動時にDBも作成される) 公式yumリポジトリを使用したMySQLインストール例 shell> sudo rpm -Uvh mysql80-community-release-xxx.noarch.rpm shell> yum repolist enabled | grep "mysql.*-community.*" shell> yum install mysql-community-server shell> sudo service mysqld start shell> sudo service mysqld stop ※注意事項 ・MySQL Serverのrootユーザーのパスワードを変更する必要がある ・パスワード検証コンポーネントが有効になっている shell> sudo systemctl start mysqld shell> sudo systemctl stop mysqld ※EL7系の場合
  26. 26 • 公式バイナリ/公式リポジトリを使おう • MySQL Workbench、MySQL Shellを使おう • 困った時はサポートを利用しよう MySQLを使う時に知っておきたいポイント

  27. 27 便利なGUIツール MySQL Workbench

  28. 28 • MySQLの公式GUIツール • SQL開発、Server管理、データ モデリングなどの機能が1つに まとめられたツール • チューニングに役立つ機能も有り •

    ビジュアルEXPLAIN • オブジェクト定義の確認 • 実行中のSQLをキャプチャ など MySQL Workbench
  29. 29 • コミュニティ版と商用版があるが、大半の機能は コミュニティ版でも利用可能 http://www-jp.mysql.com/products/workbench/features.html • ダウンロード先 https://dev.mysql.com/downloads/workbench/ • マニュアル

    https://dev.mysql.com/doc/workbench/en/ MySQL Workbench
  30. 30 • MySQL WorkbenchのQuery Statisticsから、SQLチューニング時に 確認すべき基本的な情報をまとめて確認できる MySQL Workbenchのチューニングに役立つ機能

  31. 31 • MySQL WorkbenchのExecution Planから、ビジュアルEXPLAINを 確認可能 MySQL Workbenchのチューニングに役立つ機能

  32. 32 Visual EXPLAIN(typeの値による色の違い) typeの値 色 意味 system 青色 1行しかないテーブル(systemテーブル) ※constの特殊な例

    const 青色 PRIMARY/UNIQUEインデックスによる等価検索(一意検索) eq_ref 緑色 PRIMARY/UNIQUEインデックスによるJOIN ref 緑色 ユニークでないインデクスによる等価検索、JOIN fulltext 黄色 全文検索インデックスを使用した全文検索 ref_or_null 緑色 ユニークでないインデックスによる等価検索とIS NULLのOR index_merge 緑色 複数のインデックスをマージ unique_subquery 橙色 サブクエリ内で、PRIMARY/UNIQUEインデックスで等価検索(一意 検索) index_subquery 橙色 サブクエリ内で、ユニークでないインデクスによる等価検索、 range 橙色 範囲検索 index 赤色 インデックスのフルスキャン ALL 赤色 フルテーブルスキャン 望ましい 望ましくない
  33. 33 データベース・マイグレーション・ウィザード MySQL Workbenchのデータベース移行に役立つ機能 • GUI DB MySQL • MySQL

    MySQL • - Microsoft SQL Server, PostgreSQL, Sybase ASE, Sybase SQL Anywhere, SQLite, Microsoft Access, MySQL, and more
  34. 34 新しい便利なクライアントツール MySQL Shell

  35. 35 • MySQLの新しいコマンドラインクライアント • 従来のmysqlコマンドラインクライアントよりも高機能 • Xプロトコル、X DevAPIのサポート • SQLだけでなく、JavaScriptやPythonも実行可能(MySQL

    Shell 8.0.18からPython 3を使用) • バッチコード実行機能(SQLだけでなく、JavaScriptやPythonもバッチで実行可能) • アプリケーションログ出力機能 • 多用な出力フォーマット(タブ区切り、JSONフォーマット、など) • mysqlコマンドラインクライアントよりも使いやすい補完機能 • AdminAPIのサポート ※MySQL InnoDB Cluster用の機能 • MySQL Shell Utilitiesを使用可能 - Upgrade Checker Utility、JSON Import Utility、parallel table import Utility • レポート機能、プラグイン機能 MySQL Shell
  36. 36 • ダウンロード先 https://dev.mysql.com/downloads/shell/ • マニュアル https://dev.mysql.com/doc/mysql-shell/8.0/en/ MySQL Shell

  37. 37 • 公式バイナリ/公式リポジトリを使おう • MySQL Workbench、MySQL Shellを使おう • 困った時はサポートを利用しよう MySQLを使う時に知っておきたいポイント

  38. 38 • MySQL Enterprise Edition/Standard Editionを契約することで、 MySQL開発ベンダーであるオラクルからのサポートを受けられる • オラクル社以外が提供しているマネージドサービスは対象外 困った時はサポートを利用しよう

  39. 39 MySQLサポート • 24 365 ( 9 17 ) •

    • MySQL GBU • • MySQL • • • • TCO
  40. 40 MySQL Enterprise Edition:サポートに加え追加機能も提供

  41. 41 MySQL EEが提供する セキュリティ強化機能

  42. 42 MySQL Enterprise Security • MySQL Enterprise Authentication • •

    PAM • MySQL Enterprise Audit • • • MySQL Enterprise Firewall • SQL •
  43. 43 MySQL Enterprise Security • MySQL Enterprise Encryption • MySQL

    • / • • MySQL Enterprise TDE • • ( ) • MySQL Enterprise Data Masking • •
  44. 44 MySQL EEが提供する GUIツール

  45. 45 MySQL EEが提供するGUIツール • MySQL Enterprise Monitor • MySQL •

    SQL • MySQL Workbench Enterprise Edition • MySQL GUI • SQL DB DB • Enterprise Edition - - - Enterprise Edition GUI
  46. 46 MySQL EEが提供する その他の機能

  47. 47 MySQL EEが提供するその他の機能 • MySQL Enterprise Backup • • •

    MySQL Enterprise Scalability •
  48. 48 MySQL Subscription MySQL 1-4 MySQL Standard Edition 240,000 MySQL

    Enterprise Edition 600,000 MySQL Cluster Carrier Grade Edition 1,200,000 *5 * MySQL MySQL * CPU 1
  49. 49 Enterprise Edition 10 IT Database DB1 , LINE

  50. 50 RDBMS MySQL Enterprise Edition 2013 4 3,500 1 ,

    SCSK
  51. 51 その他のクラウド環境と 相性のいい機能

  52. 52 • SET PERSISTコマンド • コマンドによるパラメータ変更結果を永続化できる • SET PERSIST_ONLYコマンドにより、設定ファイルのみに 変更を反映することも可能

    • RESTARTコマンド • コマンドだけで再起動可能に その他のクラウド環境と相性のいい機能(MySQL 8.0で追加)
  53. 53 • SET PERSISTコマンド • コマンドによるパラメータ変更結果を永続化できる • SET PERSIST_ONLYコマンドにより、設定ファイルのみに 変更を反映することも可能

    • RESTARTコマンド • コマンドだけで再起動可能に ⇒ OS上の設定ファイルを編集できなくても、パラメータ変更可能 その他のクラウド環境と相性のいい機能(MySQL 8.0で追加)
  54. 54 • SET PERSISTを実行すると、mysqld-auto.cnfファイルに設定が 記録される • 設定を削除する場合は、RESET PERSISTコマンドを使用する • SET

    PERSISTを実行するために必要な権限 - SYSTEM_VARIABLES_ADMIN • SET PERSIST_ONLYを実行するために必要な権限 - SYSTEM_VARIABLES_ADMIN + PERSIST_RO_VARIABLES_ADMIN SET PERSISTに関する補足
  55. 55 • SET PERSIST_ONLY実行時の注意事項 - innodb_ft_aux_tableなど、文字列で値を設定するパラメーターに 不正な値を設定した場合、再起動に失敗する ※以下のようなケースはSET PERSIST_ONLY実行時にエラーになるので 事前に気付けるが、上記のケースは再起動するまで気付けない

    ◦ パラメータ名の間違い ◦ 数値型のパラメータに文字列を設定 ◦ 数値型のパラメータに設定できる範囲を超えた値を設定 SET PERSISTに関する補足 参考情報:MySQL 8.0.15現在、 SET PERSIST_ONLY にはあんまり手を出さない方が良いと思う https://yoku0825.blogspot.com/2019/04/mysql-8015-set-persistonly.html
  56. 56 まとめ

  57. 57 • MySQLを使う時は、公式バイナリ/公式リポジトリを使おう! • JSONドキュメントストア、NoSQL、Generated Columns、 MySQL Workbench、MySQL Shellなど、便利な機能を活用しよう! •

    困った時はサポートサービスも活用しよう! まとめ クラウド環境でもMySQLを是非ご活用下さい!!