Top Banner
MySQL Cluster What's New & Best Prac0ces Copyright 2016, oracle and/or its affiliates. All rights reserved
77

MySQL Cluster Whats New

Jan 21, 2018

Download

Technology

Mark Swarbrick
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: MySQL Cluster Whats New

MySQLClusterWhat'sNew&BestPrac0ces

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved

Page 2: MySQL Cluster Whats New

SafeHarborStatementThefollowingisintendedtooutlineourgeneralproductdirecGon.ItisintendedforinformaGonpurposesonly,andmaynotbeincorporatedintoanycontract.Itisnotacommitmenttodeliveranymaterial,code,orfuncGonality,andshouldnotberelieduponinmakingpurchasingdecisions.Thedevelopment,release,andGmingofanyfeaturesorfuncGonalitydescribedforOracle’sproductsremainsatthesolediscreGonofOracle.

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 2

Page 3: MySQL Cluster Whats New

MySQLClusterOverview• MemoryopGmizedtableswithdurability• PredictableLow-Latency,BoundedAccessTimeREAL-TIME

•  Auto-Sharding,MulG-Master•  ACIDCompliant,OLTP+Real-TimeAnalyGcs

HIGHSCALE,READS+WRITES

•  Sharednothing,noSinglePointofFailure•  SelfHealing+On-LineOperaGons99.999%AVAILABILITY

•  Key/Value+Complex,RelaGonalQueries•  SQL+Memcached+JavaScript+Java+HTTP/REST&C++SQL+NoSQL

•  OpenSource+CommercialEdiGons•  Commodityhardware+Management,MonitoringToolsLOWTCO

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 3

Page 4: MySQL Cluster Whats New

MySQLReplica0on

MySQLFabric

DRBD

SolarisCluster,ClusterwareorOracleVM

MySQLCluster

MySQLHASoluGons

9 9 . 9 9 9 %

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 4

Page 5: MySQL Cluster Whats New

OracleMySQLHA&ScalingSoluGons

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 5

MySQLReplica0on MySQLFabric OracleVM OracleClusterware SolarisCluster MySQLCluster

AppAuto-Failover MySQLRouter ✔ ✔ ✔ ✔ ✔

DataLayerAuto-Failover MySQLRouter ✔ ✔ ✔ ✔ ✔

ZeroDataLoss MySQL5.7 MySQL5.7 ✔ ✔ ✔ ✔

PlaaormSupport All All All All Solaris All

ClusteringMode Master+Slaves Master+Slaves Ac0ve/Passive Ac0ve/Passive Ac0ve/Passive Mul0-Master

FailoverTime Secs Secs Secs+ Secs+ Secs+ <1Sec

Scale-out Reads ✔ ✖ ✖ ✖ ✔

Cross-shardoperaGons N/A ✖ N/A N/A N/A ✔

TransparentrouGng MySQLRouter ForHA ✔ ✔ ✔ ✔

SharedNothing ✔ ✔ ✖ ✖ ✖ ✔

StorageEngine InnoDB InnoDB InnoDB InnoDB InnoDB NDB

SingleVendorSupport ✔ ✔ ✔ ✔ ✔ ✔

Page 6: MySQL Cluster Whats New

Who’sUsingMySQLCluster?

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 6

Page 7: MySQL Cluster Whats New

CompanyOverviewPayPalallowsanybusinessorindividualwithanemailaddresstosecurely,conveniently,andcost-effecGvelysendandreceivepaymentsonline.Applica0on PayPalbuiltacloud-basedglobally-distributeddatabasewith100TBofuser-relateddatabasedonMySQLCluster.A“mustNOTlosedata”system,delivering99,999%availability,transacGonal,withdataavailableWWanywherein<1Sec.DetectsFraudwithin0.3seconds.Deployedover5datacentersworld-wide.WhyMySQLCluster?“Youcanachievehighperformanceandavailabilitywithoutgivinguprela8onalmodelsandreadconsistency.”--DanielAusGn,ChiefArchitect,PayPal

PayPal

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 7

Page 8: MySQL Cluster Whats New

CompanyOverviewWorld'slargestproducerofcasualgames.BigFishhasdistributedmorethan2.5billiongamestocustomersin150countries.Applica0onServereal-GmerecommendaGonstoBigFishcustomers,requiringhighvelocitydataingesGon,lowlatencyaccess,onlinescalability,99.999%availability,andEnterpriseSLAs.WhyMySQLClusterCGE?"TheMMSplaAormisastrategicprojectwithinBigFish.Wecouldn’taffordtotakeanychancesandMySQLClusterprovideduswithaprovenandtrustedsolu8ontomeetthedemandsofbothourbusinessandourusers.“--SeanChighizola,Sr.DirectorofDatabaseAdministraGon,BigFish

