0
1

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
MySQL 5.7&MySQL Labs
	
Sales Consulting Manager, JAPAC
梶山 隆輔 / Ryusuke Kajiyama	

2

Copyright © 2013, Oracle and/or its a...
以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するもの
です。また、情報提供を唯一の目的とするものであり、いかなる契約にも組
み込むことはできません。以下の事項は、マテリアルやコード、機能を提供す
ることをコミットメント(確約)する...
MySQLのイノベーション
MySQL Cluster 7.3
MySQL Migration
Wizard

MySQL Workbench 6.0

MySQL 5.6

MySQL 5.5
MySQL Cluster
Manager

W...
MySQL: Everywhere and Growing
Platform of Choice for Next Generation Web, Cloud & Embedded Applications
World’s Most
Popul...
DMRs – Development Milestone Releases
  リリース候補版の品質になった機能のみを含む
  年に2-4回リリース
  コミュニティでのテストや使用、フィードバックのため
  機能拡張の加速
  品質...
The Open Road to MySQL 5.6

Predictable Releases for the MySQL Community, Allowing Feedback

DMR1*
April 2011

DMR2

DMR3
...
MySQL 5.7 DMR 新機能

8

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
MySQL 5.7.2 DMR
MySQL 5.6をベースに各種機能を改良

New!

  InnoDB より高いトランザクション処理性能と可用性
  レプリケーション より高い拡張性と可用性
  Performance Schema ...
MySQL 5.7.2 Sysbench Benchmarks
Sysbench Point Select

500,000 QPS

600000

Queries per Second

500000
400000
MySQL-5.7

3...
MySQL 5.7.2 Sysbench Benchmarks
OLTP Read Only

Transactions per Second

25000
20000
15000
MySQL-5.7
10000

MySQL-5.6
MySQ...
MySQL 5.7.2: Connections / second
新規接続の処理の高速化

Connections per second

40000
35000

MySQL 5.7.2

30000
25000
20000
15000

...
オプティマイザ

13

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
MySQL 5.7.2: オプティマイザ
稼働中のクエリに対するEXPLAIN
  課題 - あるセッションのクエリの処理に長い時間がかかる
  新しいオプション
–  他のセッションに対して EXPLAIN FOR CONNECTION
...
MySQL 5.7.2: オプティマイザ
JSON EXPLAINの拡張

