Percona Live London 2014 - MySQL Backup Strategy @ IEDR

38
MySQL Backup Strategy @ IEDR Marcelo Altmann Oracle Certified Professional, MySQL 5 Database Administrator Oracle Certified Professional, MySQL 5 Developer Percona Live London – November 2014

Transcript of Percona Live London 2014 - MySQL Backup Strategy @ IEDR

Page 1: Percona Live London 2014 - MySQL Backup Strategy @ IEDR

MySQL Backup Strategy

@ IEDRMarcelo Altmann

Oracle Certified Professional, MySQL 5 Database Administrator

Oracle Certified Professional, MySQL 5 Developer

Percona Live London – November 2014

Page 2: Percona Live London 2014 - MySQL Backup Strategy @ IEDR

Who am I ?

MySQL Database Administrator @ IE Domain Registry (IEDR)

Student

Systems for Internet @ FEEVALE University

Oracle Certified Professional

MySQL 5 Database Administrator

MySQL 5 Developer

marceloaltmann.com

@altmannmarcelo

Page 3: Percona Live London 2014 - MySQL Backup Strategy @ IEDR

What IEDR Does ?

Manages the official country code top level domain for Ireland - .ie

Maintain the database of .ie registered domain names

MySQL 5.6

Mainly InnoDB

~80% reads

Page 4: Percona Live London 2014 - MySQL Backup Strategy @ IEDR

Backup Introduction – What for ?

Add new slave to your replication topology

Reproduce some bug on your labs

Point-in-time recovery

Disaster Recovery

Page 5: Percona Live London 2014 - MySQL Backup Strategy @ IEDR

Backup Introduction - Replication as backup

Replication is a backup, but not for all scenarios:

When is replication a backup ?

Physical file corruption

Any Master Server component fail ( RAM, Disk, Network, CPU )

Page 6: Percona Live London 2014 - MySQL Backup Strategy @ IEDR

Backup Introduction – Replication as backup

Including OS errors

Page 7: Percona Live London 2014 - MySQL Backup Strategy @ IEDR

Backup Introduction – When Replication doesn’t

works as a backup?

Application bugs

Someone hacks into your database server

Wrong admin commands like DELETE / UPDATE / DROP

Page 8: Percona Live London 2014 - MySQL Backup Strategy @ IEDR

Backup - Logical

Logical

Save information represented as logical structure ( CREATE DATABASE, CREATE

TABLE, INSERT )

Can be used to restore all databases, single database, single table

Slower than Physical

It's taken while MySQL is running

Done via mysqldump, mydumper, SELECT ... INTO OUTFILE

Page 9: Percona Live London 2014 - MySQL Backup Strategy @ IEDR

Backup - Physical

Raw copies of directory and files of database contents (copy of MySQL

datadir)

No selective restore

Faster than Logical

Done via OS copy commands, mysqlbackup, mysqlhotcopy, percona

xtrabackup

Page 10: Percona Live London 2014 - MySQL Backup Strategy @ IEDR

Backup life cycle

Backup (Logical)

Verify

Encrypt

Distribute

Restore

Backup (Physical)

Slave

Checksum

Page 11: Percona Live London 2014 - MySQL Backup Strategy @ IEDR

Backup - Infrastructure

Page 12: Percona Live London 2014 - MySQL Backup Strategy @ IEDR

Backup - Infrastructure

Page 13: Percona Live London 2014 - MySQL Backup Strategy @ IEDR

Logical Backup

Backup (Logical)

Verify

Encrypt

Distribute

Restore

Backup (Physical)

Slave

Checksum

Page 14: Percona Live London 2014 - MySQL Backup Strategy @ IEDR

Logical Backup

mysqldump

Store backup duration

Backup output of SHOW SLAVE STATUS\G

Verify exit status and last line of the dump

Page 15: Percona Live London 2014 - MySQL Backup Strategy @ IEDR

Logical Backup – exit status and last line

Backup (Logical)

Verify

Encrypt

Distribute

Restore

Backup (Physical)

Slave

Checksum

Page 16: Percona Live London 2014 - MySQL Backup Strategy @ IEDR