BigFish

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 8

Page 9: MySQL Cluster Whats New

CompanyOverviewGlobaltelecommunicaGonsequipmentcompany,focusesonfixed,mobile,andconvergednetworkinghardware,IPtechnologies,sopware,andservices.Applica0onMySQLClusterCGEisattheheartofAlcatel-Lucent’sSubscriberDataManagerusedtodeliverconvergedIMSservicestomobileandfixedlineusers.WhyMySQLClusterCGE?•  Deliverstheperformance,scalability,andavailability

requiredbythismissioncriGcalreal-GmeapplicaGon.•  Real-Gmeread&writeaccessfortensofmillionsof

subscriberswithinasinglesystem.•  Always-onservice:noofflinemaintenancewindowfor

servicesusersdependon(voice,SMS,email,Web,socialmedia,…)

•  Rapiddelivery&lowTCO

Alcatel-Lucent

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 9

Page 10: MySQL Cluster Whats New

SQL•  Industrystandard•  Joins&complexqueries• RelaGonalmodel

Memcached• SimpletouseAPI• Key/valuebased• Driversformanylanguages

Mod-ndb• RESTful•  JSONoverHTTP• PluginforApache

ClusterJ• SimpletouseJavaAPI• Web&Telco• ObjectRelaGonalMapping• NaGve&fastaccesstodata

ClusterJPA• OpenJPAplugin• StandardsdefinedORM• CrosstableJoins

JavaScript/Node.js• NaGveJavaScript:clienttoDB

• Blazingfastasynchronousthroughput

ChoosingtheRightClientAPI

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 10

Page 11: MySQL Cluster Whats New

MySQLClusterAuto-Installer

• FastconfiguraGon• Auto-discovery• WorkloadopGmized• RepeatablebestpracGces

SpecifyWorkload

Auto-Discover

DefineTopologyDeploy

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 11

Page 12: MySQL Cluster Whats New

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 12

Page 13: MySQL Cluster Whats New

NoSQLAccesstoMySQLClusterDataApps Apps Apps Apps Apps Apps Apps Apps Apps Apps Apps Apps

JPA

ClusterJPA

PHP Perl Python Ruby JDBC ClusterJ JS Apache Memcached

MySQL JNI Node.JS mod_ndb ndb_eng

NDBAPI(C++)

MySQLClusterDataNodes

13Copyright2016,oracleand/oritsaffiliates.Allrightsreserved

Page 14: MySQL Cluster Whats New

MySQLCluster7.4GA

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 14

Page 15: MySQL Cluster Whats New

MySQLCluster7.4GA

• 200MillionNoSQLReads/Sec

• 2.5MSQLOps/Sec• 50%FasterReads• 40%FasterMixedR/W

Performance

• AcGve-AcGveGeographicRedundancy

• MulG-DCClusters• ConflictDetecGon/ResoluGon

AcGve-AcGve

• 5xFasterMaintenanceOps

• DetailedReporGng

Management

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 15

Page 16: MySQL Cluster Whats New

• MemoryopGmizedtables– Durable– Mixwithdisk-basedtables

• MassivelyconcurrentOLTP• DistributedjoinsforanalyGcs• Parallelindexscans• Paralleltablescans(fornon-indexedsearches)

16

MySQLCluster7.4NoSQLPerformance200MillionNoSQLReads/Second

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved

!"!!!!

!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&

Page 17: MySQL Cluster Whats New

• MemoryopGmizedtables– Durable– Mixwithdisk-basedtables

• MassivelyconcurrentOLTP• DistributedjoinsforanalyGcs• Parallelindexscans• Paralleltablescans(fornon-indexedsearches)

17

MySQLCluster7.4SQLPerformance2.5MSQLStatements/Second

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved

!"!!!!

!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$

Page 18: MySQL Cluster Whats New

Performance Enhancements MySQL Cluster 7.4

50%Read-OnlyIncrease

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 18

0"

1000"

2000"

3000"

4000"

5000"

6000"

7000"

8000"

9000"

64" 128" 192" 256" 320" 384" 448" 512"

Tran

sac'on

s)per)se

cond

)

Threads)

Sysbench)R/W)

7.4"

7.3"

7.2"

0"

1000"

2000"

3000"

4000"

5000"

6000"

7000"

8000"

9000"

10000"

64" 128" 192" 256" 320" 384" 448" 512"

Tran

sac'on

)per)se

cond

)

Threads)

Sysbench)RO)

7.4"

7.3"

7.2"

40%Read/WriteIncrease

Page 19: MySQL Cluster Whats New

• AsynchronousreplicaGonbetweenMySQLClusters