Total query cost and Per table
Volume (in gb/mb/kb) = (# of rows) * (record width)
1...
Performance Schema

16

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
MySQL 5.7.2 Performance Schema
メモリ利用状況

  メモリに関する利用統計情報
–  200件以上のメモリ関連Instruments(統計項目)

  利用統計情報をグルーピング
–  メモリの利用タイプ (...
MySQL 5.7.2 Performance Schema
ストアドプログラムの稼働統計
  SQL文の稼働統計を拡張
–  5.6を拡張しストアドプログラムをカバー、必要なコマンドとSQLを追加

  新しいInstruments
– ...
InnoDB

21

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
MySQL 5.7.2: InnoDB
Better Performance, Scalability

  Sysbench READ ONLY の性能が 50-100% 向上(8テーブル)
  Sysbench POINT SELECT...
MySQL 5.7.2: InnoDB Temporary Tables
性能の向上

2-4倍 高速化
INSERT/DELETE/ UPDATE
  REDOログの書き込み、ロックおよび
チェンジバッファの利用を削減

MySQL 5.7...
MySQL 5.7.2: InnoDB
オンラインALTER TABLE の拡張
  オンラインでのインデックス名の変更
–  ALTER TABLE t RENAME INDEX i1 TO i2

ALTER TABLE t RENAME...
MySQL 5.7.2: InnoDB
Innochecksum の改良
  5.6の innochecksum
– 

InnoDBの表領域ページのチェックサムを算出、記録し出力

  5.7での改良点:
• 
• 
• 
• 
• 
•...
レプリケーション

27

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
同一スキーマ内でのマルチスレッド スレーブ
スレーブのスループットを向上
  スレーブ内の複数のワーカースレッドがトランザクションを並列で処理
–  並列処理されるトランザクションの対象データが同一で無い場合に限る
–  同一スキーマ内でもマ...
MySQL 5.6の準同期レプリケーション
Master

Slave

App
commits

ストレージエンジンへのコミットを行って
からスレーブにトランザクションを送る
  スレーブからの応答がタイムアウトしても、
トランザクションと...
“Lossless”準同期レプリケーション
Master

Slave

App
commits

ションを受信するまで以下の処理を待つ
–  ストレージエンジンへのコミット

Written to
Binary log

–  他のクライアン...
準同期レプリケーション
    MySQL 5.6
Master

Slave

MySQL 5.7 “Lossless”
Master

App
commits

App
commits

Written to
Binary log

Wri...
マルチソース レプリケーション
Master 1

Master 2

…

Master N

Binlog

Binlog

…

Binlog

labs.mysql.com

  複数のマスターでの変更点を1台

のスレーブに集約
–...
セキュリティ

33

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
MySQL 5.7.2: セキュリティ – 監査ログ
MySQL Enterprise Audit

  MySQL監査プラグインを有効にして監査ログを出力
–  「誰が、いつ、何を、どこで、どのような」
  ユーザ、日時、ホスト、ステータ...
MySQL 5.7.2: セキュリティ – 監査ログ
5.6 と 5.7 の比較
5.6
<AUDIT_RECORD
TIMESTAMP="2013-04-15T15:27:27"
NAME="Query"
CONNECTION_ID="3“
...
その他の改良点

36

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
MySQL 5.7.2: トリガの改良
一つのテーブルに複数のトリガ
  これまで
–  各トリガの組み合わせはテーブル当たり1つずつ
  (INSERT, UPDATE, DELETE) X (BEFORE, AFTER)

  5.7...
MySQL 5.7.2: トリガーの改良
一つのテーブルに複数のトリガー
  テーブル t1 に3個の AFTER INSERT トリガー
–  CREATE TRIGGER TRIG1 AFTER INSERT ON t1 FOR EACH...
MySQL 5.7.2:トリガの改良
SQL文実行の最後で制約のチェック
  テーブル ‘t1’ には
–  ‘c1’ 列がNOT NULL となっている;
–  BEFORE INSERT トリガが SET NEW.c1 = 1; を実行 ...
MySQL 5.7.2: エラーログ
ログレベルの制御
  3つのログレベル:
1.  エラー(ERROR)のみ
2.  エラー(ERROR) + 警告(WARNING)
3.  エラー(ERROR) + 警告(WARNING) + 情報(N...
MySQL 5.7.2: エラーログ
出力形式の改良
•  UTC タイムスタンプ
•  --log_timestamps = = SYSTEM UTC (default)
--log_timestamps SYSTEM | | UTC (de...
MySQL 5.7.2: エラーハンドリング
Stacked Diagnostics
  スタックされた例外情報を取得するコマンドを実装 (SQL標準で定義)

GET
–  . STACKED DIAGNOSTICS
–  スタックされた領...
MySQL 5.7.2: Error Reporting
例: Stacked Diagnostics
CREATE TABLE ids(id INT NOT NULL, UNIQUE(id));
CREATE TABLE errors(id ...
MySQL 5.7.2: Error Reporting
例: Clear Diagnostics Area
mysql> DROP TABLE no_such_table;
ERROR 1051 (42S02): Unknown table ...
MySQL Labs Releases

45

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
MySQL Labs Releases	
新しい機能をいち早く公開する「実験室」	
  最新機能をいち早くお試しいただき、フィードバックをいただくため
  DMRに含めることができる品質にはなっていない
  本番環境での利用はお勧めしない...
labs.mysql.com	

47

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
MySQL Labs Releases	
2013年11月現在のLabs版	

 Hadoop Applier for MySQL
 MySQL JSON UDFs
 MySQL Multi-source Replication
 My...
Hadoop Applier for MySQL

49

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
MySQL in the Big Data Lifecycle
DECIDE

ACQUIRE

BI Solutions

Applier

ANALYZE

50

Copyright © 2013, Oracle and/or its a...
MySQL Applier for Hadoop	
MySQLからHadoopへのリアルタイムストリーミング	
  バイナリログの内容をlibhdfs

ライブラリ経由でHDFSに書
き込み
  リアルタイムでのデータ分析
を実現
  H...
Mapping Between MySQL and HDFS Schema

52

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
MySQL JSON UDFs

53

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
MySQL JSON UDFs	
JSONデータを扱うユーザ定義関数	
  CのプログラムをMySQLの関数として利用するUDFを活用

http://dev.mysql.com/doc/refman/5.6/en/adding-functi...
セットアップ方法(Linux/UNIX環境の場合) ※詳細はREADMEファイル参照	
1. http://labs.mysql.com/ から“MySQL JSON UDFs”を
  ダウンロード
2.ダウンロードしたファイルに含まれている“...
セットアップ方法(Linux/UNIX環境の場合) ※詳細はREADMEファイル参照	
■CREATE FUNCTION	
mysql> create function json_valid returns integer soname 'li...
補足:READMEファイルのバグ	
Linux/UNIX環境に関して、ファンクション作成コマンドが
以下の通り紹介されているが、ライブラリファイルの名前は
‘libmy_json_udf.so’となっている。
 ファンクション作成コマンド
  ...
サンプルテーブル	

mysql>	
 select	
 *	
 from	
 json;	
 
+----+-------------------------------------------------------------------...
json_valid:JSONドキュメントのフォーマットチェック
(フォーマットが正しければ1、正しくなければ0)	
mysql>	
 select	
 id,json_valid(col1)	
 from	
 json;	
 
+----+-...
json_search:値が含まれるキーを検索	
mysql>	
 select	
 id,json_search(col1,'"Farmer	
 grandmas"')	
 from	
 json	
 where	
 id=1;	
 
+--...
json_replace:値を置換	
mysql>	
 select	
 id,json_replace(col1,'Conditions','0','10')	
 from	
 json	
 where	
 id=1;	
 
+----+--...
Multi-source Replication

62

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
マルチソース レプリケーション
Master 1

Master 2

…

Master N

Binlog

Binlog

…

Binlog

labs.mysql.com

  複数のマスターでの変更点を1台

のスレーブに集約
–...
MySQL Utilities - Fabric

64

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
MySQL Utilities
運用管理に関するPythonスクリプト
データベース管理

データベース運用

MySQL Utilities
レプリケーション管理
設定管理

66

Copyright © 2013, Oracle and/...
MySQL Utilities	
データおよびデータベース管理	

mysqldbcompare	
 同一サーバ内または2つのサーバ間のデータや定義の比較	
mysqldbcopy	
mysqldbexport	

データとメタデータをエクスポ...
MySQL Utilities	
サーバ運用各種	

mysqldiskusage	

デーブルおよびデータファイルのサイズを表示	

mysqlindexcheck	
 インデックスの重複をチェック	
mysqlmetagrep	
mysql...
MySQL Utilities	
レプリケーション関連	

mysqlreplicate	
mysqlrplcheck	

レプリケーションが正しく設定されているかの確認	

mysqlrplshow	

レプリケーショントポロジ(親子関係)を...
MySQL Utilities	
設定関連&その他	

mysqlserverclone	
 既存のMySQLサーバのコピーを作成	
mysqlserverinfo	

mysqluc	

70

サーバの稼働状況を表示	

MySQL Uti...
MySQL Utilities - Fabric

labs.mysql.com

  「シャーディング」による拡張性

Application
map

s
ping

  コネクタ

Connector
SQL

MySQL Fabri...
MySQL Utilities - Fabric
+
MySQL Multi-source Replication
+
Multi Thread Slave	
72

Copyright © 2013, Oracle and/or its af...
MySQL開発の優先課題	

73

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
MySQL開発の優先課題
  Web、クラウドインフラ、組み込みへの最適化
  よりシンプルに、プラガブル アーキテクチャ
-  メンテナンス性向上、さらなる拡張性
-  さらなるNoSQLオプション(HTTP, JSON, JavaScr...
The world's most popular open source database

世界で最も普及しているオープンソース データベース

75

Copyright © 2013, Oracle and/or its affiliat...
76

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
77

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Upcoming SlideShare
Loading in...5
×

[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama

1,963

Published on

Published in: Technology, News & Politics
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,963
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
23
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama "

  1. 1. 1 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  2. 2. MySQL 5.7&MySQL Labs Sales Consulting Manager, JAPAC 梶山 隆輔 / Ryusuke Kajiyama 2 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  3. 3. 以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するもの です。また、情報提供を唯一の目的とするものであり、いかなる契約にも組 み込むことはできません。以下の事項は、マテリアルやコード、機能を提供す ることをコミットメント(確約)するものではないため、購買決定を行う際の判断 材料になさらないで下さい。オラクル製品に関して記載されている機能の開 発、リリースおよび時期については、弊社の裁量により決定されます。 Oracleは、米国オラクル・コーポレーション及びその子会社、関連会社の米国及びその他の国における登録商 標または商標です。他社名又は製品名は、それぞれ各社の商標である場合があります。 3 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  4. 4. MySQLのイノベーション MySQL Cluster 7.3 MySQL Migration Wizard MySQL Workbench 6.0 MySQL 5.6 MySQL 5.5 MySQL Cluster Manager Windows installer & Tools MySQL MySQL Enterprise Monitor 2.3 Applier for Hadoop MySQL Enterprise Backup Security MySQL Utilities MySQL Workbench 5.2 Scalability MySQL Cluster 7.2 MySQL Enterprise HA MySQL Cluster 7.1 O r a c l e C e r t i f i c a t i o n s Audit 4 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  5. 5. MySQL: Everywhere and Growing Platform of Choice for Next Generation Web, Cloud & Embedded Applications World’s Most Popular Open Source Database Database Platform for Next Gen Web Apps Leading Database in the Cloud * Source: Linux Career IT Skills Watch update July 2013 5 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Leading Database for Web Applications Integrated with Hadoop in majority of Big Data platforms #1 Linux Career IT skill: MySQL * Downloads & Sales Growth Awards & Social Media Momentum Best of both Worlds SQL+NoSQL LAMP + Python +Node.js + Go +...
  6. 6. DMRs – Development Milestone Releases   リリース候補版の品質になった機能のみを含む   年に2-4回リリース   コミュニティでのテストや使用、フィードバックのため   機能拡張の加速   品質の改善 6 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  7. 7. The Open Road to MySQL 5.6 Predictable Releases for the MySQL Community, Allowing Feedback DMR1* April 2011 DMR2 DMR3 Oct 2011 Dec 2011 DMR4 April 2012 DMR5 RC Aug 2012 Nov 2012 Optimizer: Optimizer: Optimizer: Optimizer: InnoDB: MRR, ICP, File Sort BKA, New EXPLAIN, Traces Sub-Queries JSON EXPLAIN, Sub-Queries TT, Online DDL, Memcached API Replication: Replication: GTIDs Binary Log Group Commit InnoDB: Split Kernel Mutex, MT Purge Replication: Crash-Safe, Multi-Thread Slave, Checksums InnoDB: Dump/Restore Buffer Pool More P_S Memcached API New P_S Partitioning Improvements 7 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. InnoDB: Full Text Index, Read-Only Optimizations Condition Handling Fractional Seconds TIMESTAMP & DATESTAMP Password Mgmt More P_S *Development Milestone Release More Partitioning New Server Defaults More Partitioning More GTID, TT
  8. 8. MySQL 5.7 DMR 新機能 8 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  9. 9. MySQL 5.7.2 DMR MySQL 5.6をベースに各種機能を改良 New!   InnoDB より高いトランザクション処理性能と可用性   レプリケーション より高い拡張性と可用性   Performance Schema より詳細な性能統計情報   オプティマイザ クエリパフォーマンスのEXPLAIN可視化の改良 Available Now! Get it here: dev.mysql.com/downloads/mysql/ 9 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  10. 10. MySQL 5.7.2 Sysbench Benchmarks Sysbench Point Select 500,000 QPS 600000 Queries per Second 500000 400000 MySQL-5.7 300000 MySQL-5.6 200000 MySQL-5.5 100000 0 8 16 32 64 128 256 512 1024 Concurrent User Sessions 95% Faster than MySQL 5.6 172% Faster than MySQL 5.5 10 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Intel(R) Xeon(R) CPU X7560 x86_64 4 sockets x 8 cores-HT (64 CPU threads) 2.27GHz, 256G RAM Oracle Linux 6.2
  11. 11. MySQL 5.7.2 Sysbench Benchmarks OLTP Read Only Transactions per Second 25000 20000 15000 MySQL-5.7 10000 MySQL-5.6 MySQL-5.5 5000 0 8 16 32 64 128 256 512 1024 Concurrent User Sessions 17% Faster than MySQL 5.6 134% Faster than MySQL 5.5 11 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Intel(R) Xeon(R) CPU X7560 x86_64 4 sockets x 8 cores-HT (64 CPU threads) 2.27GHz, 256G RAM Oracle Linux 6.2 sb_OLTP_RO_1M_8tab-ps Max-TPS
  12. 12. MySQL 5.7.2: Connections / second 新規接続の処理の高速化 Connections per second 40000 35000 MySQL 5.7.2 30000 25000 20000 15000 MySQL 5.6.9 +32% +64% 10000 5000 0 With Selects Without Select •  mysql-bench •  25 concurrent client threads •  Executing connect/select/disconnect •  100000 iterations each Facebookからの要望をベースに開発 THDの初期化処理とネットワークの初期化処理をワーカースレッドに分離 12 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  13. 13. オプティマイザ 13 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  14. 14. MySQL 5.7.2: オプティマイザ 稼働中のクエリに対するEXPLAIN   課題 - あるセッションのクエリの処理に長い時間がかかる   新しいオプション –  他のセッションに対して EXPLAIN FOR CONNECTION EXPLAIN [FORMAT=(JSON|TRADITIONAL)] [EXTENDED] FOR CONNECTION <id>; –  遅延の根本原因を発見できる –  クエリの最適化につなげられる   コネクションの<id>は SHOW PROCESSLIST で確認 14 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  15. 15. MySQL 5.7.2: オプティマイザ JSON EXPLAINの拡張 Total query cost and Per table Volume (in gb/mb/kb) = (# of rows) * (record width) 15 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  16. 16. Performance Schema 16 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  17. 17. MySQL 5.7.2 Performance Schema メモリ利用状況   メモリに関する利用統計情報 –  200件以上のメモリ関連Instruments(統計項目)   利用統計情報をグルーピング –  メモリの利用タイプ (キャッシュ、内部バッファなど) –  スレッド/アカウント/ユーザ/ホストの間接的なメモリ利用   Attributes(属性情報)の種類 –  利用量 (バイト単位)、処理回数、最大値/最小値 17 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  18. 18. MySQL 5.7.2 Performance Schema ストアドプログラムの稼働統計   SQL文の稼働統計を拡張 –  5.6を拡張しストアドプログラムをカバー、必要なコマンドとSQLを追加   新しいInstruments –  statement/sp/cclose, cfetch, copen –  statement/scheduler/event   新しいオブジェクトタイプ –  EVENT, FUNCTION, PROCEDURE, TRIGGER 19 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  19. 19. InnoDB 21 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  20. 20. MySQL 5.7.2: InnoDB Better Performance, Scalability   Sysbench READ ONLY の性能が 50-100% 向上(8テーブル)   Sysbench POINT SELECTにて秒間 約500,000トランザクション   Sysbench OLTP_ROにて秒間 20,000トランザクション超   5.7では明示的に START TRANSACTION READ ONLY を 実行する必要無し 22 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  21. 21. MySQL 5.7.2: InnoDB Temporary Tables 性能の向上 2-4倍 高速化 INSERT/DELETE/ UPDATE   REDOログの書き込み、ロックおよび チェンジバッファの利用を削減 MySQL 5.7 versus 5.6 2 - 11 X Improvement Total Time in Seconds 11倍 高速化 CREATE/DROP   テーブルの作成や削除処理中のIOを 削減 4X 2X 2500 2000 1500 1000 11X 2X 5.7.2 500 0 Total time to complete in seconds * sql-bench, modified to use temp-tables * Seed size of 10K for Create/Drop * Seed size of 5M for Insert/Delete/Update 24 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 5.6.13
  22. 22. MySQL 5.7.2: InnoDB オンラインALTER TABLE の拡張   オンラインでのインデックス名の変更 –  ALTER TABLE t RENAME INDEX i1 TO i2 ALTER TABLE t RENAME INDEX i1 to i2;   オンラインでのVARCHAR列の変更 ALTER TABLE t1 ALGORITHM=INPLACE, CHANGE COLUMN c1 c1 VARCHAR(255); 25 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  23. 23. MySQL 5.7.2: InnoDB Innochecksum の改良   5.6の innochecksum –  InnoDBの表領域ページのチェックサムを算出、記録し出力   5.7での改良点: •  •  •  •  •  •  •  26 アルゴリズムを選択可能に (innodb/crc32/none) 現在のチェックサムを新しいアルゴリズムで上書き可能 新しいチェックサムで強制的に上書き可能 (無効の場合) 処理中止前に、何件の不一致まで処理するか指定可能 複数の表領域、および複数の表領域ファイルに対して実行可能 2GB 以上の表領域ファイルに対して実行可能 ページタイプごとのサマリ表を出力可能 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  24. 24. レプリケーション 27 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  25. 25. 同一スキーマ内でのマルチスレッド スレーブ スレーブのスループットを向上   スレーブ内の複数のワーカースレッドがトランザクションを並列で処理 –  並列処理されるトランザクションの対象データが同一で無い場合に限る –  同一スキーマ内でもマルチスレッドで処理可能   トランザクションの一貫性を保って処理   スレーブのスループットを向上   現在開発中 –  リファクタリング完了 –  チューニングや最適化は現在作業中 28 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  26. 26. MySQL 5.6の準同期レプリケーション Master Slave App commits ストレージエンジンへのコミットを行って からスレーブにトランザクションを送る   スレーブからの応答がタイムアウトしても、 トランザクションとしては成功となる Written to Binary log Commit to SE & externalized   スレーブにトランザクションが渡されてい Send to slave(s) Write to relay log Ack Commit Apply txn 29   マスターはバイナリログへの書き込みと Copyright © 2013, Oracle and/or its affiliates. All rights reserved. ない状態で、マスタが落ちると、成功した トランザクションを喪失する
  27. 27. “Lossless”準同期レプリケーション Master Slave App commits ションを受信するまで以下の処理を待つ –  ストレージエンジンへのコミット Written to Binary log –  他のクライアントから変更へのアクセス –  アプリケーションへのコミットの応答 Send to slave(s) Write to relay log Commit to SE & externalized   スレーブが変更点を反映させるまでは待 たない –  遅延を最小化   スレーブに安全にコピーされるまで他の Ack Commit Apply txn 30   マスターは指定のスレーブがトランザク Copyright © 2013, Oracle and/or its affiliates. All rights reserved. トランザクションが新しいデータを変更で きないように
  28. 28. 準同期レプリケーション     MySQL 5.6 Master Slave MySQL 5.7 “Lossless” Master App commits App commits Written to Binary log Written to Binary log Commit to SE & externalized Send to slave(s) Write to relay log Send to slave(s) Write to relay log Ack Commit Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Commit to SE & externalized Ack Commit Apply txn 31 Slave Apply txn
  29. 29. マルチソース レプリケーション Master 1 Master 2 … Master N Binlog Binlog … Binlog labs.mysql.com   複数のマスターでの変更点を1台 のスレーブに集約 –  全ての「シャード」のデータを単一 のビューで分析 IO 1 IO 2 … IO N Relay 1 Relay 2 … Relay N Coordinator Coordinator Coordinator Coordinator W1 W2 … WX W1 W2 … WX W1 W2 Slave 32 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. … WX W1 W2 … –  バックアップ用にデータを集約 WX   準同期レプリケーションおよびマ ルチスレッド スレーブに対応   マスターごとにフィルタと制御可能 となる予定   アプリケーションはマスタごとに個 別にアクセス
  30. 30. セキュリティ 33 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  31. 31. MySQL 5.7.2: セキュリティ – 監査ログ MySQL Enterprise Audit   MySQL監査プラグインを有効にして監査ログを出力 –  「誰が、いつ、何を、どこで、どのような」   ユーザ、日時、ホスト、ステータス …   接続/切断、クエリ、DML、DDL、サーバ&監査の開始/停止…   MySQL 5.7 での改良点 –  Oracle Audit Vault との統合を改良 –  XMLのサブ要素を使用 –  タイムゾーン 34 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  32. 32. MySQL 5.7.2: セキュリティ – 監査ログ 5.6 と 5.7 の比較 5.6 <AUDIT_RECORD TIMESTAMP="2013-04-15T15:27:27" NAME="Query" CONNECTION_ID="3“ STATUS="0" SQLTEXT="SELECT 1“ /> 35 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 5.7
  33. 33. その他の改良点 36 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  34. 34. MySQL 5.7.2: トリガの改良 一つのテーブルに複数のトリガ   これまで –  各トリガの組み合わせはテーブル当たり1つずつ   (INSERT, UPDATE, DELETE) X (BEFORE, AFTER)   5.7 –  複数のトリガを指定可能 –  実行順を指定可能 37 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  35. 35. MySQL 5.7.2: トリガーの改良 一つのテーブルに複数のトリガー   テーブル t1 に3個の AFTER INSERT トリガー –  CREATE TRIGGER TRIG1 AFTER INSERT ON t1 FOR EACH ROW ... ; –  CREATE TRIGGER TRIG2 AFTER INSERT ON t1 FOR EACH ROW ... ; –  CREATE TRIGGER TRIG1A AFTER INSERT ON t1 FOR EACH ROW FOLLOWS TRIG1 ... ;  実行順は: 1) TRIG1 2) TRIG1A 3) TRIG2  関連するInformation_Schema –  SELECT CREATED FROM INFORMATION_SCHEMA.TRIGGERS –  SELECT ACTION_ORDER FROM INFORMATION_SCHEMA.TRIGGERS –  SHOW CREATE TRIGGER 38 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  36. 36. MySQL 5.7.2:トリガの改良 SQL文実行の最後で制約のチェック   テーブル ‘t1’ には –  ‘c1’ 列がNOT NULL となっている; –  BEFORE INSERT トリガが SET NEW.c1 = 1; を実行 (NULLではない)   SQL文 INSERT INTO t1 VALUES(NULL) または UPDATE t1 SET c1 = NULL –  … –  5.6 - 失敗   "ERROR 1048 (23000): Column 'C1' cannot be null" –  5.7 - 成功 39 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  37. 37. MySQL 5.7.2: エラーログ ログレベルの制御   3つのログレベル: 1.  エラー(ERROR)のみ 2.  エラー(ERROR) + 警告(WARNING) 3.  エラー(ERROR) + 警告(WARNING) + 情報(NOTE) ※デフォルト値   設定ファイルまたは起動オプションで指定 --log-error-verbosity=1 –  --log-error-verb   稼働中 SET GLOBAL log_error_verbosity=1; 40 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  38. 38. MySQL 5.7.2: エラーログ 出力形式の改良 •  UTC タイムスタンプ •  --log_timestamps = = SYSTEM UTC (default) --log_timestamps SYSTEM | | UTC (default) •  フォーマットの変更 •  タイムスタンプは ISO 8601 / RFC 3339 形式, マイクロ秒単位 •  ログテーブル, TIMESTAMP(6) •  プロセスIDは起動時のみ出力 •  可能な場合は接続IDを出力、それ以外は “0” 41 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  39. 39. MySQL 5.7.2: エラーハンドリング Stacked Diagnostics   スタックされた例外情報を取得するコマンドを実装 (SQL標準で定義) GET –  . STACKED DIAGNOSTICS –  スタックされた領域から情報を取得 –  GET [CURRENT] DIAGNOSTICS は現在の診断領域から情報を取得   ストアドプログラムの開発者にメリット –  より多くの情報を取得可能 –  エラー情報を調査して修正が可能 42 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  40. 40. MySQL 5.7.2: Error Reporting 例: Stacked Diagnostics CREATE TABLE ids(id INT NOT NULL, UNIQUE(id)); CREATE TABLE errors(id INT NOT NULL, text VARCHAR(2000)); CREATE PROCEDURE insert_id(id INT) BEGIN DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN GET STACKED DIAGNOSTICS CONDITION 1 @msg = MESSAGE_TEXT; INSERT INTO errors VALUES(id, @msg); GET STACKED DIAGNOSTICS CONDITION 1 @errno = MYSQL_ERRNO; IF @errno = 1213 THEN RESIGNAL; Running END IF; > CALL insert_id(0);CALL insert_id(1);CALL insert_id(0); END; > select text from errors; INSERT INTO ids VALUES(id); Duplicate entry '0' for key 'id' END; 43 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  41. 41. MySQL 5.7.2: Error Reporting 例: Clear Diagnostics Area mysql> DROP TABLE no_such_table; ERROR 1051 (42S02): Unknown table 'test.no_such_table' mysql> CREATE EVENT e ON SCHEDULE EVERY 1 SECOND DO DELETE FROM t; Query OK, 0 rows affected (0.35 sec) // 5.6: mysql> SHOW ERRORS; +-------+------+------------------------------------+ | Level | Code | Message | +-------+------+------------------------------------+ | Error | 1051 | Unknown table 'test.no_such_table' | +-------+------+------------------------------------+ 1 row in set (0.00 sec) // 5.7: mysql> SHOW ERRORS; Empty set (0.00 sec) 44 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  42. 42. MySQL Labs Releases 45 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  43. 43. MySQL Labs Releases 新しい機能をいち早く公開する「実験室」   最新機能をいち早くお試しいただき、フィードバックをいただくため   DMRに含めることができる品質にはなっていない   本番環境での利用はお勧めしない   実験的とはいえ、将来的にはメインの開発ツリーに含めることを視野に –  例) MySQL 5.6のInnoDB memcached API http://labs.mysql.com Please, DO NOT USE THESE BINARIES IN PRODUCTION. 46 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  44. 44. labs.mysql.com 47 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  45. 45. MySQL Labs Releases 2013年11月現在のLabs版  Hadoop Applier for MySQL  MySQL JSON UDFs  MySQL Multi-source Replication  MySQL Utilities - Fabric 48 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  46. 46. Hadoop Applier for MySQL 49 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  47. 47. MySQL in the Big Data Lifecycle DECIDE ACQUIRE BI Solutions Applier ANALYZE 50 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. ORGANIZE
  48. 48. MySQL Applier for Hadoop MySQLからHadoopへのリアルタイムストリーミング   バイナリログの内容をlibhdfs ライブラリ経由でHDFSに書 き込み   リアルタイムでのデータ分析 を実現   Hadoop用各種ツールと MySQLデータの統合 http://labs.mysql.com/ 51 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  49. 49. Mapping Between MySQL and HDFS Schema 52 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  50. 50. MySQL JSON UDFs 53 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  51. 51. MySQL JSON UDFs JSONデータを扱うユーザ定義関数   CのプログラムをMySQLの関数として利用するUDFを活用 http://dev.mysql.com/doc/refman/5.6/en/adding-functions.html   JSONデータの検証、検索、更新など行う関数群   CREAET FUNCTION コマンドで追加 http://www.slideshare.net/yoyamasaki/my-sql-jsonudf 54 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  52. 52. セットアップ方法(Linux/UNIX環境の場合) ※詳細はREADMEファイル参照 1. http://labs.mysql.com/ から“MySQL JSON UDFs”を   ダウンロード 2.ダウンロードしたファイルに含まれている“libmy_json_udf.so”を plugin_dir に配置   (plugin_dirの確認方法:mysql> show global variables like 'plugin_dir';) 3.CREATE FUNCTIONコマンドでUDFを作成 ※UDF(User-DefinedFunction:ユーザ定義関数) 55 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  53. 53. セットアップ方法(Linux/UNIX環境の場合) ※詳細はREADMEファイル参照 ■CREATE FUNCTION mysql> create function json_valid returns integer soname 'libmy_json_udf.so'; mysql> create function json_search returns string soname 'libmy_json_udf.so'; mysql> create function json_extract returns string soname 'libmy_json_udf.so'; mysql> create function json_replace returns string soname 'libmy_json_udf.so'; mysql> create function json_append returns string soname 'libmy_json_udf.so'; mysql> create function json_remove returns string soname 'libmy_json_udf.so'; mysql> create function json_set returns string soname 'libmy_json_udf.so'; mysql> create function json_merge returns string soname 'libmy_json_udf.so'; mysql> create function json_contains_key returns integer soname 'libmy_json_udf.so'; 56 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  54. 54. 補足:READMEファイルのバグ Linux/UNIX環境に関して、ファンクション作成コマンドが 以下の通り紹介されているが、ライブラリファイルの名前は ‘libmy_json_udf.so’となっている。  ファンクション作成コマンド   create function json_valid returns integer soname 'libmy_json.so'; ※http://bugs.mysql.com/bug.php?id=70392 57 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  55. 55. サンプルテーブル mysql> select * from json; +----+--------------------------------------------------------------------------------+ | id | col1 | +----+--------------------------------------------------------------------------------+ | 1 | {"id":1,"Name":"Farmer grandmas","price":50000,"Conditions":["farms",15]} | | 2 | {"id":2,"Name":"Worker grandmas","price":300000,"Conditions":["factories",15]} | | 3 | {"id":3,"Name":"Miner grandmas","price":1000000,Conditions:["mines",15]} | | 4 | {"id":4,"Name":"Yoshiaki Yamasaki"} | +----+--------------------------------------------------------------------------------+ 4 rows in set (0.00 sec) ※id=4の列はNameだけ 58 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. ※id=3の列には、フォーマット間違い有り (””が抜けている)
  56. 56. json_valid:JSONドキュメントのフォーマットチェック (フォーマットが正しければ1、正しくなければ0) mysql> select id,json_valid(col1) from json; +----+------------------+ | id | json_valid(col1) | +----+------------------+ | 1 | 1 | | 2 | 1 | | 3 | 0 | | 4 | 1 | +----+------------------+ 4 rows in set (0.00 sec) 59 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  57. 57. json_search:値が含まれるキーを検索 mysql> select id,json_search(col1,'"Farmer grandmas"') from json where id=1; +----+---------------------------------------+ | id | json_search(col1,'"Farmer grandmas"') | +----+---------------------------------------+ | 1 | Name:: | +----+---------------------------------------+ 1 row in set (0.00 sec) mysql> select json_search(col1,'"farms"') from json; +-----------------------------+ | json_search(col1,'"farms"') | +-----------------------------+ | 0:Conditions:: | | NULL | | NULL | | NULL | +-----------------------------+ 4 rows in set (0.00 sec) 60 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  58. 58. json_replace:値を置換 mysql> select id,json_replace(col1,'Conditions','0','10') from json where id=1; +----+----------------------------------------------------------------------+ | id | json_replace(col1,'Conditions','0','10') | +----+----------------------------------------------------------------------+ | 1 | {"id":1,"Name":"Farmer grandmas","price":50000,"Conditions":[10,15]} | +----+----------------------------------------------------------------------+ 1 row in set (0.00 sec) mysql> select id,json_replace(col1,'Conditions','1','10') from json where id=1; +----+---------------------------------------------------------------------------+ | id | json_replace(col1,'Conditions','1','10') | +----+---------------------------------------------------------------------------+ | 1 | {"id":1,"Name":"Farmer grandmas","price":50000,"Conditions":["farms",10]} | +----+---------------------------------------------------------------------------+ 1 row in set (0.00 sec) 61 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  59. 59. Multi-source Replication 62 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  60. 60. マルチソース レプリケーション Master 1 Master 2 … Master N Binlog Binlog … Binlog labs.mysql.com   複数のマスターでの変更点を1台 のスレーブに集約 –  全ての「シャード」のデータを単一 のビューで分析 IO 1 IO 2 … IO N Relay 1 Relay 2 … Relay N Coordinator Coordinator Coordinator Coordinator W1 W2 … WX W1 W2 … WX W1 W2 Slave 63 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. … WX W1 W2 … –  バックアップ用にデータを集約 WX   準同期レプリケーションおよびマ ルチスレッド スレーブに対応   マスターごとにフィルタと制御可能 となる予定   アプリケーションはマスタごとに個 別にアクセス
  61. 61. MySQL Utilities - Fabric 64 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  62. 62. MySQL Utilities 運用管理に関するPythonスクリプト データベース管理 データベース運用 MySQL Utilities レプリケーション管理 設定管理 66 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  63. 63. MySQL Utilities データおよびデータベース管理 mysqldbcompare 同一サーバ内または2つのサーバ間のデータや定義の比較 mysqldbcopy mysqldbexport データとメタデータをエクスポート mysqldbimport データとメタデータをインスポート mysqldiff 67 別のサーバにデータベースをコピー 2つのサーバ間のテーブルなどオブジェクトの定義を比較 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  64. 64. MySQL Utilities サーバ運用各種 mysqldiskusage デーブルおよびデータファイルのサイズを表示 mysqlindexcheck インデックスの重複をチェック mysqlmetagrep mysqlprocgrep INFORMATION_SCHEMA.PROCESSLISTをgrep mysqluserclone 68 テーブル定義などのメタデータをgrep 別のサーバにユーザアカウントををコピー Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  65. 65. MySQL Utilities レプリケーション関連 mysqlreplicate mysqlrplcheck レプリケーションが正しく設定されているかの確認 mysqlrplshow レプリケーショントポロジ(親子関係)を図示 mysqlfailover レプリケーションの自動フェールオーバー switchover 手動でのレプリケーションの切り替え mysqlrpladmin 69 レプリケーションを設定 レプリケーションの各種管理 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  66. 66. MySQL Utilities 設定関連&その他 mysqlserverclone 既存のMySQLサーバのコピーを作成 mysqlserverinfo mysqluc 70 サーバの稼働状況を表示 MySQL Utilitiesコマンド用ユーザコンソール Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  67. 67. MySQL Utilities - Fabric labs.mysql.com   「シャーディング」による拡張性 Application map s ping   コネクタ Connector SQL MySQL Fabric –  Python –  Java –  PHP   アプリケーションでの分割キー –  Range または Hash –  シャード再構成も可能 –  シャード全体の更新も可能 Read-slaves Master group 71 Read-slaves Master group Copyright © 2013, Oracle and/or its affiliates. All rights reserved.   MySQL Utilities 1.4.0として提供
  68. 68. MySQL Utilities - Fabric + MySQL Multi-source Replication + Multi Thread Slave 72 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  69. 69. MySQL開発の優先課題 73 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  70. 70. MySQL開発の優先課題   Web、クラウドインフラ、組み込みへの最適化   よりシンプルに、プラガブル アーキテクチャ -  メンテナンス性向上、さらなる拡張性 -  さらなるNoSQLオプション(HTTP, JSON, JavaScript, etc.)   リファクタリング -  InnoDBのデータディクショナリ -  オプティマイザ/パーサ/プロトコル   InnoDB   性能、オンラインDDL、バッファプール   高可用性構成、レプリケーション、シャーディング 74 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  71. 71. The world's most popular open source database 世界で最も普及しているオープンソース データベース 75 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  72. 72. 76 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  73. 73. 77 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×