ãã®ããŒãžã¯æ©æ¢°ç¿»èš³ãããã®ã§ãã
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãAdminAPI ã®æŠèŠãšéå§ã«å¿ èŠãªç¥èã«ã€ããŠèª¬æããŸãã
MySQL Shell ã«ã¯ãdba
ã°ããŒãã«å€æ°ãšããã«é¢é£ä»ããããã¡ãœãããä»ããŠã¢ã¯ã»ã¹ãã AdminAPI ãå«ãŸããŠããŸãã dba
倿°ã¡ãœããã¯ãInnoDB ã¯ã©ã¹ã¿ ããã³ InnoDB ReplicaSet ã®ãããã€ãæ§æããã³ç®¡çãå¯èœã«ããæäœãæäŸããŸãã ããšãã°ãdba.createCluster()
ã¡ãœããã䜿çšã㊠InnoDB ã¯ã©ã¹ã¿ ãäœæããŸãã ãŸããAdminAPI ã§ã¯ãInnoDB ã¯ã©ã¹ã¿ ãš InnoDB ReplicaSet ã®çµ±åãå¯èœã«ãããŠãŒã¶ãŒã®äœæãæŽæ°ãªã©ãäžéšã® MySQL Router é¢é£ã¿ã¹ã¯ã®ç®¡çããµããŒããããŠããŸãã
MySQL Shell ã«ã¯ããã€ãã£ã SQL ã¢ãŒãã«å ããŠãJavaScript ããã³ Python ã®ã¹ã¯ãªããèšèªã¢ãŒããçšæãããŠããŸãã ãã®ã¬ã€ãå
šäœãéããŠãMySQL Shell ã¯äž»ã« JavaScript ã¢ãŒãã§äœ¿çšãããŸãã MySQL Shell ãèµ·åãããšãããã©ã«ãã§ JavaScript ã¢ãŒãã«ãªããŸãã JavaScript ã¢ãŒãã®å Žåã¯\js
ãPython ã¢ãŒãã®å Žåã¯\py
ãçºè¡ããŠãã¢ãŒããåãæ¿ããŸãã \js
ãçºè¡ããŠãJavaScript ã¢ãŒãã§ããããšã確èªããŸãã
MySQL Shell ã§ã¯ãœã±ããæ¥ç¶ãä»ããŠãµãŒããŒã«æ¥ç¶ã§ããŸãããAdminAPI ã§ã¯ãµãŒããŒã€ã³ã¹ã¿ã³ã¹ãžã® TCP æ¥ç¶ãå¿ èŠã§ãã ãœã±ããããŒã¹ã®æ¥ç¶ã¯ AdminAPI ã§ã¯ãµããŒããããŠããŸããã
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãMySQL Shell ã«ã€ããŠçè§£ããŠããããšãåæãšããŠããŸãã詳现ã¯ãMySQL Shell 8.0 ãåç
§ããŠãã ãããMySQL Shell ã§ã¯ãAdminAPI ã®ãªã³ã©ã€ã³ãã«ããæäŸãããŸãã 䜿çšå¯èœãªãã¹ãŠã® dba
ã³ãã³ãããªã¹ãããã«ã¯ãdba.help()
ã¡ãœããã䜿çšããŸãã ç¹å®ã®æ¹æ³ã®ãªã³ã©ã€ã³ãã«ããåç
§ããã«ã¯ãäžè¬çãªåœ¢åŒã® object.help('methodname')
ã䜿çšããŸãã äŸ:
mysql-js> dba.help('getCluster')
Retrieves a cluster from the Metadata Store.
SYNTAX
dba.getCluster([name][, options])
WHERE
name: Parameter to specify the name of the cluster to be returned.
options: Dictionary with additional options.
>trimmed for brevity<
ãã®ããã¥ã¡ã³ãã«å ããŠãMySQL Shell JavaScript API ãªãã¡ã¬ã³ã¹ãŸã㯠MySQL Shell Python API ãªãã¡ã¬ã³ã¹ (ãã³ãã¯ã¿ããã³ APIãããå ¥æå¯èœ) ã®ãã¹ãŠã® AdminAPI ã¡ãœããã®éçºè çšããã¥ã¡ã³ãããããŸãã
ãã®ã»ã¯ã·ã§ã³ã¯ãInnoDB ã¯ã©ã¹ã¿ ãŸã㯠InnoDB ReplicaSet ã®äœ¿çšã«é©çšãããæ¬¡ã®ãã®ã§æ§æãããŸã:
AdminAPI ã§ã¯ã次ã®ãããã€ã¡ã³ãã·ããªãªããµããŒããããŸã:
æ¬çªãããã€ã¡ã³ã: å®å šãªæ¬çªç°å¢ã䜿çšããå Žåã¯ãå¿ èŠãªæ°ã®ãã·ã³ãæ§æããŠããããµãŒããŒã€ã³ã¹ã¿ã³ã¹ããã·ã³ã«ãããã€ããå¿ èŠããããŸãã
-
ãµã³ãããã¯ã¹ã®ãããã€ã¡ã³ã: å®å šæ¬çªãããã€ã¡ã³ãã«ã³ãããããåã«ãããã€ã¡ã³ãããã¹ãããå ŽåãæäŸãããŠãããµã³ãããã¯ã¹æ©èœã䜿çšãããšãããŒã«ã«ãã·ã³ã«ãã¹ãç°å¢ããã°ããèšå®ã§ããŸãã ãµã³ãããã¯ã¹ãµãŒããŒã€ã³ã¹ã¿ã³ã¹ã¯å¿ èŠãªæ§æã§äœæãããæ¡çšãããŠãããã¯ãããžã詊ãããšãã§ããŸãã
éèŠãµã³ãããã¯ã¹ãããã€ã¡ã³ãã¯ãå®å šæ¬çªç°å¢ã§ã®äœ¿çšã«ã¯é©ããŠããŸããã
AdminAPI ã«å¿ èŠãªãœãããŠã§ã¢ã³ã³ããŒãã³ãã®ã€ã³ã¹ããŒã«æ¹æ³ã¯ã䜿çšãããããã€ã¡ã³ãã®ã¿ã€ãã«ãã£ãŠç°ãªããŸãã æ¬çªãããã€ã¡ã³ãã®å Žåã¯ãåãã·ã³ã«ã³ã³ããŒãã³ããã€ã³ã¹ããŒã«ããŸãã æ¬çªãããã€ã¡ã³ãã§ã¯ãMySQL ãµãŒããŒã€ã³ã¹ã¿ã³ã¹ãå®è¡ããŠããè€æ°ã®ãªã¢ãŒããã¹ããã·ã³ã䜿çšãããããã³ã³ããŒãã³ãã®ã€ã³ã¹ããŒã«ãªã©ã®ã¿ã¹ã¯ãå®è¡ããã«ã¯ãSSH ã Windows ãªã¢ãŒããã¹ã¯ããããªã©ã®ããŒã«ã䜿çšããŠåãã·ã³ã«æ¥ç¶ããå¿ èŠããããŸãã ãµã³ãããã¯ã¹ãããã€ã¡ã³ãã®å Žåã¯ãã³ã³ããŒãã³ããåäžã®ãã·ã³ã«ã€ã³ã¹ããŒã«ããŸãã ãµã³ãããã¯ã¹ãããã€ã¡ã³ãã¯åäžã®ãã·ã³ã«å¯ŸããŠããŒã«ã«ã§ãããããã€ã³ã¹ããŒã«ã¯ããŒã«ã«ãã·ã³ã§äžåºŠã®ã¿å®è¡ããå¿ èŠããããŸãã æ¬¡ã®ã€ã³ã¹ããŒã«æ¹æ³ã䜿çšã§ããŸã:
次ã®ããã¥ã¡ã³ãã䜿çšããŠãã³ã³ããŒãã³ããããŠã³ããŒãããã³ã€ã³ã¹ããŒã«ããŸã:
MySQL Server - MySQL ã®ã€ã³ã¹ããŒã«ãšã¢ããã°ã¬ãŒã ãåç §ããŠãã ããã
MySQL Shell - 第2ç« ãMySQL Shell ã®ã€ã³ã¹ããŒã«ã ãåç §ããŠãã ããã
MySQL Router - Installing MySQL Router ãåç §ããŠãã ããã
äžèŽããããŒãžã§ã³ã®ã³ã³ããŒãã³ããåžžã«äœ¿çšããŸããããšãã°ãMySQL Router 8.0.29 ãšãšãã« MySQL 8.0.29 ãå®è¡ããã€ã³ã¹ã¿ã³ã¹ã管çããã«ã¯ãMySQL Shell 8.0.29 ãå®è¡ããŸãã
å¿ èŠãªãœãããŠã§ã¢ãã€ã³ã¹ããŒã«ããããã»ã¯ã·ã§ã³6.2ãMySQL InnoDB ã¯ã©ã¹ã¿ã ãŸã㯠ã»ã¯ã·ã§ã³6.3ãMySQL InnoDB ReplicaSetã ã®ã©ã¡ãã«åŸãããéžæããŸãã
æ¬çªãããã€ã¡ã³ãã§ã¯ã䜿çšããã€ã³ã¹ã¿ã³ã¹ã¯åå¥ã®ãã·ã³ã§å®è¡ããããããåãã·ã³ã«ã¯äžæã®ãã¹ãåãå¿ èŠã§ããããµãŒããŒã€ã³ã¹ã¿ã³ã¹ãå®è¡ããä»ã®ãã·ã³ã®ãã¹ãåã解決ã§ããå¿ èŠããããŸãã ããã§ãªãå Žåã¯ã次ã®ããšãã§ããŸã:
åãã·ã³ãæ§æããŠãçžäºã® IP ããã¹ãåã«ãããããŸãã 詳现ã¯ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®ããã¥ã¡ã³ããåç §ããŠãã ããã ããã¯æšå¥šããã解決çã§ãã
DNS ãµãŒãã¹ã®èšå®
åã€ã³ã¹ã¿ã³ã¹ã® MySQL æ§æã®
report_host
倿°ããé©åãªå€éšããå°éå¯èœãªã¢ãã¬ã¹ã«æ§æ
AdminAPI ã§ã¯ããã¹ãåã®ãããã« IP ã¢ãã¬ã¹ã䜿çšã§ããŸãã MySQL Shell 8.0.18 ãããã¿ãŒã²ãã MySQL Server ã®ããŒãžã§ã³ã 8.0.13 ããé«ãå ŽåãAdminAPI 㯠IPv6 ã¢ãã¬ã¹ããµããŒãããŸãã MySQL Shell 8.0.18 以äžã䜿çšããŠããå Žåããã¹ãŠã®ã¯ã©ã¹ã¿ã€ã³ã¹ã¿ã³ã¹ã§ 8.0.14 以äžãå®è¡ãããŠãããšãIPv6 ãŸãã¯ãã¹ãåã䜿çšããŠãã€ã³ã¹ã¿ã³ã¹æ¥ç¶æååããã³ localAddress
ãgroupSeeds
ãipAllowlist
ãªã©ã®ãªãã·ã§ã³ãæå®ã㊠IPv6 ã¢ãã¬ã¹ã«è§£æ±ºã§ããŸãã IPv6 ã®äœ¿çšã®è©³çްã¯ãIPv6 ããã³ IPv6 ãš IPv4 ã®æ··åã°ã«ãŒãã®ãµããŒã ãåç
§ããŠãã ããã 以åã®ããŒãžã§ã³ã§ã¯ãIPv4 ã¢ãã¬ã¹ã®ã¿ãµããŒããããŠããŸããã
MySQL ãµãŒããŒã®ãã¹ãåãæ£ããæ§æãããŠãããã©ããã確èªããã«ã¯ã次ã®ã¯ãšãªãŒãå®è¡ããŠãã€ã³ã¹ã¿ã³ã¹ãä»ã®ãµãŒããŒã«èªèº«ã®ã¢ãã¬ã¹ãã¬ããŒãããæ¹æ³ã確èªããè¿ãããã¢ãã¬ã¹ã䜿çšããŠä»ã®ãã¹ããããã® MySQL ãµãŒããŒãžã®æ¥ç¶ã詊è¡ããŸã:
SELECT coalesce(@@report_host, @@hostname);
AdminAPI ã䜿çšããã³ã¢æŠå¿µã® 1 ã€ã¯ãInnoDB ã¯ã©ã¹ã¿ ãŸã㯠InnoDB ReplicaSet ãæ§æãã MySQL ã€ã³ã¹ã¿ã³ã¹ãžã®æ¥ç¶ãçè§£ããããšã§ãã 管çæã®ã€ã³ã¹ã¿ã³ã¹ãžã®æ¥ç¶ããã³ã€ã³ã¹ã¿ã³ã¹éã®æ¥ç¶ã®èŠä»¶ã¯ã次ã®ãšããã§ã:
TCP/IP æ¥ç¶ã®ã¿ããµããŒããããUnix ãœã±ãããŸãã¯ååä»ããã€ãã®äœ¿çšã¯ãµããŒããããŠããŸãããInnoDB ã¯ã©ã¹ã¿ ããã³ InnoDB ReplicaSet ã¯ãåºåãããã¯ãŒã¯äžã§å®è¡ãããŠããããŒã«ã«ãšãªã¢ãããã¯ãŒã¯ã§ã®äœ¿çšãç®çãšããŠããŸããããèŠãããŸããã
-
ã¯ã©ã·ã㯠MySQL ãããã³ã« æ¥ç¶ã®ã¿ããµããŒããããŠãããX ãããã³ã« ã¯ãµããŒããããŠããŸããã
ãã³ãã¢ããªã±ãŒã·ã§ã³ã§ X ãããã³ã« ã䜿çšã§ããŸãããã®èŠä»¶ã¯ãAdminAPI ã䜿çšãã管çæäœçšã§ãã
MySQL Shell ã䜿çšãããšãæ§ã
㪠API ãæäœã§ããURI é¡äŒŒæååãŸãã¯ããŒãšå€ã®ãã¢ã䜿çšãããµãŒããŒãžã®æ¥ç¶ ã§èª¬æãããŠããããã«æ¥ç¶ã®æå®ããµããŒããããŸãã URI ã®ãããªæååãŸãã¯ããŒãšå€ã®ãã¢ã䜿çšããŠæ¥ç¶ãæå®ã§ããŸãã 远å ã®æ¥ç¶ãã©ã¡ãŒã¿ 㯠AdminAPI ã§ã¯ãµããŒããããŠããŸããã ãã®ããã¥ã¡ã³ãã§ã¯ãURI ã®ãããªæ¥ç¶æååã䜿çšãã AdminAPI ã瀺ããŸãã ããšãã°ããŠãŒã¶ãŒ myuser
ãšã㊠www.example.com
ã® MySQL ãµãŒããŒã€ã³ã¹ã¿ã³ã¹ã«æ¥ç¶ããã«ã¯ã3306
ã®ããŒãã§æ¥ç¶æååã䜿çšããŸã:
myuser@www.example.com:3306
ãã®æ¥ç¶æååã dba.configureInstance()
ãªã©ã® AdminAPI æäœã§äœ¿çšããã«ã¯ãæ¥ç¶æååãäžéåŒçšç¬Š (') ãŸãã¯äºéåŒçšç¬Š (\") ã§å²ããªã©ããŠãæ¥ç¶æååãæååãšããŠè§£éããå¿
èŠããããŸãã AdminAPI ã® JavaScript å®è£
ã䜿çšããŠããå Žåã«ã¯ã次ã®ã³ãã³ããçºè¡ããŸã:
MySQL JS > dba.configureInstance('myuser@www.example.com:3306')
MySQL Shell ãããã©ã«ãã®å¯Ÿè©±ã¢ãŒãã§å®è¡ããŠããå Žåã¯ããã¹ã¯ãŒãã®å ¥åãæ±ããããŸããAdminAPI ã§ã¯ MySQL Shell ã»ã¯ã·ã§ã³4.4ããã©ã¬ãã«ãã¹ã¯ãŒãã¹ãã¢ã ããµããŒããããŠãããã€ã³ã¹ã¿ã³ã¹ãžã®æ¥ç¶ã«äœ¿çšãããã¹ã¯ãŒããæ ŒçŽãããšãããã³ããã¯è¡šç€ºãããªããªããŸãã
InnoDB ã¯ã©ã¹ã¿ãInnoDB ReplicaSet ããã³ãã®ãµãŒããŒã€ã³ã¹ã¿ã³ã¹ãæäœããããã«äœ¿çšãã AdminAPI ã³ãã³ãã«ãã£ãŠãã€ã³ã¹ã¿ã³ã¹äžã® MySQL ã®æ§æã倿ŽãããŸãã MySQL Shell ã®ã€ã³ã¹ã¿ã³ã¹ãžã®æ¥ç¶æ¹æ³ããã³ã€ã³ã¹ã¿ã³ã¹ã«ã€ã³ã¹ããŒã«ãããŠãã MySQL ã®ããŒãžã§ã³ã«å¿ããŠããããã®æ§æå€æŽãã€ã³ã¹ã¿ã³ã¹ã«èªåçã«æ°žç¶åã§ããŸãã ã€ã³ã¹ã¿ã³ã¹ã«èšå®ãæ°žç¶åãããšãã€ã³ã¹ã¿ã³ã¹ã®åèµ·ååŸã«æ§æã®å€æŽãä¿æãããŸããããã¯ã°ã©ãŠã³ãæ
å ±ã¯ãSET PERSIST
ãåç
§ããŠãã ããã ããã¯ãä¿¡é Œæ§ã®ãã䜿çšã®ããã«äžå¯æ¬ ã§ããããšãã°ãèšå®ãæ°žç¶åãããŠããªãå Žåãæ§æã®å€æŽã倱ããããããåèµ·ååŸã«ã¯ã©ã¹ã¿ã«è¿œå ãããã€ã³ã¹ã¿ã³ã¹ã¯åçµåãããŸããã
次ã®èŠä»¶ãæºããã€ã³ã¹ã¿ã³ã¹ã§ã¯ãæ§æå€æŽã®æ°žç¶åãèªåçã«ãµããŒããããŸã:
ã€ã³ã¹ã¿ã³ã¹ã§ MySQL ããŒãžã§ã³ 8.0.11 以äžãå®è¡ãããŠãã
persisted_globals_load
ãON
ã«èšå®ãããŠããã€ã³ã¹ã¿ã³ã¹ã
--no-defaults
ãªãã·ã§ã³ã§èµ·åãããŠããŸãã
ãããã®èŠä»¶ãæºãããªãã€ã³ã¹ã¿ã³ã¹ã¯ãæ§æå€æŽã®æ°žç¶åãèªåçã«ãµããŒãããŠããããAdminAPI æäœã«ãã£ãŠã€ã³ã¹ã¿ã³ã¹èšå®ã®å€æŽãæ°žç¶åããããšã次ã®ãããªèŠåã衚瀺ãããŸã:
WARNING: On instance 'localhost:3320' membership change cannot be persisted since MySQL version 5.7.21
does not support the SET PERSIST command (MySQL version >= 8.0.5 required). Please use the
<Dba>.configureLocalInstance command locally to persist the changes.
MySQL Shell ãçŸåšå®è¡ãããŠãã MySQL ã€ã³ã¹ã¿ã³ã¹ (ã€ãŸããããŒã«ã«ã€ã³ã¹ã¿ã³ã¹) ã«å¯Ÿã㊠AdminAPI ã³ãã³ããçºè¡ããããšãMySQL Shell ã¯æ§æã®å€æŽãã€ã³ã¹ã¿ã³ã¹ã«çŽæ¥ä¿æããŸãã æ§æå€æŽã®èªåæ°žç¶åããµããŒãããããŒã«ã«ã€ã³ã¹ã¿ã³ã¹ã§ã¯ãæ§æå€æŽã¯ã€ã³ã¹ã¿ã³ã¹ mysqld-auto.cnf
ãã¡ã€ã«ã«æ°žç¶åãããæ§æå€æŽã«ãã以äžã®ã¹ãããã¯å¿
èŠãããŸããã æ§æå€æŽã®èªåæ°žç¶åããµããŒãããŠããªãããŒã«ã«ã€ã³ã¹ã¿ã³ã¹ã§ã¯ã倿ŽãããŒã«ã«ã§è¡ãå¿
èŠããããŸããdba.configureLocalInstance()
ã§ã®ã€ã³ã¹ã¿ã³ã¹ã®æ§æ ãåç
§ããŠãã ããã
ãªã¢ãŒãã€ã³ã¹ã¿ã³ã¹ (ã€ãŸããMySQL Shell ãçŸåšå®è¡ãããŠããã€ã³ã¹ã¿ã³ã¹ä»¥å€ã®ã€ã³ã¹ã¿ã³ã¹) ã«å¯ŸããŠå®è¡ããå Žåãã€ã³ã¹ã¿ã³ã¹ãæ§æå€æŽã®æ°žç¶åãèªåçã«ãµããŒãããŠããå ŽåãAdminAPI ã³ãã³ãã¯ãã€ã³ã¹ã¿ã³ã¹ã® mysql-auto.conf
ãªãã·ã§ã³ãã¡ã€ã«ã«å¯Ÿããæ§æå€æŽãæ°žç¶åããŸãã ãªã¢ãŒãã€ã³ã¹ã¿ã³ã¹ãæ§æå€æŽã®æ°žç¶åãèªåçã«ãµããŒãããŠããªãå ŽåãAdminAPI ã³ãã³ãã¯ã€ã³ã¹ã¿ã³ã¹ãªãã·ã§ã³ãã¡ã€ã«ãèªåçã«æ§æã§ããŸããã ã€ãŸããAdminAPI ã³ãã³ãã¯ãçŸåšã®æ§æã衚瀺ãããããªã©ãã€ã³ã¹ã¿ã³ã¹ããæ
å ±ãèªã¿åãããšãã§ããŸãããæ§æãžã®å€æŽãã€ã³ã¹ã¿ã³ã¹ãªãã·ã§ã³ãã¡ã€ã«ã«æ°žç¶åããããšã¯ã§ããŸããã ãã®å Žåã倿ŽãããŒã«ã«ã«æ°žç¶åããå¿
èŠããããŸããdba.configureLocalInstance()
ã§ã®ã€ã³ã¹ã¿ã³ã¹ã®æ§æ ãåç
§ããŠãã ããã
AdminAPI ã䜿çšããŠããå ŽåãInnoDB ã¯ã©ã¹ã¿ ãŸã㯠InnoDB ReplicaSet ã衚ããã³ãã©ãªããžã§ã¯ãã䜿çšããŸãã ãã®ãªããžã§ã¯ãã倿°ã«å²ãåœãŠã䜿çšå¯èœãªæäœã䜿çšã㊠InnoDB ã¯ã©ã¹ã¿ ãŸã㯠InnoDB ReplicaSet ãç£èŠããã³ç®¡çããŸãã ãã³ãã©ãªããžã§ã¯ããååŸã§ããããã«ããã«ã¯ãInnoDB ã¯ã©ã¹ã¿ ãŸã㯠InnoDB ReplicaSet ã«å±ããããããã®ã€ã³ã¹ã¿ã³ã¹ãžã®æ¥ç¶ã確ç«ããŸãã ããšãã°ãdba.createCluster()
ã䜿çšããŠã¯ã©ã¹ã¿ãäœæããå Žåããã®æäœã¯å€æ°ã«å²ãåœãŠãããšãã§ãã Cluster
ãªããžã§ã¯ããè¿ããŸãã ãã®ãªããžã§ã¯ãã䜿çšããŠãã€ã³ã¹ã¿ã³ã¹ã®è¿œå ãã¯ã©ã¹ã¿ã¹ããŒã¿ã¹ã®ç¢ºèªãªã©ãã¯ã©ã¹ã¿ãæäœããŸãã MySQL Shell ã®åèµ·ååŸãªã©ãåŸæ¥ã¯ã©ã¹ã¿ãå床ååŸããå Žåã¯ãdba.getCluster([
颿°ã䜿çšããŸãã äŸ:
name
],[options
])
mysql-js> var cluster1 = dba.getCluster()
åæ§ã«ãdba.getReplicaSet()
æäœã䜿çšã㊠InnoDB ReplicaSet ãååŸããŸãã äŸ:
mysql-js> var replicaset1 = dba.getReplicaSet()
name
ãæå®ããªãå Žåãããã©ã«ããªããžã§ã¯ããè¿ãããŸãã ããã©ã«ãã§ã¯ãMySQL Shell ã¯ãã³ãã©ã®ååŸæã«ãã©ã€ããªã€ã³ã¹ã¿ã³ã¹ãžã®æ¥ç¶ã詊è¡ããŸãã ãã®åäœãæ§æããã«ã¯ãconnectToPrimary
ãªãã·ã§ã³ãèšå®ããŸãã connectToPrimary
ã true
ã§ãã¢ã¯ãã£ããªã°ããŒãã« MySQL Shell ã»ãã·ã§ã³ããã©ã€ããªã€ã³ã¹ã¿ã³ã¹ã«å¯Ÿãããã®ã§ãªãå ŽåãMySQL Shell ã¯ãã©ã€ããªã€ã³ã¹ã¿ã³ã¹ã«å¯Ÿããã¯ãšãªãŒãå®è¡ããŸãã ã¯ã©ã¹ã¿ã«ã¯ã©ãŒã©ã ããªãå Žåãæäœã¯å€±æããŸãã connectToPrimary
ã false
ã®å ŽåãååŸããããªããžã§ã¯ãã¯ã¢ã¯ãã£ãã»ãã·ã§ã³ãã€ãŸã MySQL Shell ã®çŸåšã®ã°ããŒãã«ã»ãã·ã§ã³ãšåãã€ã³ã¹ã¿ã³ã¹ã䜿çšããŸãã connectToPrimary
ãæå®ãããŠããªãå ŽåãMySQL Shell 㯠connectToPrimary
ã true
ãšããŠæ±ããfalse
ã§ãã connectToPrimary
ã«ãã©ãŒã«ããã¯ããŸãã
ã»ã«ã³ããªã«åŒ·å¶çã«æ¥ç¶ããã«ã¯ãã»ã«ã³ããªã€ã³ã¹ã¿ã³ã¹ãžã®æ¥ç¶ã確ç«ããæ¬¡ãçºè¡ã㊠connectToPrimary
ãªãã·ã§ã³ã䜿çšããŸã:
mysql-js> shell.connect(secondary_member)
mysql-js> var cluster1 = dba.getCluster(testCluster, {connectToPrimary:false})
ã»ã«ã³ããªã€ã³ã¹ã¿ã³ã¹ã«ã¯ super_read_only=ON
ãããããã倿Žãæžã蟌ãããšã¯ã§ããŸããã
ã€ã³ã¹ã¿ã³ã¹ã®ç®¡çã«äœ¿çšããããŠãŒã¶ãŒã¢ã«ãŠã³ã㯠root ã¢ã«ãŠã³ãã§ããå¿
èŠã¯ãããŸããããå®å
šãª MySQL 管çè
æš©é (SUPER
, GRANT OPTION
, CREATE
, DROP
ãªã©) ã«å ããŠãã¡ã¿ããŒã¿ããŒãã«ã«å¯Ÿããå®å
šãªèªåãããã³æžèŸŒã¿æš©éããŠãŒã¶ãŒã«å²ãåœãŠãããŠããå¿
èŠããããŸãã ãã®æé ã§ã¯ããŠãŒã¶ãŒ icadmin
ã InnoDB ã¯ã©ã¹ã¿ ã®äŸã«ãrsadmin
ã InnoDB ReplicaSet ã®äŸã«ç€ºããŸãã
管çè ã®ãŠãŒã¶ãŒåãšãã¹ã¯ãŒãã¯ããã¹ãŠã®ã€ã³ã¹ã¿ã³ã¹ã§åãã§ããå¿ èŠããããŸãã
8.0.20 以éã®ããŒãžã§ã³ã§ã¯ãsetupAdminAccount(
æäœã䜿çšããŠãInnoDB ã¯ã©ã¹ã¿ ãŸã㯠InnoDB ReplicaSet ã®ç®¡çã«å¿
èŠãªæš©éãæã€ MySQL ãŠãŒã¶ãŒã¢ã«ãŠã³ããäœæãŸãã¯ã¢ããã°ã¬ãŒãããŸãã user
)setupAdminAccount()
æäœã䜿çšããã«ã¯ãroot ãªã©ã®ãŠãŒã¶ãŒãäœæããæš©éãæã€ MySQL ãŠãŒã¶ãŒãšããŠæ¥ç¶ããå¿
èŠããããŸãã setupAdminAccount(
æäœã§ã¯ãuser
)dba.upgradeMetadata()
æäœã®åã«ãå¿
èŠãªæš©éãæã€æ¢åã® MySQL ã¢ã«ãŠã³ããã¢ããã°ã¬ãŒãããããšãã§ããŸãã
å¿
é ã® user
åŒæ°ã¯ãã¢ã«ãŠã³ãã®ç®¡çã«äœ¿çšããããã«äœæãŸãã¯ã¢ããã°ã¬ãŒããã MySQL ã¢ã«ãŠã³ãã®ååã§ãã setupAdminAccount()
æäœã§åãå
¥ãããããŠãŒã¶ãŒåã®åœ¢åŒã¯ãæšæºã® MySQL ã¢ã«ãŠã³ãåã®åœ¢åŒã«åŸããŸããã¢ã«ãŠã³ãåã®æå® ãåç
§ããŠãã ããã ãŠãŒã¶ãŒåŒæ°ã®åœ¢åŒã¯
ã§ããããã§ãusername
[@host
]host
ã¯ãªãã·ã§ã³ã§ãããæå®ããªãå Žå㯠%
ã¯ã€ã«ãã«ãŒãæåã«ããã©ã«ãèšå®ãããŸãã
ããšãã°ã倿° myCluster
ã«å²ãåœãŠããã InnoDB ã¯ã©ã¹ã¿ ã管çãã icadmin
ãšããååã®ãŠãŒã¶ãŒãäœæããã«ã¯ã次ã®ããã«çºè¡ããŸã:
mysql-js> myCluster.setupAdminAccount('icadmin')
Missing the password for new account icadmin@%. Please provide one.
Password for new account: ********
Confirm password: ********
Creating user icadmin@%.
Setting user password.
Account icadmin@% was successfully created.
ããšãã°ã8.0.20 ããåã®ããŒãžã§ã³ã§äœæããã管çãŠãŒã¶ãŒããã§ã«ååšããå Žåã¯ãsetupAdminAccount()
æäœã§ update
ãªãã·ã§ã³ã䜿çšããŠãæ¢åã®ãŠãŒã¶ãŒã®æš©éãã¢ããã°ã¬ãŒãããŸãã ããã¯ã管çãŠãŒã¶ãŒã«äºææ§ãæãããããã«ãã¢ããã°ã¬ãŒãæã«é¢é£ããŸãã ããšãã°ãicadmin
issue ãšããååã®ãŠãŒã¶ãŒãã¢ããã°ã¬ãŒãããã«ã¯ã次ã®ããã«ããŸã:
mysql-js> myCluster.setupAdminAccount('icadmin', {'update':1})
Updating user icadmin@%.
Account icadmin@% was successfully updated.
8.0.20 ããåã®ããŒãžã§ã³ã§ã¯ã管ççšã®ãŠãŒã¶ãŒãäœæããã«ã¯ãdba.configureInstance()
æäœã§ clusterAdmin
ãªãã·ã§ã³ã䜿çšããããšããèŠãããŸãã clusterAdmin
ãªãã·ã§ã³ã¯ãé©åãªæš©éãæã€ãŠãŒã¶ãŒãäœæããæš©éãæã€ãŠãŒã¶ãŒã«åºã¥ã MySQL Shell æ¥ç¶ã§äœ¿çšããå¿
èŠããããŸãããã®äŸã§ã¯ãroot ãŠãŒã¶ãŒã䜿çšãããŸãã äŸ:
mysql-js> dba.configureInstance('root@ic-1:3306', {clusterAdmin: "'icadmin'@'ic-1%'"});
setupAdminAccount()
æäœããã³ clusterAdmin
ãªãã·ã§ã³ã§åãå
¥ãããããŠãŒã¶ãŒåã®åœ¢åŒã¯ãæšæºã® MySQL ã¢ã«ãŠã³ãå圢åŒã«åŸããŸããã¢ã«ãŠã³ãåã®æå® ãåç
§ããŠãã ããã
èªåãæäœã®ã¿ãå¿ èŠãªå Žå (ç£èŠç®çãªã©)ãããå¶éãããæš©éãæã€ã¢ã«ãŠã³ãã䜿çšã§ããŸãã AdminAPI ã®ãŠãŒã¶ãŒã®æ§æãåç §ããŠãã ããã
æ¬çªãããã€ã¡ã³ãã䜿çšããå Žåã¯ãMySQL Shell ã®åé·ãã®ã³ã°ãæ§æãããšäŸ¿å©ã§ãã ããšãã°ããã°å
ã®æ
å ±ã¯ãInnoDB ã¯ã©ã¹ã¿ ã®äžéšãšããŠæ©èœããããã«ãµãŒããŒã€ã³ã¹ã¿ã³ã¹ãæºåããéã«çºçããå¯èœæ§ã®ããåé¡ãèŠã€ããŠè§£æ±ºããã®ã«åœ¹ç«ã¡ãŸãã åé·ãã®ã³ã°ã¬ãã«ã§ MySQL Shell ãèµ·åããã«ã¯ã--log-level
ãªãã·ã§ã³ã䜿çšããŸã:
shell> mysqlsh --log-level=DEBUG3
DEBUG3
ã¬ãã«ããèŠãããŸãã詳现ã¯ã--log-level
ãåç
§ããŠãã ããã DEBUG3
ãèšå®ãããŠããå ŽåãMySQL Shell ãã°ãã¡ã€ã«ã«ã¯ãå AdminAPI ã³ãŒã«ã®äžéšãšããŠå®è¡ããã SQL ã¯ãšãªãŒãå«ã Debug: execute_sql( ... )
ãªã©ã®è¡ãå«ãŸããŸãã MySQL Shell ã«ãã£ãŠçæããããã°ãã¡ã€ã«ã¯ãUnix ããŒã¹ã®ã·ã¹ãã ã®å Žå㯠~/.mysqlsh/mysqlsh.log
ã«ãããMicrosoft Windows ã·ã¹ãã ã®å Žå㯠%APPDATA%\MySQL\mysqlsh\mysqlsh.log
ã«ãããŸãã 詳ããã¯ç¬¬9ç« ãMySQL Shell ã®ãã®ã³ã°ããã³ãããã°ããã芧ãã ããã
MySQL Shell ãã°ã¬ãã«ã®æå¹åã«å ããŠãåã³ãã³ãã®çºè¡åŸã« AdminAPI ã MySQL Shell ã§æäŸããåºåéãæ§æã§ããŸãã AdminAPI åºåã®éãæå¹ã«ããã«ã¯ãMySQL Shell ã§æ¬¡ã®ã³ãã³ããçºè¡ããŸã:
mysql-js> dba.verbose=2
ããã«ãããAdminAPI ã³ãŒã«ããã®æå€§åºåãå¯èœã«ãªããŸãã 䜿çšå¯èœãªåºåã¬ãã«ã¯æ¬¡ã®ãšããã§ã:
ããã©ã«ã㯠0 ãŸã㯠OFF ã§ãã ããã¯æå°éã®åºåãæäŸãããã©ãã«ã·ã¥ãŒãã£ã³ã°ãè¡ããªãå Žåã«æšå¥šãããã¬ãã«ã§ãã
1 ãŸã㯠ON ãæå®ãããšãåã³ãŒã«ãã AdminAPI ã«åé·åºåã远å ãããŸãã
2 ã¯ãAdminAPI ãžã®åã³ãŒã«ã®å®è¡å 容ã«é¢ããå®å šãªæ å ±ãæäŸãããããã°åºåãåé·åºåã«è¿œå ããŸãã
MySQL Shell ã§ã¯ããªãã·ã§ã³ã§ãAdminAPI æäœã§äœ¿çšããã SQL ã¹ããŒãã¡ã³ãããã°ã«èšé²ã§ã (ãµã³ãããã¯ã¹æäœãé€ã)ãå®è¡æã«ç«¯æ«ã«è¡šç€ºããããšãã§ããŸãã ãããè¡ãããã« MySQL Shell ãæ§æããã«ã¯ãã»ã¯ã·ã§ã³9.3ãAdminAPI æäœã®ãã®ã³ã°ã ãåç §ããŠãã ããã
åäžãã©ã€ã㪠InnoDB ã¯ã©ã¹ã¿ ãŸã㯠InnoDB ReplicaSet ã䜿çšããŠããå Žåã¯ãæ§æã®å€æŽãã¡ã¿ããŒã¿ã«æžã蟌ãããšãã§ããããã«ã管çã¿ã¹ã¯ã®ããã«ãã©ã€ããªã€ã³ã¹ã¿ã³ã¹ã«æ¥ç¶ããå¿ èŠããããŸãã çŸåšã®ãã©ã€ããªãæ€çŽ¢ããã«ã¯ãæ¬¡ã®æé ãå®è¡ããŸã:
MySQL Shell ã®èµ·åæã«
--redirect-primary
ãªãã·ã§ã³ã䜿çšããŠãã¿ãŒã²ãããµãŒããŒã InnoDB ã¯ã©ã¹ã¿ ãŸã㯠InnoDB ReplicaSet ã®äžéšã§ããããšã確èªããŸãã ã¿ãŒã²ããã€ã³ã¹ã¿ã³ã¹ããã©ã€ããªã§ãªãå ŽåãMySQL Shell ã¯ãã©ã€ããªãæ€çŽ¢ããŠããã«æ¥ç¶ããŸãã-
ã¿ãŒã²ããã€ã³ã¹ã¿ã³ã¹ãã¯ã©ã¹ã¿ãŸã㯠ReplicaSet ã«å±ããŠãããã©ããããã§ãã¯ãã
shell.connectToPrimary([
æäœ (ããŒãžã§ã³ 8.0.20 ã§è¿œå ) ã䜿çšããŸãã ãã®å ŽåãMySQL Shell ã¯ãã©ã€ããªã«å¯ŸããŠæ°ããã»ãã·ã§ã³ãéããã¢ã¯ãã£ããªã°ããŒãã« MySQL Shell ã»ãã·ã§ã³ã確ç«ãããã»ãã·ã§ã³ã«èšå®ããŠæ»ããŸããinstance
,password
])instance
ãæå®ãããŠããªãå Žåãæäœã¯ã¢ã¯ãã£ããªã°ããŒãã« MySQL Shell ã»ãã·ã§ã³ã®äœ¿çšã詊ã¿ãŸããinstance
ãæå®ãããŠããããã¢ã¯ãã£ããªã°ããŒãã« MySQL Shell ã»ãã·ã§ã³ããªãå Žåã¯ãäŸå€ãã¹ããŒãããŸãã ã¿ãŒã²ããã€ã³ã¹ã¿ã³ã¹ãã¯ã©ã¹ã¿ãŸã㯠ReplicaSet ã«å±ããŠããªãå Žåãæäœã¯ãšã©ãŒã§å€±æããŸãã ã¹ããŒã¿ã¹æäœã䜿çšããŠãçµæã§ãã©ã€ããªãæ€çŽ¢ãããã®ã€ã³ã¹ã¿ã³ã¹ã«æåã§æ¥ç¶ããŸãã
ãã®ã»ã¯ã·ã§ã³ã«ç€ºã察話åã¢ãŒãã«å ããŠãMySQL Shell ã§ã¯ batch mode ã§ã®ã¹ã¯ãªããã®å®è¡ããµããŒããããŠããŸãã ããã«ãããMySQL Shell --file
ãªãã·ã§ã³ã䜿çšããŠå®è¡ã§ãã JavaScript ãŸã㯠Python ã§èšè¿°ãããã¹ã¯ãªããã䜿çšããŠãAdminAPI ã䜿çšããããã»ã¹ãèªååã§ããŸãã äŸ:
shell> mysqlsh --file setup-innodb-cluster.js
ã¹ã¯ãªãããã¡ã€ã«åã®åŸã«æå®ãããã³ãã³ãã©ã€ã³ãªãã·ã§ã³ã¯ãMySQL Shell ã§ã¯ãªãã¹ã¯ãªããã«æž¡ãããŸãã ãããã®ãªãã·ã§ã³ã«ã¯ãJavaScript ã® os.argv
é
åãŸã㯠Python ã® sys.argv
é
åã䜿çšããŠã¢ã¯ã»ã¹ã§ããŸãã ã©ã¡ãã®å Žåããé
åã§æåã«éžæããããªãã·ã§ã³ã¯ã¹ã¯ãªããåã§ãã
ã¹ã¯ãªãããã¡ã€ã«ã®äŸã®å å®¹ãæ¬¡ã«ç€ºããŸã:
print('InnoDB ã¯ã©ã¹ã¿ sandbox set up\n');
print('==================================\n');
print('Setting up a MySQL InnoDB Cluster with 3 MySQL Server sandbox instances,\n');
print('installed in ~/mysql-sandboxes, running on ports 3310, 3320 and 3330.\n\n');
var dbPass = shell.prompt('Please enter a password for the MySQL root account: ', {type:"password"});
try {
print('\nDeploying the sandbox instances.');
dba.deploySandboxInstance(3310, {password: dbPass});
print('.');
dba.deploySandboxInstance(3320, {password: dbPass});
print('.');
dba.deploySandboxInstance(3330, {password: dbPass});
print('.\nSandbox instances deployed successfully.\n\n');
print('Setting up InnoDB Cluster...\n');
shell.connect('root@localhost:3310', dbPass);
var cluster = dba.createCluster("prodCluster");
print('Adding instances to the Cluster.');
cluster.addInstance({user: "root", host: "localhost", port: 3320, password: dbPass});
print('.');
cluster.addInstance({user: "root", host: "localhost", port: 3330, password: dbPass});
print('.\nInstances successfully added to the Cluster.');
print('\nInnoDB Cluster deployed successfully.\n');
} catch(e) {
print('\nThe InnoDB Cluster could not be created.\n\nError: ' +
+ e.message + '\n');
}
AdminAPI ã¯ãMySQL Shell ã»ã¯ã·ã§ã³5.8ãAPI ã³ãã³ãã©ã€ã³ã€ã³ã¿ãã§ãŒã¹ã ã§ããµããŒããããŸãã ããã«ãããAdminAPI ãç°å¢ã«ç°¡åã«çµ±åã§ããŸãã ããšãã°ãããŒã 1234 ã§ãªã¹ãã³ã°ããŠãããµã³ãããã¯ã¹ã€ã³ã¹ã¿ã³ã¹ã䜿çšã㊠InnoDB ã¯ã©ã¹ã¿ ã®ã¹ããŒã¿ã¹ã確èªããã«ã¯ã次ã®ããã«ããŸã:
$ mysqlsh root@localhost:1234 -- cluster status
ããã¯ãMySQL Shell ã®åçã®ã³ãã³ãã«ããããããŸã:
mysql-js> cluster.status()