• AcGve-AcGveMulG-Homed– Updateanywhere– ConflictdetecGon

•  ApplicaGonnoGfiedthroughexcepGontables•  CanopttohaveconflictsresolvedautomaGcally

– AutomaGcconflictresoluGon•  ConflicGngtransacGonanddependentonesarerolled-back

• NochangestoapplicaGon/schema

AcGve-AcGveGeo-ReplicaGon

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 19

Page 20: MySQL Cluster Whats New

WhatIsaConflict?

John.balance==$100

John.balance-=$40John.balance==$60

John.balance==$200

John.balance==$100

John.balance+=$100John.balance==$200

John.balance==$60

Spend$40 Add$100

$60$200

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 20

Page 21: MySQL Cluster Whats New

• NDB$EPOCH2andNDB$EPOCH2_TRANSintroduced

• DetectsconflicGnginserts/updates/deletes/reads

•  EnGretransacGons(anddependentones)rolledback

• RollingbackoftransacGonsthatreadconflicteddata

•  ImprovedNDBExcepGonstableformat– Non-PKcolumns,operaGontype,transacGonid,beforeandapervalues

• Onlineconflictrolechange

21

HandlingofConflicts–ExtensionsinMySQLCluster7.4

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved

Page 22: MySQL Cluster Whats New

•  PrimarystoreslogicalGmestamp(GCI)againstupdatedrow(s)– Windowforconflictopens

•  GCIisreplicatedwithupdatedrow(s)toSecondary

•  ThesameGCIisreplicatedback(reflected)fromSecondarytoPrimaryaperithasbeenapplied–  Closingwindowforconflict

•  PrimarycheckseveryeventoriginaGngfromtheSecondarytocheckforconflicts

DetecGngConflicts-ReflectedGCI

John.balance==$100

John.balance-=$40John.balance==$60

John.balance==$200

John.balance==$100

John.balance+=$100John.balance==$200

John.balance==$60

Spend$40 Add$100

$60$200

Primary Secondary

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 22

Page 23: MySQL Cluster Whats New

HowtoUseConflictDetecGonandResoluGon

DecidewhichtablesneedprotecGng

Foreachtable,specifywhattodoonconflicts

RecordeventinexcepGontable

ApplicaGonorDBAcanacton

content

RollbacktheconflicGngrow

RollbacktheconflicGngtransacGon

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 23

Page 24: MySQL Cluster Whats New

MySQLCluster7.4RestartImprovements

• DuraGonoflong-runningmaintenanceacGviGesdominatedbyDataNoderestartGmes

• MySQLCluster7.4=5.5xfasterrestarts!• Benefitsanykindofnoderestart

– Upgrades,add-node,…• Benefitsboth”manual”andMySQLClusterManageroperaGons• Accomplish5xasmuchworkduringasinglemaintenancewindow

MakeDataNodeRestartsFast!

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 24

Page 25: MySQL Cluster Whats New

MySQLCluster7.4RestartImprovements

• Verboselogging– TaskstartandcompleGon– Datavolumeinfo– Parallelism&waitGmeinfo

• NDBINFOforrecentnoderestarts• MoredocumentaGonofconcretestages• Goal:makeproperanalysisofaslowrestarteasy

– Determinecause;Detectpa}erns;Understandtheimpactofindexes,localcheckpoints,etc.

ObservabilityImprovements

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 25

Page 26: MySQL Cluster Whats New

MySQLCluster7.4–EnhancedMemoryReporGng• ndbinfo.memory_per_fragmentmemoryusageinformaGonforeachfragmentreplica,foreachtable,andeachindex

• Allocatedmemory,andhowmuchofthatisactuallyinuse•  Exposes

– FragmentaGonoffixedandvariablesizedfragmentpages– AccurateDataandIndexMemoryuse– ComparisonofPrimaryandBackupfragmentusage– ParGGon/SharddistribuGonandeffecGveness

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 26

Page 27: MySQL Cluster Whats New

EnhancedMemoryReporGng

mysql>CREATETABLEsimples(idINTNOTNULLAUTO_INCREMENTPRIMARYKEY)ENGINE=NDB;mysql>SELECTnode_idASnode,fragment_numASfrag,fixed_elem_alloc_bytesASalloc_bytes,fixed_elem_free_bytesASfree_bytes,fixed_elem_free_rowsASspare_rowsFROMmemory_per_fragmentWHEREfq_nameLIKE'%simples%';+------+------+-------------+------------+------------+|node|frag|alloc_bytes|free_bytes|spare_rows|+------+------+-------------+------------+------------+|1|0|131072|5504|172||1|2|131072|1280|40||2|0|131072|5504|172||2|2|131072|1280|40||3|1|131072|3104|97||3|3|131072|4256|133||4|1|131072|3104|97||4|3|131072|4256|133|+------+------+-------------+------------+------------+

