[db tech showcase 2015 sapporo hokkaido] mysql 5.7

64
Copyright © 201ș, Oracle and/or its affiliates. All rights reserved. | MySQL 5.7 & ÎÁ¥m Ryusuke Kajiyama / ÝƄŨ / @RKajiyama MySQL Sales ConsulIng Senior Manager, Asia Pacific & Japan The State of the Dolphin

Upload: ryusuke-kajiyama

Post on 14-Apr-2017

814 views

Category:

Technology


0 download

TRANSCRIPT

Copyright*©*201 ,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

MySQL&5.7&&& &

Ryusuke*Kajiyama*/* */*@RKajiyama*MySQL*Sales*ConsulIng*Senior*Manager,*Asia*Pacific*&*Japan*

The&State&of&the&Dolphin

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

JA�8c��g9�6a>�YV�;KI�?�"eH$ZB�"���������QLS]$f6�D>��"����!���"^E��M�P�������%��JA�8c��/,3&4�)�.�FT$S]�"��$)0+-15-�"������`�d[@=$7�O�NW_U��� ���A�����'2(4YV�? �Rb�#��"FT�C:�33�*���<G�������g9�X\��!@=�#����

SAFE*HARBOR*STATEMENT*

2*

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

The*world's*most*popular*open*source*database**

3

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

20 1510 5

*A*Year*of*Anniversaries!

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

20*MySQL 20 *

15*MySQL 15

10*Innobase 10

5*5

*A*Year*of*Anniversaries!

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* 6*

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

The*world's*most*popular*open*source*database**

DB_Engines.com*

h`p://db_engines.com/en/*

SNS

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

•  MySQL& *

•  *–  Oracle,*Red*Hat,*CentOS**–  Fedora*–  Ubuntu,*Debian*

•  *–  SUSE*–  *–  DevOps

*

•  *– MySQL*Database*– MySQL*Workbench*– MySQL*Connector/ODBC*– MySQL*Connector/Python*– MySQL*Connector/NET*– MySQL*UIliIes*

*

*

12*

MySQL :*Yum,*APT,*NuGET*

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

GitHub MySQL &•  MySQL Git*

–  *–  *–  *

•  GitHub*for*MySQL*Community*–  *–  h`ps://github.com/mysql*–  :*h`p://mysqlrelease.com*

13*

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

MySQL*5.6*h7p://dev.mysql.com/doc/refman/5.6/ja/index.html

14

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

MySQL*Enterprise*EdiIon

15

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

1 SCSK

16

1

MySQL

MySQL MySQL Enterprise Monitor

Query Analizer

MySQL

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

IDUIDAI:&Unique&IdenJficaJon&Authority&of&India

17

