Slide 1

Slide 1 text

MySQL Principal Solution Engineer, Asia Pacific and Japan Yoshiaki Yamasaki / 山﨑 由章 2019/12/18 クラウド時代のMySQL入門

Slide 2

Slide 2 text

2 Safe harbor statement

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

7 勢いを増すMySQL Global Business Unit MySQL GBU Development Sales Enterprise Renewal ISV Enablement Pre-Sales Engineering Support Marketing  Oracle MySQL  X2, X3, X2

Slide 8

Slide 8 text

8 Oracle Lab とのコラボレーションも進行中

Slide 9

Slide 9 text

9 MySQL 8.0の主要な強化点

Slide 10

Slide 10 text

10 MySQL 8.0:Webアプリケーション開発効率向上を実現 24x 7 at Scale Scalable & Stable InnoDB Clusterによる高可 用性構成、スケールアウト 構成による拡張性も提供 Developer First ハイブリッド型のデータ モデルとNoSQL APIによる 開発柔軟性 Data Analyze データ分析に役立つSQL 構文を追加 オプティマイザの改良、 強化による高速化 Mobile Friendly 位置情報ベースのサービス 向けの機能強化と絵文字を 含めたユニコード対応

Slide 11

Slide 11 text

11 NoSQL + SQL = MySQL 開発者向けの柔軟なAPI ハイブリッドデータモデル データ管理の信頼性・一貫性 運用の効率化

Slide 12

Slide 12 text

12 アプリケーション開発者に柔軟性を ハイブリッドAPI SQL 関数 データ型 MySQL X DevAPI JSON JSON SQL CRUD NoSQL API JSON SQL MySQL 8.0 JSON SQL MySQL 8.0 { } ();

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

14 例)ドキュメントの検索 products.find("color = 'yellow'").sort(["name"]).execute();

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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ドキュメントを リレーショナルテー ブル形式に変換可能

Slide 17

Slide 17 text

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);

Slide 18

Slide 18 text

18 MySQL 8.0による新しい適用領域の例 GIS機能を使った アプリケーション データ分析 ドキュメントデータ ベース { }

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

23 • MySQL Community Downloads https://dev.mysql.com/downloads/ 公式バイナリ/公式リポジトリの配布先

Slide 24

Slide 24 text

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/ 公式バイナリ/リポジトリのインストール方法

Slide 25

Slide 25 text

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系の場合

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

27 便利なGUIツール MySQL Workbench

Slide 28

Slide 28 text

28 • MySQLの公式GUIツール • SQL開発、Server管理、データ モデリングなどの機能が1つに まとめられたツール • チューニングに役立つ機能も有り • ビジュアルEXPLAIN • オブジェクト定義の確認 • 実行中のSQLをキャプチャ など MySQL Workbench

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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 赤色 フルテーブルスキャン 望ましい 望ましくない

Slide 33

Slide 33 text

33 データベース・マイグレーション・ウィザード MySQL Workbenchのデータベース移行に役立つ機能 • GUI DB MySQL • MySQL MySQL • - Microsoft SQL Server, PostgreSQL, Sybase ASE, Sybase SQL Anywhere, SQLite, Microsoft Access, MySQL, and more

Slide 34

Slide 34 text

34 新しい便利なクライアントツール MySQL Shell

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

36 • ダウンロード先 https://dev.mysql.com/downloads/shell/ • マニュアル https://dev.mysql.com/doc/mysql-shell/8.0/en/ MySQL Shell

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

42 MySQL Enterprise Security • MySQL Enterprise Authentication • • PAM • MySQL Enterprise Audit • • • MySQL Enterprise Firewall • SQL •

Slide 43

Slide 43 text

43 MySQL Enterprise Security • MySQL Enterprise Encryption • MySQL • / • • MySQL Enterprise TDE • • ( ) • MySQL Enterprise Data Masking • •

Slide 44

Slide 44 text

44 MySQL EEが提供する GUIツール

Slide 45

Slide 45 text

45 MySQL EEが提供するGUIツール • MySQL Enterprise Monitor • MySQL • SQL • MySQL Workbench Enterprise Edition • MySQL GUI • SQL DB DB • Enterprise Edition - - - Enterprise Edition GUI

Slide 46

Slide 46 text

46 MySQL EEが提供する その他の機能

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

49 Enterprise Edition 10 IT Database DB1 , LINE

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

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に関する補足

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

56 まとめ

Slide 57

Slide 57 text

57 • MySQLを使う時は、公式バイナリ/公式リポジトリを使おう! • JSONドキュメントストア、NoSQL、Generated Columns、 MySQL Workbench、MySQL Shellなど、便利な機能を活用しよう! • 困った時はサポートサービスも活用しよう! まとめ クラウド環境でもMySQLを是非ご活用下さい!!