SeeHowMuchMemoryaTableisUsing

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 27

Page 28: MySQL Cluster Whats New

EnhancedMemoryReporGng

+------+------+-------------+------------+------------+|node|frag|alloc_bytes|free_bytes|spare_rows|+------+------+-------------+------------+------------+|1|0|131072|5504|172||1|2|131072|1280|40||2|0|131072|5504|172||2|2|131072|1280|40||3|1|131072|3104|97||3|3|131072|4256|133||4|1|131072|3104|97||4|3|131072|4256|133|+------+------+-------------+------------+------------+mysql>DELETEFROMclusterdb.simplesLIMIT1;+------+------+-------------+------------+------------+|node|frag|alloc_bytes|free_bytes|spare_rows|+------+------+-------------+------------+------------+|1|0|131072|5504|172||1|2|131072|1312|41||2|0|131072|5504|172||2|2|131072|1312|41||3|1|131072|3104|97||3|3|131072|4288|134||4|1|131072|3104|97||4|3|131072|4288|134|+------+------+-------------+------------+------------+

SeeHowMemoryisMadeAvailableA_erDele0ngRows

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 28

Page 29: MySQL Cluster Whats New

EnhancedMemoryReporGng

mysql>CREATETABLEsimples(idINTNOTNULLAUTO_INCREMENT,speciesVARCHAR(20)DEFAULT"Human",PRIMARYKEY(id,species))engine=ndbPARTITIONBYKEY(species);//Addsomedatamysql>SELECTnode_idASnode,fragment_numASfrag,fixed_elem_alloc_bytesASalloc_bytes,fixed_elem_free_bytesASfree_bytes,fixed_elem_free_rowsASspare_rowsFROMndbinfo.memory_per_fragmentWHEREfq_nameLIKE'%simples%';+------+------+-------------+------------+------------+|node|frag|alloc_bytes|free_bytes|spare_rows|+------+------+-------------+------------+------------+|1|0|0|0|0||1|2|196608|11732|419||2|0|0|0|0||2|2|196608|11732|419||3|1|0|0|0||3|3|0|0|0||4|1|0|0|0||4|3|0|0|0|+------+------+-------------+------------+------------+

CheckPar00on/ShardDistribu0onandEffec0veness

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 29

Page 30: MySQL Cluster Whats New

MySQLCluster7.4–EnhancedAcGvityReporGng• ndbinfo.operations_per_fragment acGvitycountersforeachfragmentreplica,foreachtable,andeachindex

• PKbasedandscanaccesses–requests,bytes,rows,…•  Exposes

– HowSQLstatementsmaptoindividualtablesandindices– QueryexecuGon,useofindexesetc.– LDMandnodeimbalances– Hotspotsandscanoverloads

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 30

Page 31: MySQL Cluster Whats New

MySQLCluster7.5• BasedonMySQL5.7

– NaGveJSONdatatype– GeneratedColumns

•  FuncGonBasedIndexes– CostBasedOpGmizer– NewSpaGalengine– NewhintsyntaxwithaddiGonalhints– MemoryinstrumentaGon– Securebydefault– Muchmore!

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 31

NEW!

Page 32: MySQL Cluster Whats New

MySQLCluster7.5• ConGnueImprovingSupportability

– OverloadcontrolsviathreadidlewaitGme– ImproveeventbuffermemoryallocaGon– Be}erandmoredescripGveerrormessages– Dumpcommandimprovements– ImprovedLockreporGng

• ConGnueImprovingPerformance– Fasterbackup&restore

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 32

NEW!

Page 33: MySQL Cluster Whats New

MySQLCluster7.5• ConGnueImprovingAvailability

– Convertndb_binlog_indextoACIDstorage– Makeuseofdynamiccolumnseverywhere

•  SupportforonlinedefragmentaGonandspacereclamaGon•  SupportforrowtransformaGons–encrypGonandcompression

• ConGnueImprovingQuality– Refactorbinloginjectorinordertoaddressmanyknownissues– Increasethetestbase– MoresystemcorrectnessandfaultinjecGontests

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 33

NEW!

Page 34: MySQL Cluster Whats New

MySQLCluster7.5• ConGnueImprovingCapacity

– Enableindividualfragmentslargerthan16GB(nowupto128TB)

•  ImprovedReadScale-Out– TheintroducGonof“readfrombackup”fortables

•  Localizedreadsoneverynodeinanodegroup– TheintroducGonof“global”tables(fullyreplicated)

•  LocalizedreadsoneverynodeintheCluster

