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.

2019 BGOUG Autumn MySQL Clone

535 views

Published on

introduction of the MySQL clone plugin: a new and improved way to clone your MySQL instances

Published in: Software

2019 BGOUG Autumn MySQL Clone

  1. 1. Georgi “Joro” Kodinov Software Development Director MySQL Server Team Nov, 2019 MySQL Clone A better way to migrate databases 1 © 2019 Oracle
  2. 2. Safe harbor statement The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, timing, and pricing of any features or functionality described for Oracle’s products may change and remains at the sole discretion of Oracle Corporation. 2 © 2019 Oracle
  3. 3. What is MySQL Clone ? A simple and efficient way to create a MySQL instance replica © 2019 Oracle3
  4. 4. WhyYet Another Method ? • It’s easy to use: a single command • It’s a data snapshot with consistent GTID and binary log position • Data can be cloned locally or from remote • It’s resumable ! © 2019 Oracle4
  5. 5. It’s FASTER Too ! 5 https://mydbops.wordpress.com/2019/11/14/ mysql-clone-plugin-speed-test/ 2 servers CPU: 2 Cores RAM: 4 GB DISK: 200 GB SSD approx. 122.40 GB data from sysbench
  6. 6. Clone: Use Cases © 2019 Oracle6
  7. 7. Provision a new replication node © 2019 Oracle7 Master Slave Slave 2
  8. 8. Re-provision a returning node © 2019 Oracle8 BinlogMaster SlaveData ??
  9. 9. Clone: Operation © 2019 Oracle9
  10. 10. Terminology © 2019 Oracle10 Donor RecipientData
  11. 11. Prerequisites on the Donor • Install the plugin: INSTALL PLUGIN clone SONAME 'mysql_clone.so'; • Grant BACKUP_ADMIN to a user account CREATE USER foo …; GRANT BACKUP_ADMIN TO foo; © 2019 Oracle11
  12. 12. Prerequisites on the Recipient • Install the plugin: INSTALL PLUGIN clone SONAME 'mysql_clone.so'; • Grant CLONE_ADMIN to a user account CREATE USER bar …; GRANT CLONE_ADMIN TO bar; • Allow the donor host SET GLOBAL clone_valid_donor_list='donor_computer:3306'; © 2019 Oracle12
  13. 13. On the recipient, as “bar” CLONE INSTANCE FROM foo@donor_computer:3306 IDENTIFIED BY 'foo_pwd‘ DATA DIRECTORY = 'clone_dir' REQUIRE SSL © 2019 Oracle13
  14. 14. Clone: What Has Just Happened ? © 2019 Oracle14
  15. 15. Clone Stages © 2019 Oracle15 Init Data Files File Copy Modified Page IDs Page Copy Redo Logs Redo Copy Done
  16. 16. Clone: Network Failure Recovery © 2019 Oracle16 Donor RecipientData Less than 5 min
  17. 17. Clone Monitoring: performance_schema.clone_status mysql> SELECT STATE FROM performance_schema.clone_status; +-----------+ | STATE | +-----------+ | Completed | +-----------+ © 2019 Oracle17
  18. 18. Clone Monitoring: performance_schema.clone_progress mysql> SELECT STAGE, STATE, END_TIME FROM performance_schema.clone_progress; +-----------+-----------+----------------------------+ | stage | state | end_time | +-----------+-----------+----------------------------+ | DROP DATA | Completed | 2019-10-27 14:45:43.141261 | | FILE COPY | Completed | 2019-10-27 14:45:44.457572 | | PAGE COPY | Completed | 2019-10-27 14:45:44.577330 | | REDO COPY | Completed | 2019-10-27 14:45:44.679570 | | FILE SYNC | Completed | 2019-10-27 14:45:44.918547 | | RESTART | Completed | 2019-10-27 14:45:48.583565 | | RECOVERY | Completed | 2019-10-27 14:45:49.626595 | +-----------+-----------+----------------------------+ © 2019 Oracle18
  19. 19. Performance And Resource Use Control Variable Type Meaning clone_max_concurrency Int (Maximum) number of cloning threads clone_autotune_concurrency Bool Enable dynamic spawning of cloning threads clone_max_network_bandwidth Int, Mbps (recipient only) limit network usage clone_max_data_bandwidth Int, Mbps (recipient only) limit clone transfer rate © 2019 Oracle19
  20. 20. Clone Limitations • Does not clone configuration values • Does not clone binary logs • Supports only InnoDB • Blocks all concurrent DDLs on the Donor • Will FULLY override recipient data • Cloning can be done only to the SAME server version • Doesn’t work over the X protocol © 2019 Oracle20
  21. 21. Further Reading • Reference Manual • https://dev.mysql.com/doc/refman/8.0/en/clone-plugin.html • Blogs • https://mysqlserverteam.com/clone-create-mysql-instance-replica/ • https://mysqlhighavailability.com/mysql-innodb-cluster-automatic-node-provisioning • https://mysqlhighavailability.com/a-breakthrough-in-usability-automatic-node-provisioning • https://mysqlhighavailability.com/automatic-provisioning-in-group-replication • InnoDB cluster video • https://lefred.be/content/migrate-from-a-single-mysql-instance-to-mysql-innodb-cluster- using-clone-plugin/ © 2019 Oracle21
  22. 22. Thank you ! Georgi Kodinov, Software Development Director Georgi.Kodinov@oracle.com © 2019 Oracle22

×