Upgrading to MySQL 5.6 @ Scale

14 April 11:30AM - 12:20PM Ballroom E

#PerconaLive 2015

1

@TwitterDBA | Upgrading to MySQL 5.6 @ Scale Who am I?

• Jonah Berquist @hashtagjonah • Senior Administrator at

2

@TwitterDBA | Upgrading to MySQL 5.6 @ Scale Who am I?

• Tom Krouper @CaptainEyesight • Former Staff DBA at Twitter • MySQL DBA ~ 10 years

3

@TwitterDBA | Upgrading to MySQL 5.6 @ Scale Agenda

• Why Upgrade? • Infrastructure • Upgrade Process • Issues & Bugs • Status

4

@TwitterDBA | Upgrading to MySQL 5.6 @ Scale Why Upgrade?

• Online DDL • Compression • GTID • Parallel Replication • Performance Improvements • WebscaleSQL • General improvements

5

@TwitterDBA | Upgrading to MySQL 5.6 @ Scale 6

@TwitterDBA | Upgrading to MySQL 5.6 @ Scale Infrastructure Roost Cluster: • Clusters db.roost.master • Roles db.roost.slave.app db.roost.slave.analytics • Shards db.roost.standby db.roost.hub • Replication • Gizzard TBird Cluster: db.tbird.gizzard:000 db.tbird.gizzard:001

7

@TwitterDBA | Upgrading to MySQL 5.6 @ Scale #Replication

8

@TwitterDBA | Upgrading to MySQL 5.6 @ Scale #Gizzard

000

001

002

003

004

00n 9

@TwitterDBA | Upgrading to MySQL 5.6 @ Scale 10

@TwitterDBA | Upgrading to MySQL 5.6 @ Scale Upgrade Process

• Initial Testing/Benchmarking

11

@TwitterDBA | Upgrading to MySQL 5.6 @ Scale Upgrade Process

• Bake in process • Read Replicas • Gizzard Shard • Development Cluster

12

@TwitterDBA | Upgrading to MySQL 5.6 @ Scale Upgrade Process

http://ceilingcat.ninja • Tooling: Ansible

13

@TwitterDBA | Upgrading to MySQL 5.6 @ Scale Ansible

• http://www.ansible.com • Agentless (uses SSH)

• Upgrading multiple servers at once • Skip already upgraded boxes • Rules in place to deal with different roles • Verified upgrades

14

@TwitterDBA | Upgrading to MySQL 5.6 @ Scale Upgrade Process

• Replication Upgrades

15

@TwitterDBA | Upgrading to MySQL 5.6 @ Scale #Replication

16

@TwitterDBA | Upgrading to MySQL 5.6 @ Scale Upgrade Process

• Gizzard Upgrades

17

@TwitterDBA | Upgrading to MySQL 5.6 @ Scale #Gizzard

000

001

002

003

004

00n 18

@TwitterDBA | Upgrading to MySQL 5.6 @ Scale 19

@TwitterDBA | Upgrading to MySQL 5.6 @ Scale Issues & Bugs

• Replication breakage on 5.6.21 (Bug #19704825) • temporary tables were released too early

20

@TwitterDBA | Upgrading to MySQL 5.6 @ Scale Issues & Bugs

• Parallel Replication • multi-threaded slaves w/large events

21

@TwitterDBA | Upgrading to MySQL 5.6 @ Scale Issues & Bugs

• explicit_defaults_for_timestamp

22

@TwitterDBA | Upgrading to MySQL 5.6 @ Scale Issues & Bugs

• Query regression

23

@TwitterDBA | Upgrading to MySQL 5.6 @ Scale Issues & Bugs

• Buffer pool dump & restore (Twitter’s vs. 5.6)

24

@TwitterDBA | Upgrading to MySQL 5.6 @ Scale Issues & Bugs

• Backups done on 5.5 using LVM snapshots

25

@TwitterDBA | Upgrading to MySQL 5.6 @ Scale Issues & Bugs

• timestamp/datetime format change

26

@TwitterDBA | Upgrading to MySQL 5.6 @ Scale Issues & Bugs

• 5.0 client errors on 5.6 • SET OPTION SQL_QUOTE_SHOW_CREATE=1;

27

@TwitterDBA | Upgrading to MySQL 5.6 @ Scale 28

@TwitterDBA | Upgrading to MySQL 5.6 @ Scale Status

• ~80% of the hosts upgraded • mostly replicated clusters left to upgrade

29

@TwitterDBA | Upgrading to MySQL 5.6 @ Scale Status

• Using parallel replication and GTID on new shared cluster. • Still need to upgrade GTID on existing cluster in production • GTID upgrade done in test environment • Webscale Patches • Heartbeat issues

30

@TwitterDBA | Upgrading to MySQL 5.6 @ Scale Status

• Roll out compression

31

@TwitterDBA | Upgrading to MySQL 5.6 @ Scale 32

@TwitterDBA | Upgrading to MySQL 5.6 @ Scale #ThankYou

Tom Krouper Jonah Berquist @CaptainEyesight @hashtagjonah

MySQL at Twitter - 2015 15 April 4:30PM - 5:20PM Ballroom G

#Questions? 33

@TwitterDBA | Upgrading to MySQL 5.6 @ Scale