•  SupportforIncreasedRedundancy– Supportforupto4nodespernodegroup(1-3replicaspershard)

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 34

NEW!

Page 35: MySQL Cluster Whats New

MySQLClusterBestPracGces

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 35

Page 36: MySQL Cluster Whats New

When to Consider MySQL Cluster l  UpGmerequirements

l  CostperminuteofdownGme?l  Failureversusmaintenance?

l  Scalabilitydemandsl  Shardingforwritescaling?

l  Latencydemandsl  Costofeachmillisecond?

l  ApplicaGonagilityl  Developerlanguagesandframeworks?l  SQLandNoSQL?

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 36

Page 37: MySQL Cluster Whats New

General Usage Considerations •  MySQL Cluster is designed for

–  Short transactions –  Single key reads and writes – Many parallel transactions

•  Utilize simple access patterns for high running transactions – Use efficient scans and batching interfaces –  Push down joins yield huge performance improvements for JOIN operations – MySQL Cluster 7.4 speeds up table scans

•  Storage Engine is configurable for each table…InnoDB or NDB

MySQLClusterEvaluaGonGuideh}p://mysql.com/why-mysql/white-papers/mysql_cluster_eval_guide.php

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 37

Page 38: MySQL Cluster Whats New

D1 D2 D3 D4

API ---------- ---------- ----------

TC TC TC TC

1

2

AccessingData:PKLookups

•  SingleTransacGonCoordinator(TC),noaddiGonaldatadistribuGonhandling

•  FirststatementdecidesTC• KeeptransacGonsshort!

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 38

Page 39: MySQL Cluster Whats New

D1 D2 D3 D4

API ---------- ---------- ----------

TC TC TC TC

1

2

3

Accessingdata:UniqueSecondaryKeyLookups

•  Secondarykeysimplementedashidden/systemtables

• HiddentableshavenewsecondarykeyasPKandbasetable’sPKasvalue

• Datamayresideonsamenodeorothernode

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 39

Page 40: MySQL Cluster Whats New

D1 D2 D3 D4

API ---------- ---------- ----------

TC TC TC TC

1 3

2

Accessingdata:RangeScansandJoins

•  TCischosenusinground-robin

• DatanodesreturndatadirectlytoAPI

•  Flow:– Choosedatanode– SendrequesttoallLDM– SenddatatoAPI

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 40

Page 41: MySQL Cluster Whats New

SELECT SUM(population) FROM towns WHERE country=“UK”;

SELECT SUM(population) FROM towns WHERE town=“Boston”;

• ParGGonselectedusinghashonspecifiedParGGonKey– PrimaryKeybydefault– UsercanoverrideintabledefiniGon

• MySQLServer(orNDBAPI)willa}empttosendtransacGontothecorrectdatanode– IfalldataforthetransacGonareinthesameparGGon,lessmessaging->be}erscalability

• Aimtohaveallrowsforhigh-runningqueriesinsameparGGon

DistribuGonAwareApps

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 41

Page 42: MySQL Cluster Whats New

•  ExtendparGGonawarenessovermulGpletables

•  Samerule–aimtohavealldataforinstanceofhighrunningtransacGonsinthesameparGGon

– ALTER TABLE service_ids PARTITION BY KEY(sub_id);

DistribuGonAware–MulGpleTables

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 42

Page 43: MySQL Cluster Whats New

FasterJoins–PushdownJoins

• AcGvatedwhenndb_join_pushdownison(default)• Rulesforajointobepusheddown:

1.  JoinedcolumnsuseidenGcaltypes2.  NoreferencetoBLOBorTEXTcolumns3.  Noexplicitlock4.  ChildtablesintheJoinmustbeaccessedusingref,eq_ref,orconst5.  TablesnotexplicitlyparGGonedby[LINEAR] HASH,LIST,orRANGE6.  QueryexecuGonplandoesn’tusemysqld’sinternal‘join buffer'7.  Ifrootofjoinisoftheeq_reforconst type,childtablesmustbejoinedbyeq_ref

• RunANALYZE TABLE <table_name> oneachtableonce• UseEXPLAINtoseewhatcomponentsarebeingpusheddown:

– For example: Extra: Child of 'd' in pushed join@1

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 43

Page 44: MySQL Cluster Whats New

GlobalCheckpointsandLogging• GlobalCheckpointProtocol/GroupCommit(GCP)– REDOlog,synchronizedbetweentheDataNodes

– WritestransacGonsthathavebeenrecordedintheREDOlogbuffertoREDOlogondisk

– FrequencycontrolledbyTimebetweenGlobalCheckpoints•  Defaultis2000ms

– SizeoftheREDOlogissetusingNumOfFragmentLogFiles

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 44

