Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

MySQL InnoDB Cluster and MySQL Group Replication @HKOSC 2017

325 views

Published on

MySQL Group Replication in MySQL InnoDB Cluster presented during Hong Kong Open Source Conference 2017

  • Be the first to comment

  • Be the first to like this

MySQL InnoDB Cluster and MySQL Group Replication @HKOSC 2017

  1. 1. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | https://www.facebook.com/groups/hkmysqlusergroup/
  2. 2. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | MySQL Group Replication Deep Dive 马楚成 (Ivan Ma) ivan-cs.ma@oracle.com 2017-06-10
  3. 3. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 22y Constant improvements of MySQL as a relational database. 3 JSON Functions Stored Procedures Async Replication Semi-Sync Replication Group Replication Foreign Keys Performance Schema Multi-Triggers Partitioning Sub-queriesDocument Store Prepared Statements R-Trees B-Trees Row-based Replication Plugin API Event Scheduler Unicode Full-Text Search Enterprise Monitor WorkbenchInnoDB
  4. 4. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 4 Scale-Out High Performance Ease-of-Use Built-in HA Out-of-Box Solution Everything Integrated MySQL InnoDB cluster GA
  5. 5. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | MySQL Connector Application MySQL Router MySQL Connector Application MySQL Router MySQL Shell MySQL Connector Application MySQL Router MySQL Connector Application MySQL Router MySQL InnoDB Cluster: High Level Architecture MySQL InnoDB cluster MySQL Enterprise Monitor … 5
  6. 6. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | MySQL InnoDB Cluster: Internal Architecture M M M MySQL Connector Application MySQL Router MySQL Connector Application MySQL Router MySQL Shell HA Group Replication 6
  7. 7. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | InnoDB Cluster 7 App Servers with MySQL Router MySQL Group Replication MySQL Shell Setup, Manage, Orchestrate “High Availability becomes a core first class feature of MySQL!”
  8. 8. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | MySQL Group Replication Natively distributed and highly available replica sets
  9. 9. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | MySQL Group Replication: What Is It? • Group Replication library – Implementation of Replicated Database State Machine theory • MySQL GCS is based on our home-grown Paxos implementation – Provides virtually synchronous replication for MySQL 5.7+ • Guarantees eventual consistency – Supported on all MySQL platforms • Linux, Windows, Solaris, OSX, FreeBSD “Multi-master update anywhere replication plugin for MySQL with built-in conflict detection and resolution, automatic distributed recovery, and group membership.” 9 App Servers with MySQL Router MySQL Group Replication MySQL Shell Setup, Manage, Orchestrate
  10. 10. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 10 MySQL Server: Full Stack
  11. 11. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | MySQL Server: Group Replication Plugin • The plugin is responsible for – Maintaining distributed execution context – Detecting and handling conflicts – Handling distributed recovery • Detect membership changes • Donate state if needed • Collect state if needed – Proposing transactions to other members – Receiving and handling transactions from other members – Deciding the ultimate fate of transactions • commit or rollback 11 GCS API Replication Plugin Plugin API MySQL Server Group Comm. System (Corosync) Group Com. Engine
  12. 12. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | MySQL Server: GCS • The communication API (and binding) is responsible for: – Abstracting the underlying group communication system implementation from the plugin itself – Mapping the interface to a specific group communication system implementation • The Group Communication System engine: – Variant of Paxos developed at MySQL – Building block to provide distributed agreement between servers 12 GCS API Replication Plugin Plugin API MySQL Server Group Comm. System (Corosync) Group Com. Engine
  13. 13. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | MySQL Router Transparent application connection routing
  14. 14. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | MySQL Router • Transparent client connection routing – Load balancing – Application connection failover • Stateless design offers easy HA client routing – A local Router becomes part of the application stack ”MySQL Router allows you to easily migrate your standalone MySQL instances to natively distributed and highly available InnoDB clusters without affecting existing applications!” 14 Transparent access to HA databases for MySQL Applications App Servers with MySQL Router MySQL Group Replication MySQL Shell Setup, Manage, Orchestrate
  15. 15. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | MySQL Router: 2.1 • Native support for InnoDB clusters – Understands Group Replication topology – Utilizes metadata schema stored on each member • Bootstraps itself and sets up client routing for the InnoDB cluster • Allows for intelligent client routing into the InnoDB cluster – Supports multi-master and single primary modes • Core improvements – Built-in keyring for easy and secure password management 15 App Servers with MySQL Router MySQL Group Replication MySQL Shell Setup, Manage, Orchestrate ”MySQL Router 2.1, with the new metadata_cache plugin, provides transparent client connection routing and failover into your InnoDB clusters!”
  16. 16. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | MySQL Shell Single tool for development, setup, management, orchestration, and monitoring
  17. 17. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | MySQL Shell 17 A single unified client for all administrative and operations tasks App Servers with MySQL Router MySQL Group Replication MySQL Shell Setup, Manage, Orchestrate • Multi-Language: JavaScript, Python, and SQL – Naturally scriptable • Supports both Document and Relational models • Exposes full Development and Admin API ”MySQL Shell provides the developer and DBA with a single intuitive, flexible, and powerful interface for all MySQL related tasks!”
  18. 18. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | MySQL Shell: Admin API • mysql-js> dba.help() • The global variable 'dba' is used to access the MySQL AdminAPI • Perform DBA operations – Manage MySQL InnoDB clusters • Create clusters • Validate MySQL instances • Configure MySQL instances • Get cluster info • Modify clusters Database Administration Interface App Servers with MySQL Router MySQL Group Replication MySQL Shell Setup, Manage, Orchestrate 18
  19. 19. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | MySQL Enterprise Monitor • Native holistic support for Group Replication / InnoDB clusters (GA in 3.4!) – Topology views – Detailed metrics and graphs – Best Practice advice 19 GA
  20. 20. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | More … Saturday, December 10, 2016
  21. 21. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Demonstration 21 MySQL Shell MySQL InnoDB cluster Wordpress MySQL MySQL MySQL MySQL Router
  22. 22. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | MySQL Shell 22
  23. 23. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | MySQL Shell – dba.help(); 23
  24. 24. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | MySQL Shell – dba.help(‘deploySandboxInstance’); • dba.deploySandboxInstance(‘3310’); 24 mysql-js> dba.deploySandboxInstance(3310); A new MySQL sandbox instance will be created on this host in /home/mysql/mysql-sandboxes/3310 Please enter a MySQL root password for the new instance: Deploying new MySQL instance... Instance localhost:3310 successfully deployed and started. Use shell.connect('root@localhost:3310'); to connect to the instance.
  25. 25. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Adding more MySQL Instances • dba.deploySandboxInstance(3310); • dba.deploySandboxInstance(3320); • dba.deploySandboxInstance(3330); 25 mysql-js> dba.checkInstanceConfiguration(3310); Invalid connection options, expected either a URI or a Dictionary (ArgumentError) mysql-js> dba.checkInstanceConfiguration('localhost:3310'); Please provide the password for 'root@localhost:3310': Validating instance... The instance 'localhost:3310' is valid for Cluster usage { "status": "ok" }
  26. 26. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | MySQL Shell Creating the MySQL InnoDB Cluster • Connecting to Live Instance e.g. mysql-js>connect localhost:3310 • Creating the Cluster e.g. mysql-js>var cluster = dba.createCluster(‘mycluster’) 26 mysql-js> c localhost:3310 Creating a Session to 'root@localhost:3310' Enter password: Classic Session successfully established. No default schema selected. mysql-js> var cluster = dba.createCluster('mycluster'); A new InnoDB cluster will be created on instance 'root@localhost:3310'. Creating InnoDB cluster 'mycluster' on 'root@localhost:3310'... Adding Seed Instance... Cluster successfully created. Use Cluster.addInstance() to add MySQL instances. At least 3 instances are needed for the cluster to be able to withstand up to one server failure.
  27. 27. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | MySQL Shell Checking Cluster’s status and adding new members to the Cluster 27 mysql-js> cluster.addInstance('localhost:3320'); A new instance will be added to the InnoDB cluster. Depending on the amount of data on the cluster this might take from a few seconds to several hours. Please provide the password for 'root@localhost:3320': Adding instance to the cluster ... The instance 'root@localhost:3320' was successfully added to the cluster. mysql-js> cluster.addInstance('localhost:3330'); A new instance will be added to the InnoDB cluster. Depending on the amount of data on the cluster this might take from a few seconds to several hours. Please provide the password for 'root@localhost:3330': Adding instance to the cluster ... The instance 'root@localhost:3330' was successfully added to the cluster.
  28. 28. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 28
  29. 29. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | MySQL Shell dba.configureLocalInstance(uri) 29 mysql-js> dba.configureLocalInstance('localhost:3310'); Please provide the password for 'root@localhost:3310': Detected as sandbox instance. Validating MySQL configuration file at: /home/mysql/mysql- sandboxes/3310/my.cnf Validating instance... The instance 'localhost:3310' is valid for Cluster usage You can now use it in an InnoDB Cluster. { "status": "ok" } mysql-js> dba.configureLocalInstance('localhost:3320'); Please provide the password for 'root@localhost:3320': Detected as sandbox instance. Validating MySQL configuration file at: /home/mysql/mysql- sandboxes/3320/my.cnf Validating instance... The instance 'localhost:3320' is valid for Cluster usage You can now use it in an InnoDB Cluster. { "status": "ok" } mysql-js>
  30. 30. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | SandboxInstances • E.g. MySQL configuration file : /home/mysql/mysql-sandboxes/3310/my.cnf • dba.configureLocalInstance(uri) – [mysql@virtual-41 3310]$ ll my.cnf* – -rw------- 1 mysql mysql 2376 May 31 17:04 my.cnf – -rw-rw-r-- 1 mysql mysql 882 May 31 17:04 my.cnf.20170531-170412 30
  31. 31. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Persist configuration - dba.configureLocalInstance(uri) 31
  32. 32. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | https://www.facebook.com/groups/hkmysqlusergroup/
  33. 33. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Questions Thank You

×