Logical Backup – exit status and last line

Page 17: Percona Live London 2014 - MySQL Backup Strategy @ IEDR

Logical Backup – exit status and last line

Page 18: Percona Live London 2014 - MySQL Backup Strategy @ IEDR

Logical Backup – Compress and Encrypt

Backup (Logical)

Verify

Encrypt

Distribute

Restore

Backup (Physical)

Slave

Checksum

Page 19: Percona Live London 2014 - MySQL Backup Strategy @ IEDR

Logical Backup – Compress and Encrypt

Change file permissions

Compress backup to save disk space (GZIP, BZIP2, …)

Encrypt your backups ( openssl )

Page 20: Percona Live London 2014 - MySQL Backup Strategy @ IEDR

Logical Backup – Compress and Encrypt

Page 21: Percona Live London 2014 - MySQL Backup Strategy @ IEDR

Distribute – Same Server

Backup (Logical)

Verify

Encrypt

Distribute

Restore

Backup (Physical)

Slave

Checksum

Page 22: Percona Live London 2014 - MySQL Backup Strategy @ IEDR

Distribute – Same Server

Page 23: Percona Live London 2014 - MySQL Backup Strategy @ IEDR

Distribute – Same DC

Page 24: Percona Live London 2014 - MySQL Backup Strategy @ IEDR

Distribute – Same Region

Page 25: Percona Live London 2014 - MySQL Backup Strategy @ IEDR

Distribute

Page 26: Percona Live London 2014 - MySQL Backup Strategy @ IEDR

Distribute

Send copy of your backups to different datacenter

Pay attention on the distance between datacenters – Natural Disasters!

scp / rsync

Keep copy for 1 week

Page 27: Percona Live London 2014 - MySQL Backup Strategy @ IEDR

Restore

Backup (Logical)

Verify

Encrypt

Distribute

Restore

Backup (Physical)

Slave

Checksum

Page 28: Percona Live London 2014 - MySQL Backup Strategy @ IEDR

Restore

Drop everything on MySQL restore instance

Restore dump

Check exit status of mysql command

Page 29: Percona Live London 2014 - MySQL Backup Strategy @ IEDR

Physical Backup – Fast Recovery

Backup (Logical)

Verify

Encrypt

Distribute

Restore

Backup (Physical)

Slave

Checksum

Page 30: Percona Live London 2014 - MySQL Backup Strategy @ IEDR

Physical Backup – Fast Recovery

Stop MySQL

Compress datadir

Encrypt file

Page 31: Percona Live London 2014 - MySQL Backup Strategy @ IEDR

Slave

Backup (Logical)

Verify

Encrypt

Distribute

Restore

Backup (Physical)

Slave

Checksum

Page 32: Percona Live London 2014 - MySQL Backup Strategy @ IEDR

Slave

Page 33: Percona Live London 2014 - MySQL Backup Strategy @ IEDR

Slave

Configure restore server as slave

Use --master-data

Use --relay-log-info-repository=TABLE

Use Relay_Master_Log_File and Exec_Master_Log_Pos from SHOW SLAVE STATUS

Use GTID

Page 34: Percona Live London 2014 - MySQL Backup Strategy @ IEDR

Checksum

Backup (Logical)

Verify

Encrypt

Distribute

Restore

Backup (Physical)

Slave

Checksum

Page 35: Percona Live London 2014 - MySQL Backup Strategy @ IEDR

Checksum

Verify data integrity between master and slaves

pt-table-checksum

Monitor time

Page 36: Percona Live London 2014 - MySQL Backup Strategy @ IEDR

Backup binlog - Point in time recovery

mysqlbinlog –-raw –-read-from-remote-server –-stop-never

Checksum master binlog and backup binlog

Compress

Encrypt

Page 37: Percona Live London 2014 - MySQL Backup Strategy @ IEDR

Audit Copy

Allows you to restore your database to any point in time

Grouped by month

First Logical and Physical backup of each month

All binary logs

Page 38: Percona Live London 2014 - MySQL Backup Strategy @ IEDR

Questions?

@altmannmarcelo

marceloaltmann.com