Page 45: MySQL Cluster Whats New

LocalCheckpointsandLogging•  LocalCheckpointProtocol(LCP)

– FlushestheDataNodes’datatodisk.Aper2LCPstheREDOlogistrimmed

– FrequencycontrolledbyTimebetweenLocalCheckpoints•  Specifiestheamountofdatathatcanchangebeforeflushingtodisk

•  NotactuallyGme!Base-2logarithmofthenumberof4-bytewords

•  Example:Defaultvalueof20bytesmeans4*2^20=4MBofdatachanges

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 45

Page 46: MySQL Cluster Whats New

CheckpointsandLoggingLocal&Redo

•  LCPandREDOLogareusedtobringtheclusterbackonline– Followingsystemfailureorplannedshutdown1.  DataNodesarerestoredusingthe

latestLCP2.  REDOlogsareappliedunGlthe

latestGCP

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 46

Page 47: MySQL Cluster Whats New

MySQLClusterHardwareRequirements•  TCP/IPorInfiniband

– Minimum100Mbps,1Gbpsorhigherrecommended– MySQLClusterdedicatednetwork:separateDataNodesfromMySQLServers

• Homogeneousenvironmentsforeachlayer:APInodes&DataNodes• Machines

– Linux,Solaris,Windows,OSX•  h}ps://www.mysql.com/support/supportedplaaorms/cluster.html

– Min.1GbRAM– CPU,RAM,DISK:“themoreandfaster,thebe}er”

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 47

Page 48: MySQL Cluster Whats New

MySQLClusterHardwareSelecGon

•  4-24x86_64bitCPUthreads(vCPUs)• Minimum4GBofRAM

– MemorynotascriGcalatthislayer– RequirementsinfluencedbyconnecGonsandbuffers

•  2NetworkInterfaceCards(NICs)•  2PowerSupplyUnits(PSUs)•  Linux,Solaris,Windows,orOSXoperaGngsystem

MySQLServers

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 48

Page 49: MySQL Cluster Whats New

MySQLClusterHardwareSelecGon

•  Upto64x86_64bitCPUthreads(vCPUs)–  Highfrequency:enablesfasterprocessingofmessages

•  CalculaGngRAMperDataNode(in-memorydatabase)–  DatabaseSize*#Replicas*1.25/#datanodes–  50GBdatabase*2replicas*1.25/2datanodes=64GBofRAM–  Non-indexedcolumnscanbestoredondisk,reducesRAMrequirements

•  2NICsand2PSUs•  Deep-diveintonetworkbest-pracGcesinReferenceArchitectureGuide•  UseMaxNoOfExecutionThreadsorThreadConfigtoconfigurehowthreadsshouldbeallocated

DataNodes

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 49

Page 50: MySQL Cluster Whats New

Entry-Level Mid-Range High-End

1xSATA7200RPM• Forread-mostly• Noredundancy(butotherdatanodeisthemirror)

1xSAS10KRPMorSSD• Heavyduty(manyMB/s)• Noredundancy(butotherdatanodeisthemirror)

4xSAS10-15KRPMorSSDs• Heavyduty(manyMB/s)• Diskredundancy(RAID1+0/10),hotswappable

LCP/REDOLOG

MySQLClusterHardwareSelecGon

•  REDO,LCP,BACKUP–wri}ensequenGallyinsmallchunks(256KB)•  Ifpossible,useODirect=1

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 50

DiskSubsystemforCheckpoin0ng

LCP/REDOLOGLCP/REDOLOG

Page 51: MySQL Cluster Whats New

RecommendedMinimum High-EndRecommendaGon

2xSAS10KRPMor2xSSD

TABLESPACE

LCPREDOLOGUNDOLOG

UNDOLOG

LCP(REDOLOG/UNDOLOG)

TABLESPACE1

TABLESPACE2

4xSAS10-15KRPMorSSD

(REDOLOG)(REDOLOG)

MySQLClusterHardwareSelecGon:

•  UseHigh-EndRecommendaGonforheavyread/writeworkloads•  HavingTABLESPACEonseparatediskisgoodforreadperformance•  EnableWRITE_CACHEonblockstoragedevices

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 51

DiskBasedTables

Page 52: MySQL Cluster Whats New

ZoneBZoneA

LocaGonofNodes

• Minorityofdatanodeslost– Isolatedminoritywillshutdown

• Majoritypool(>50%ofthedatanodesandonefromeachNodeGroup)– Remainsviable– ExcludefailednodesfromclusteroperaGons

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 52

HandlingNetworkPar00ons

NodeGroup1

NodeGroup2

Page 53: MySQL Cluster Whats New

ZoneBZoneA

LocaGonofNodes