*(UIDAI:*

Unique*IdenIficaIon*Authority*of*India Aadhaar

ID 2015 89 ID

*

MySQL UID

MySQL

MySQL ACID

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

** *

•  *•  *•  *•  *•  *

•  *•  *•  *• •  *

•  *•  *

•  **

MySQL*Enterprise*EdiIon*

18*

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

“����MySQL DBA”##������#

MySQL*Enterprise*Monitor •  MySQL

*•  MySQL *

**

•  *•  &•  SQL

Query*Analyzer*

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

MySQL&Enterprise&Backup&•  / *• •  *&*

*

MySQL&Enterprise&Security&•  (PAM,*Windows,*LDAP,*etc.)*

• MySQL*Enterprise*Monitor

MySQL&Enterprise&EncrypJon&• AES256 *•  /* *• 

*

MySQL&Enterprise&Audit&•  SQL

*• 

*• 

XML *

MySQL*Enterprise*EdiIon

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

MySQL*Enterprise*Firewall*•  SQL*InjecIon*ProtecIon*with*PosiIve*Security*Model*

• Out*of*policy*database*transacIons*detected*and*blocked*•  Logging*&*Analysis*

21*

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

MySQL*Support *

•  &

SQL &

– &

&

–  &h7p://wwwPjp.mysql.com/support/consultaJve.html&

•  &

–  &

–  &

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

MySQL*Support *

•  &– CPU &

•  &–  &h7p://www.oracle.com/jp/support/lifeJmePsupport/index.html&h7p://wwwPjp.mysql.com/support/&

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

Oracle*Enterprise*Manager*for*MySQL*Web &

•  70% MySQL *– Web *–  ** **

24*

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

MySQL*Enterprise*EdiIon*&*Cluster*CGE *

30 &

• Oracle&SoWware&Delivery&Cloud&h`p://edelivery.oracle.com/**

*•  *“MySQL*Database”*

*•  *h`p://dev.mysql.com/doc/index_enterprise.html*

**

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

MySQL*Cluster*7.4*GA

26

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

1,000 MySQL*Cluster

27

Paypal

1 2020330%

MySQL MySQL Cluster AWS 5

1/3

MySQL “NoSQLSQL

” Daniel Austin, Chief Architect, PayPal

h7p://wwwPjp.mysql.com/customers/view/?id=1223

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

:* *•  *•  *

•  *•  *•  *•  *

•  *•  *•  *•  *&*

*

•  4 MySQL*Cluster *LinuxWindows*

MySQL*User*Conference*Session:*h`p://bit.ly/ogeid3*

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

MySQL*Cluster:*SQL*and*NoSQL*Hybrid*APIsAcJvePAcJve&RDBMS && NoSQL&

29

MySQL*Cluster*Data*Nodes*

Apps Apps Apps Apps Apps Apps Apps Apps Apps Apps Apps

JPA

Cluster*JPA

PHP Perl Python Ruby JDBC Cluster*J JS Memcached

MySQL JNI Node.JS ndb_eng

NDB*API*(C++)

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

MySQL*Cluster*7.4*GA*

•  200*Million*NoSQL*Reads/Sec*

•  2.5M*SQL*Ops/Sec*•  50%*Faster*Reads*•  40%*Faster*Mixed*

Performance*

• AcIve_AcIve*Geographic*Redundancy*

•  Conflict*DetecIon/ResoluIon*

AcIve_AcIve*

•  5X*Faster*Maintenance*Ops*

• Detailed*ReporIng*

Management*

30*

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

MySQL*Cluster*7.4*–*

NoSQL:*20 / & *FlexAsych*(C++*NDB*API)

SQL:*250 / & *DBT2*BM

31

!"!!!!

!50,000,000!!

!100,000,000!!

!150,000,000!!

!200,000,000!!

!250,000,000!!

2! 4! 6! 8! 10! 12! 14! 16! 18! 20! 22! 24! 26! 28! 30! 32!

Read

s&per&se

cond

&

Data&Nodes&

FlexAsync&Reads&

!"!!!!

!500,000!!

!1,000,000!!

!1,500,000!!

!2,000,000!!

!2,500,000!!

!3,000,000!!

2! 4! 6! 8! 10! 12! 14! 16!

SQL$Statem

ents/sec$

Data$Nodes$

DBT2$SQL$Statements$per$Second$

Copyright*©*201 ,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

MySQL& &&*

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* 33

4.0&/GIS*(MyISAM)*

UPDATE/DELETE*

Oracle*MySQL* Sun*

3.23&MyISAM*InnoDB*

*

5.1&*

* **

*

5.6&memcached*API*UNDO *Global*TransacIon*ID*

*ALTER*TABLE*

*

5.5&InnoDB *

*PERFORMANCE_SCHEMA*

1.0P3.22 &*(ISAM,*HEAP)

Windows /64bit **(SJIS/UJIS)

5.0&*

/ / *XAINFORMATION_SCHEMA*

4.1&Unicode *

*CSV,*ARCHIVE*ndbcluster*

1995 2000 2005 2010 2015

5.7+&*

**

*CJK /GIS*(InnoDB)*

**

NoSQL ***

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

• MySQL*5.0*(2005)*–  *–  *–  *–  *–  *– XA *–  INFORMATION_SCHEMA*

• MySQL*5.1*(2008)*–  *

*–  *–  *

*–  *– 

34

• MySQL*5.5*(2010)*– InnoDB *–  *

*–  *

*– PERFORMANCE_SCHEMA

MySQL

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

•  *–  *–  *– SSD *– UNDO *–  *–  JSON*EXPLAIN*– Memcached*API*

• – Global*TransacIon*ID*–  *–  *– Binlog* *– 

*–  *

*– 

35

•  *–  ALTER*TABLE*–  *

*–  *

*–  *

•  *•  SHA256*•  *

MySQL*5.6

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

MySQL*5.6:*InnoDB*–*ALTER&TABLE

• ADD/DROP*INDEX*• ADD/DROP*COLUMN*• ADD/DROP*FOREIGN*KEY*• RENAME*COLUMN,*TABLE*• CREATE*PRIMARY*KEY*• ALTER*ROW_FORMAT,*KEY_BLOCK_SIZE*• ALTER*COLUMN*NULLABLE,*NOT_NULLABLE*• 

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

MySQL*5.6:*InnoDB

•  *•  / *•  ID

&

:*mysql> SET innodb_buffer_pool_dump_at_shutdown=ON;

:*mysql> SET innodb_buffer_pool_load_at_startup=ON;*

! * *! * SaaS *

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

CREATE TABLE t(c1 INT) engine=InnoDB; FLUSH TABLE t FOR EXPORT; -- quiesce the table and create the meta data file $innodb_data_home_dir/test/t.cfg UNLOCK TABLES;

CREATE TABLE t(c1 INT) engine=InnoDB; -- if it doesn't already exist ALTER TABLE t DISCARD TABLESPACE; -- The user must stop all updates on the tables, prior to the IMPORT ALTER TABLE t IMPORT TABLESPACE;

MySQL*5.6:*InnoDB

• MySQL *– Export*

– Import

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

MySQL*5.6:*InnoDBRDBMS NoSQL

• Memcached*API *–  Memcached *– SQL

• NotOnlySQL *–  *–  JOIN FK SQL

•  *– mysqld Memcached

*–  InnoDB*API memcached*

*

InnoDB&Storage&Engine&

MySQL&Server& Memcached&plugin&

ApplicaJon&

SQL&&(MySQL&Client)&

NoSQL&&(Memcached&&&Protocol)&

mysqld&

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

InnoDB*memcached*Plugin•  The*mapping*is*done*through*specifying*corresponding*column*values*in*containers*table:*

mysql> desc containers; +------------------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------------------+--------------+------+-----+---------+-------+ | name | varchar(50) | NO | PRI | NULL | | | db_schema | varchar(250) | NO | | NULL | | | db_table | varchar(250) | NO | | NULL | | | key_columns | varchar(250) | NO | | NULL | | | value_columns | varchar(250) | YES | | NULL | | | flags | varchar(250) | NO | | 0 | | | cas_column | varchar(250) | YES | | NULL | | | expire_time_column | varchar(250) | YES | | NULL | | | unique_idx_name_on_key | varchar(250) | NO | | NULL | | +------------------------+--------------+------+-----+---------+-------+ 9 rows in set (0.02 sec)

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

MySQL*5.7*RC2

41

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

MySQL*5.7*Release*Candidate*2*Available!*

42*

InnoDB :* *Online&Bulk*load* *

**(mulI_source,*mulI_threaded*slaves )*

:*greater*user*control*&*be`er*query*performance*

Performance*Schema *

MySQL*SYS*Schema *

&&& & &

MySQL*5.6 2 *

:**,* & *

NEW!*JSON Support*(now*in*labs)*

RC2*

And*many*more*new*features*and*enhancements...*h`p://mysqlserverteam.com/the_mysql_5_7_7_release_candidate_is_available/*#

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

0&

100,000&

200,000&

300,000&

400,000&

500,000&

600,000&

700,000&

8& 16& 32& 64& 128& 256& 512& 1,024&

Que

ries&per&Secon

d&

ConnecJons&

MySQL&5.7:&Sysbench&Read&Only&(Point&Select)&

MySQL&5.7&

MySQL&5.6&

MySQL&5.5&

MySQL*5.7:*Sysbench*Benchmark**

Intel(R)*Xeon(R)*CPU*E7_4860*x86_64*4*sockets*x*10*cores_HT*(80*CPU*threads)*2.3*GHz,*512*GB*RAM*Oracle*Linux*6.5*

&&&&&&&&&&2x&Faster&than&MySQL&5.6&& & & &3x&Faster&than&MySQL&5.5&

645,000&QPS&

43*

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

InnoDB* *Thank*you,*SanDisk*Fusion_io*

•  *–  *– IO *–  *

OS (NVMFS) *•  IO **

– MySQL *–  *–  SSD *

•  InnoDB UNDO *

44*

RC2*

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

MySQL*5.7:* *–* &SQL

•  *– * *– * *

•  *–  I/O *–  *

•  *•  EXPLAIN JSON **

45*

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

MySQL*5.7:*OpImizer*_*JSON*EXPLAIN *•  JSON*EXPLAIN *

–  *– MySQL*Workbench Visual*Explain *

{ "query_block": { "select_id": 1, "cost_info": { "query_cost": "200.40" }, "table": { "table_name": "nicer_but_slower_film_list", "access_type": "ALL", "rows_examined_per_scan": 992, "rows_produced_per_join": 992, "filtered": 100, "cost_info": { "read_cost": "2.00", "eval_cost": "198.40", "prefix_cost": "200.40", "data_read_per_join": "852K" }, "used_columns": [ "FID", "title", "description", "category", "price", "length", "rating", "actors" ], ...

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

InnoDB&P&General&Tablespace&Support

47

A*general*tablespace*is*a*shared*tablespace,*similar*to*the*system*tablespace.*It*can*hold*mulIple*tables,*and*supports*all*table*row*formats.*General*tablespaces*can*also*be*created*in*a*locaIon*relaIve*to*or*independent*of*the*data*directory.*

[USER01]>*CREATE*TABLESPACE*U_TABLESPACE01*ADD*DATAFILE*'/home/mysql/user_tablespace01.ibd'*Engine=InnoDB;*Query*OK,*0*rows*affected*(0.01*sec)*[USER01]>*CREATE*TABLESPACE*U_TABLESPACE02_8K*ADD*DATAFILE*'/home/mysql/user_tablespace02_8k.ibd'*FILE_BLOCK_SIZE*=**8192*Engine=InnoDB;*Query*OK,*0*rows*affected*(0.01*sec)**[USER01]>*CREATE*TABLE*`T_USER01`*(*>**`id`*int(11)*NOT*NULL*AUTO_INCREMENT,*`text`*varchar(100)*DEFAULT*NULL,*PRIMARY*KEY*(`id`)*>**)*TABLESPACE*=*U_TABLESPACE01*ENGINE=InnoDB*AUTO_INCREMENT=1*DEFAULT*CHARSET=uÄ8mb4;*Query*OK,*0*rows*affected*(0.01*sec)***[USER01]>*CREATE*TABLE*`T_USER02_8K`*(*>*`id`*int(11)*NOT*NULL*AUTO_INCREMENT,*`text`*varchar(100)*DEFAULT*NULL,*PRIMARY*KEY*(`id`)*>)*TABLESPACE*=*U_TABLESPACE02_8K*ENGINE=InnoDB*AUTO_INCREMENT=1*DEFAULT*CHARSET=uÄ8mb4**>*ROW_FORMAT=COMPRESSED*KEY_BLOCK_SIZE*=8;*Query*OK,*0*rows*affected*(0.00*sec)

13.1.15&CREATE&TABLESPACE&Syntax&

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

InnoDB*_**Temporary*Tables*•  *

– CREATE/DROP *– DDL , I/O *

• DML *– No*REDO*logging,*no*change*buffering,*less*locking*

•  *– ACID/MVCC *–  *

48*

14.11&InnoDB&Startup&OpJons&and&System&Variables&

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

InnoDB*_*NaIve*parIIoning*SupportInnoDB *

• 

• 

49

Handler**(ha_innopart)*

Encapsulate*all*parIIoning*in*one*single&handler

InnoDB&NaJve&ParJJoning&–&Early&Access&

main*handler&(ha_parIIon)

ParIIon*1*handler&

ha_innobase

ParIIon*2*handler&

ha_innobase

ParIIon*N*handler&

ha_innobase………

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

&

•  *( )**•  *

–  **

–  *– JOIN *

• OR **

50*

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

InnoDB*_*Full*Text*Search*(FTS)

• N_gram *–  *

• mecab *– 

51

CREATE TABLE `N_DEMO`( `FTS_N_ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(100) DEFAULT NULL, PRIMARY KEY (`FTS_N_ID`), FULLTEXT KEY `ngram_idx` (`title`) /*!50100 WITH PARSER `ngram` */ ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

CREATE TABLE `M_DEMO` ( `FTS_M_ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(100) DEFAULT NULL, PRIMARY KEY (`FTS_M_ID`), FULLTEXT KEY `mecab_idx` (`title`) /*!50100 WITH PARSER `mecab` */ ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

MySQL*5.7*RC *• Performance&Schema:*性能統計情報のさらなる追加*•  *•  SYSLOG Linux/Windows *• GIS InnoDB Boost.Geometry *•  Security , *

52*

•  ReplicaJon*for*be`er*scalability*and*availability*•  Fabric*for*high*availability*and*sharding*

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

MySQL&SYS&Schema&

DB管理者、開発者や運用担当者を支援&•  DB管理者や運用担当者の作業効率を改善&

*_*サーバの稼働状況、ユーザやホストの状況、主要な稼働指標***

*_*性能問題の発見、分析および改善*

*

• 状況をより簡単に把握し理解するための複数のビュー&

*_*IO量の高いファイルや処理、ロック、コストの高いSQL文***

*_*テーブル、インデックス、スキーマの統計***

• 他のデータベースにおけるSYS類似機能:*_  Oracle*V$表*****(動的パフォーマンスビュー)*_  MicrosoÉ*SQL*Server*DMV (Dynamic*Management*Views)* 53*

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

&

54*

• Resize&the&InnoDB&Buffer&Pool&online**– オンラインでのバッファーサイズのチューニング*– データベースの使用パターンの変化にリアルタイムで適応*

• Separate&UNDO&tablespace&– 自動オンラインUNDOログ切り捨て(MySQL*5.7.5~)*–  UNDOログファイルサイズの増加を回避する事が可能*

• Dynamic&configuraJon&– Making*exisIng*seÑngs*dynamically*configurable*–  As*a*design*principle*for*new*features*&*seÑngs*– その他、幾つかのレプリケーションの設定変更等も*  オンラインで変更可能になりました。*

14.4.8*TruncaIng*Undo*Logs*That*Reside*in*Undo*Tablespaces*

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

•  *–  *–  *

• OGC(Open*GeospaIal*ConsorIum) *–  *

• Boost.Geometry *–  *–  *

• Boost.Geometry *

MySQL&5.7:&GIS&P&Boost.Geometry &

55*

ALTER*TABLE* add*SPATIAL*index( );

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

MySQL*5.7.7*

• mysql_install_db *– mysqld __iniIalize __iniIalize_insecure *

• CREATE*USER ALTER*USER *– SSL,*PASSWORD*EXPIRE,*ACCOUNT*[LOCK*|*UNLOCK]*

• mysql.user Password authenIcaIon_string *•  SET*PASSWORD PASSWORD() *

– ALTER*USER *

•  ENCRYPT,*DES_ENCRYPT,*DES_DECRYPT *AES

56

mysqld*__iniIalize*__user=mysql

mysql_install_db*__user=mysql

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

Security&P&EncrypJon,&Passwords,&InstallaJon&

• AES*256*EncrypIon*(Default*in*MySQL*5.7*)*•  *

–  *•  *

–  / *–  ,* (test),* *

57*

[&Global&ConfiguraJon&]&SET*GLOBAL*default_password_lifeIme*=*180;*[&Individual&user&accounts&]&ALTER*USER*joro@sv1*PASSWORD*EXPIRE*INTERVAL*90*DAY;*ALTER*USER*joro@sv1PASSWORD*EXPIRE*DEFAULT;*ALTER*USER*joro@sv1PASSWORD*EXPIRE*NEVER;*

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

•  *1 *–  *–  *–  *

•  & **

•  *

MySQL*5.7:*MulI_Source*ReplicaIon*

Binlog*

Master*1*

Binlog*

Master*2*

…*

…*

Binlog*

Master*N*

IO*1*

Relay*1*

Coordinator*

W1* W2* …* WX*

IO*2*

Relay*2*

Coordinator*

W1* W2* …* WX*

…*

…*

Coordinator*

W1* W2* …* WX*

IO*N*

Relay*N*

Coordinator*

W1* W2* …* WX*

Slave&

58*

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

MySQL*5.7:*スキーマ内マルチスレッドスレーブ*•  *

5 *–  *–  *

*

• GTID*&* **

•  Sysbench*OLTP*test*– 1,000 *– SSD*/*48*core*HT*/*512*GB*RAM*

*59*

0*

500*

1000*

1500*

2000*

2500*

3000*

3500*

4000*

4500*

5000*

0* 4* 16* 25* 50* 100* 200*Worker&Threads&

Slave&TransacJons&per&Second&

Baseline*

50*clients*

100*clients*

150*clients*

200*clients*

PPslavePparallelPtype&&1.&DATABASE**:*(Default)*Use*the*db*parIIoned*MTS*(1*worker*per*database)*2.&LOGICAL_CLOCK:**Use*logical*clock*based*parallelizaIon*mode.&

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*60

GTID (gId_mode)

Enabling&Global&TransacJon&IdenJfiers&Without&DownJme&in&MySQL&5.7.6&

1.*Disable*all*write*operaIons.*2.*Wait*for*all*transacIons*to*propagate******from*the*master(s)*to*all*slaves.*3.*Stop*all*servers.*4.*On*each*server,*set*gId_mode=ON*in*the*configuraIon*file.*5.*Start*all*servers.*6.*Enable*write*operaIons.*

It*is*sIll*possible*to*use*the*old,*offline*procedure.**The*procedure*is*as*follows:

Offline*procedure* Online*procedure*詳細:*17.1.5.2*Enabling*GTID*TransacIons*Online** 17.1.5.4*Verifying*ReplicaIon*of*Anonymous*TransacIons*

1* SET*@@GLOBAL.ENFORCE_GTID_CONSISTENCY*=*WARN;

2 SET*@@GLOBAL.ENFORCE_GTID_CONSISTENCY*=*ON;

3 SET*@@GLOBAL.GTID_MODE*=*OFF_PERMISSIVE;

4 SET*@@GLOBAL.GTID_MODE*=*ON_PERMISSIVE;

5 SHOW*STATUS*LIKE*'ONGOING_ANONYMOUS_TRANSACTION_COUNT';

6 SET*@@GLOBAL.GTID_MODE*=*ON;

7 On*each*server,*add*gId_mode=ON*to*my.cnf.*

8STOP*SLAVE*;*CHANGE*MASTER*TO*MASTER_AUTO_POSITION*=*1;*START*SLAVE;

各サーバーで以下のコマンドを実行

MySQL*ReplicaIonの設定や運用を簡素化する為に、GTIDモードのレプリケーションを利用する方法がありますが、既にGTIDモード以前のレプリケーションで運用されている場合は、稼働中の全てのサーバーを停止してからGTIDモードのレプリケーションへ移行する必要がありました。しかし、稼働中のサービスを停止して切り替える事は難しいのが現実です。*MySQL*5.7.6*以降のMySQLにアップグレードする事で、オンラインのままMySQLのレプリケーションを切り替える事が出来るようになりました。*

5.6.x*Standard*ReplicaIon

5.7.6 *Standard*ReplicaIon

5.7.6 *GTID*Mode*ReplicaIon

① ②

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

MySQL*Fabric*1.5:* *&* *•  OpenStack* *•  *

–  ;**

•  *–  *

•  *

–  *–  *

•  Fabric :*Python,*Java,*PHP,*.NET,*C*(labs)*–  *

*61*

MySQL&Fabric&

Connector*

ApplicaIon*

ReadPslaves&

mappings&

SQL&

HA&group&

ReadPslaves&

HA&group&

Connector*

ApplicaIon*

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* 62

MySQL*Slave*ReplicaIon*Filters*Dynamic*

REPLICATE_DO_DB**REPLICATE_IGNORE_DB**REPLICATE_DO_TABLE**REPLICATE_IGNORE_TABLE*REPLICATE_WILD_DO_TABLE*REPLICATE_WILD_IGNORE_TABLE*REPLICATE_REWRITE_DB*

MySQL_5.7.3 “CHANGE'REPLICATION'FILTER”& **slave**

MySQL_5.7.3 OpIon (my.cnf)MySQL

The*following*slave*replicaIon*filters*can*be*changed*dynamically*using*this*command.

mysql>*STOP*SLAVE*SQL_THREAD;*Query*OK,*0*rows*affected*(0.05*sec)*mysql>*CHANGE*REPLICATION*FILTER*REPLICATE_DO_DB=(db1);*Query*OK,*0*rows*affected*(0.00*sec)

)*

MySQLP5.7.3P&Making&MySQL&Slave&ReplicaJon&Filters&Dynamic&

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

MySQL*Labs

63

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

MySQL*Labs•  *

–  *

•  MySQL MySQL*Cluster *– MySQL*5.6*memcached*API*– MySQL*Cluster*7.2*memcached*API*– MySQL*5.6*Performance*Schema*– MySQL*5.6*Intra_schema*MulI*Thread*Slave*– MySQL*5.6*Online*Alter*Table*– MySQL*5.7*MulI*Source*ReplicaIon*– MySQL*5.7*New*OpImizer*Cost*Model

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

•  ” ” *

•  *–  ( *

–  “OpImisIc*State*Machine”* *

•  *–  *

–  / *–  *–  *

•  *–  InnoDB*–  GTID *

–  PERFORMANCE_SCHEMA*

MySQL*5.7:* *

ApplicaIon*

MySQL*Masters* ReplicaIon**Plugin*

API*

MySQL*Server*

Group*Comms*(Corosync)*

65*

labs.mysql.com*

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

MySQL*5.7:*JSON*•  *•  JSON *

–  *

•  JSON *–  *– SQL *

• Generated*Columns( ) **–  *

• h`p://mysqlserverteam.com/json_labs_release_overview/*

RC2*

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

5.6& MySQL&Server&P&GA&InnoDB & &

&&&NoSQL &

MySQL&Cluster&P&GA&2 NoSQL 200 SQL &

&7.4&

5.7&MySQL&Server&P&RC2&

&&& &JSON Group&ReplicaJon &

67

Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|*

The*world's*most*popular*open*source*database**

68