• NetworkconnecGvitylostbetweenzones

•  Eachpoolhas50%ofdatanodesand1fromeachNodeGroup– Eachviable,butZoneswilldivergeiftheybothlive(split-brain)

– Sowholivesonandwhodies?– WeneedarbitraGon

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 53

HandlingNetworkPar00ons

NodeGroup1

NodeGroup2

Page 54: MySQL Cluster Whats New

ZoneBZoneA

LocaGonofNodes

• Arbitratordecides– Contactedbydatanodesfromeachzone– Tellsthoseinonezonetoshutdown– Tellsthoseinotherzonetostayup

• Vitalthatarbitratorsharesnosinglepointoffailurewitheitheravailabilityzone

• Defaultarbitratorisanndb_mgmd nodebutcanalsobeamysqld node

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 54

AvoidingSplit-BrainDuringNetworkPar00ons

NodeGroup1

NodeGroup2

ZoneC

Arbitrator

Page 55: MySQL Cluster Whats New

Spli�ngMySQLClusterOverMulGpleSites

•  Thegreaterthelatencybetweensites,thehighertheimpactonperformance

•  Targetlatencyshouldbe<=10ms;20msacceptable– Testatthenetworklayerwith1000bytepacketsunderload

• Bandwidthrequirementsdependentontrafficbutaimfor1Gbps+(100MbpsforalowtrafficCluster)

•  SimplestWANtopologypossible(fewerpointsoffailure/failoverlatency)•  TypicalWANfailoverGmesshouldbeshortenoughnottotriggerSTONITHacGviGeswithinCluster

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 55

WANEngineering

Page 56: MySQL Cluster Whats New

• AsynchronousreplicaGonbetweenMySQLClusters

• AcGve-AcGveMulG-Homed– Updateanywhere– ConflictdetecGon

•  ApplicaGonnoGfiedthroughexcepGontables•  CanopttohaveconflictsresolvedautomaGcally

– AutomaGcconflictresoluGon•  ConflicGngtransacGonanddependentonesarerolled-back

• NochangestoapplicaGon/schema

AcGve-AcGveGeo-ReplicaGon(Reminder)

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 56

Page 57: MySQL Cluster Whats New

MySQLClusterGeographicReplicaGon

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 57

Implementa0on

Page 58: MySQL Cluster Whats New

MySQLClusterGeographicReplicaGon

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 58

Scenariosforreplica0ngbetweenclusters

Page 59: MySQL Cluster Whats New

• ParGGoncustomersacrossmulGpleclusters,distributedbyregiontoopGmizelowlatencyaccess

•  Eachsub-clusterisreplicatedforHighAvailability

• AcGve/passiveorAcGve/AcGve

59

GeographicReplicaGonforLow-LatencyLocalAccess

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved

Cluster4

Cluster1

Cluster1B

Cluster1CCluster2

Cluster2B

Cluster2C

Cluster3

Cluster3B

Cluster3C

Cluster4C

Cluster4B

Page 60: MySQL Cluster Whats New

MySQLClusterBackups•  BackupofNDBtables

–  Online–canhaveongoingtransacGons–  Consistent–onlycommi}eddataandchangesarebackedup

•  ndb_mgm -e "START BACKUP" –  CopybackupfilesfromdatanodestosafepersistentlocaGon

–  Non-NDBtablesmustbebackedupseparately– MySQLsystemtablesarestoredinMyISAMorInnoDB

•  Youwanttobackup(foreachMySQLServer)–  mysqldatabase/schema–  Triggers,rouGnes,events,...

•  Usemysqldump–  mysqldump mysql > mysql.sql –  mysqldump --no-data -A > schemas.sql

–  mysqldump --no-data --no-create-info -R > routines.sql

•  Copymy.cnf&config.inifiles

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 60

Page 61: MySQL Cluster Whats New

MySQLClusterBackups

mcm>backupclustermycluster;mcm>listbackupsmycluster;mcm>restorecluster-I<backup-id>mycluster

UsingMySQLClusterManager

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 61

Page 62: MySQL Cluster Whats New

FeaturestoUseWithCauGon

•  LargeBLOBs• Diskbasedtables•  EnforcedForeignKeys•  Largerangescansandjoins•  Spli�ngasingleMySQLClusterovermulGpledatacenters• AcGve-AcGveGeographicReplicaGon

– FinetousebutbestifconflictscanbeavoidedontheapplicaGonside

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 62

Poten0alImpactstoPerformance,Capacity,&Stability

Page 63: MySQL Cluster Whats New

Machine1

TypicalArchitectures

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 63

Enterprise-MinimalHAConfigura0on

MySQLServer

DataNode

App

Machine2

MySQLServer

DataNode

App

Machine3

MgmtNode

Page 64: MySQL Cluster Whats New

Machine4Machine3

Machine1

TypicalArchitectures

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 64

Enterprise-Small

MySQLServer

DataNode

App

Machine2

MySQLServer

DataNode

App

MgmtNode

MgmtNode

Page 65: MySQL Cluster Whats New

Machine4Machine3

Machine1

TypicalArchitectures

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 65

Enterprise-Scale-out

MySQLServer

DataNode

App

Machine2

MySQLServer

DataNode

App

MgmtNode

MgmtNode

Machine8Machine7

Machine5

25/10/17

MySQLServer

DataNode

App

Machine6

MySQLServer

DataNode

App

Machine9

MySQLServer

App

MySQLServer

App

Page 66: MySQL Cluster Whats New

TypicalArchitectures

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 66

Telco/Gaming

DataNode

App

DataNode

App

MgmtNode

MgmtNode

25/10/17

DataNode

App

MySQLServer

DataNode

App

MySQLServer

Page 67: MySQL Cluster Whats New

TypicalArchitectures

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 67

Telco/Gaming

DataNode

App

DataNode

App

MgmtNode

MgmtNode

25/10/17

DataNode

App

MySQLServer

DataNode

App

MySQLServer

DataNode

App

DataNode

App

Page 68: MySQL Cluster Whats New

‘Typical’Architectures

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 68

Telco/Gaming-scale

25/10/17

Page 69: MySQL Cluster Whats New

Site2Site1

‘Typical’Architectures

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 69

Telco/Gaming–GeographicReplica0on

25/10/17

Page 70: MySQL Cluster Whats New

MySQLClusterSupport

IssueDetected

SRCreated

SupportWorksonSR

IfBug

BugReportOpened

BPS(priority)SetBasedonSRFields

BugFixCreated

HotFix? MaintenanceRelease

IfNotBug

SupportRespondstoCustomerViaSR

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 70

Page 71: MySQL Cluster Whats New

MySQLClusterCGE

MySQLClusterManager

MySQLEnterpriseScalability

MySQLEnterpriseAudit

MySQLEnterpriseSecurity

OraclePremierLifeGmeSupport

OracleProduct

CerGficaGons

MySQLEnterpriseMonitor

MySQLWorkbench

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 71

Page 72: MySQL Cluster Whats New

EnhancingDevOpsAgility,ReducingDownGme

AutomatedManagement

•  Start/stopnodeorenGrecluster

• On-Linescaling• On-LinereconfiguraGon• On-Lineupgrades• On-Linebackup&restore

•  ImportrunningCluster

Self-Healing

• Nodemonitoring• Auto-recoveryextendedtoSQLandmgmtnodes

HAOperaGons

• Cluster-wideconfiguraGonconsistency

• PersistentconfiguraGons

• HAagents

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 72

Page 73: MySQL Cluster Whats New

WithoutMySQLClusterManager•  1xpreliminarycheckofclusterstate•  8xsshcommandsperserver•  8xper-processstopcommands•  4xscpofconfigfiles(2xmgmd&2xmysqld)•  8xper-processstartcommands•  8xchecksforstartedandre-joinedprocesses•  8xprocesscompleGonverificaGons•  1xverifycompleGonofthewholecluster•  ExcludesmanualediGngofeachconfiguraGonfile

•  Total:46commands– 2.5hoursofaNendedopera8on

WithMySQLClusterManager

mcm> upgrade cluster --package=7.4 mycluster;

•  Total:1Command

– UnaNendedOpera8on

SopwareUpgrade–ExampleofMCMBenefits

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 73

Page 74: MySQL Cluster Whats New

MySQLClusterManager1.3GA

“Unmanaged”producGonCluster

mcm> create cluster --import

mcm> import config [--dryrun]

mcm> import cluster [--dryrun]

ClusternowmanagedbyMCM

ImportarunningClusterintoMCM

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 74

Page 75: MySQL Cluster Whats New

MySQLClusterManager1.4GAAutotuneYourCluster

Copyright2016,oracleand/oritsaffiliates.Allrightsreserved 75

mcm>autotune--writeload=highrealtimemycluster;+-----------------------------------------------------+|Commandresult|+-----------------------------------------------------+|Clustersuccessfullyautotunedtotemplaterealtime|+-----------------------------------------------------+1rowinset(2min58.09sec)

Page 76: MySQL Cluster Whats New

MySQLEnterpriseMonitor

76Copyright2016,oracleand/oritsaffiliates.Allrightsreserved

Page 77: MySQL Cluster Whats New

MySQLEnterpriseMonitor

77Copyright2016,oracleand/oritsaffiliates.Allrightsreserved