Slide 1

Slide 1 text

MySQL Backup & Recovery Essentials EffectiveMySQL.com - Performance, Scalability & Business Continuity Ronald Bradford http://ronaldbradford.com Buenos Aires, Argentina 2013-10

Slide 2

Slide 2 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity "No one cares if you can backup, only that you can restore." Adapted from W. Curtis Preston - Backup & Recovery (O'Reilly 2009)

Slide 3

Slide 3 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity Agenda Backup Options Tools available Restore Options Necessary Nomenclature Business Requirements Slides at http://j.mp/EM-BandR

Slide 4

Slide 4 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity ABOUT AUTHOR All time top MySQL blogger Published Author (4++ books) Oracle ACE Director MySQL community member of the year (2009 & 2013) 24 years of RDBMS experience,14 years with MySQL MySQL Inc (2006-2008) Oracle Corporation (1996-1999) Ronald Bradford

Slide 5

Slide 5 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity Four Step Overview

Slide 6

Slide 6 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity Backup Basics Static Consistent Backup + Master Binary Logs 1

Slide 7

Slide 7 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity Recovery Basics Static Restore + Point in Time Recovery 2

Slide 8

Slide 8 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity Verification Necessary at EVERY step Commands complete without error No errors in logs Results match expectations Approximate Precise 3

Slide 9

Slide 9 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity Testing “Testing is about trying to break your software, not checking that it works!” Ronald Bradford, circa 2006 4

Slide 10

Slide 10 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity "MySQL has no single unbreakable backup solution [yet]."

Slide 11

Slide 11 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity B&R Options

Slide 12

Slide 12 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity B&R Options Included mysqldump OS filecopy OS Specific filesystem snapshot Open Source XtraBackup mydumper Commercial MEB

Slide 13

Slide 13 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity EXAMPLE DB SELECT SUM(data_length+index_length)/1024/1024 AS total_mb, SUM(data_length)/1024/1024 AS data_mb, SUM(index_length)/1024/1024 AS index_mb, COUNT(DISTINCT table_schema) AS schema_cnt, COUNT(*) AS tables, CURDATE() AS today, VERSION() FROM information_schema.tables\G *************************** 1. row *************************** total_mb: 5344.63 data_mb: 4545.49 index_mb: 799.13 schema_cnt: 7 tables: 103 today: 2012-04-03 VERSION(): 5.1.61-0ubuntu0.11.10.1-log Available on GitHub with Effective MySQL: Backup and Recovery Book TIP: Your daily verification step should include this

Slide 14

Slide 14 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity Backup Options Pros Included with MySQL server ASCII output SQL statement Remote capabilities mysqldump

Slide 15

Slide 15 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity Backup Options Cons Single threaded Locking by default (*) Slow restore for large DBs Single threaded mysqldump

Slide 16

Slide 16 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity Backup Options Recommendations Great for 5-10GB No locking with InnoDB (*) Essential for recording schema objects mysqldump

Slide 17

Slide 17 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity Backup Options $ time mysqldump --all-databases > /mysql/backup/dump1.sql real 1m31.631s user 1m12.533s sys 0m10.893s $ echo $? 0 $ ls -lh /mysql/backup/dump1.sql -rw-rw-r-- 1 uid gid 2.9G 2012-04-03 03:04 /mysql/ backup/dump1.sql mysqldump USAGE TIP: Always time and record long running processes for verification

Slide 18

Slide 18 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity Restore Options $ time mysql –u[user] -p -f < dump1.sql > dump1.out 2>&1 real 14m13.817s user 1m6.960s sys 0m1.516s $ echo $? 0 $ ls -l dump1.out -rw-rw-r-- 1 uid gid 0 2012-04-08 04:07 dump1.out mysqldump USAGE

Slide 19

Slide 19 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity Backup Options $ mysqldump --all-databases --no-data \ > /mysql/backup/schema.sql $ mysqldump --all-databases --no-data --no-create-info \ --events --routines > /mysql/backup/objects.sql mysqldump USAGE TIP: Include daily dumps of database objects

Slide 20

Slide 20 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity Backup Options $ mysqldump --all-databases --no-data --no-create-info \ --events --routines > /mysql/backup/objects.sql mysqldump: Got error: 1142: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'cond_instances' when using LOCK TABLES $ echo $? 2 VERIFICATION TIP: Error checking is essential and easy to implement

Slide 21

Slide 21 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity Backup Options Pros No software needed Consistent File Copy

Slide 22

Slide 22 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity Backup Options Cons MySQL unavailable Not consistent (**) Time to warm server caches Restore must match configuration Must backup right files File Copy

Slide 23

Slide 23 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity Backup Options Recommendations Great for slaves When access disabled File Copy

Slide 24

Slide 24 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity Backup Options $ sudo service mysql stop # Ubuntu $ sudo /etc/init.d/mysqld stop # RHEL $ mkdir /mysql/backup/cp1 $ cp -r /var/lib/mysql /mysql/backup/cp1 $ echo $? $ cp /etc/mysql/my.cnf /mysql/backup/cp1 # Other directories? $ sudo service mysql start File Copy USAGE

Slide 25

Slide 25 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity Backup Options Pros Fastest Database agnostic (*) SNAPSHOT

Slide 26

Slide 26 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity Backup Options Cons Must be pre-configured (LVM) Extra Disk I/O Inconsistent (*) FLUSH TABLES duration SNAPSHOT

Slide 27

Slide 27 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity Backup Options $ sudo su - $ sync ; lvcreate -L1G -s -n dbsnapshot /dev/db/p0 $ mkdir -p /mnt/dbsnapshot $ mount -o ro /dev/db/dbsnapshot /mnt/dbsnapshot $ du -sh /mnt/dbsnapshot $ ls -al /mnt/dbsnapshot $ mkdir /mysql/backup/snapshot1 $ cp -r /mnt/dbsnapshot/* /mysql/backup/snapshot1 $ sudo su - $ mylvmbackup SNAPSHOT USAGE http://effectiveMySQL.com/article/configuring-a-new-hard-drive-for-lvm http://effectiveMySQL.com/article/using-mysql-with-lvm http://www.lenzg.net/mylvmbackup/ TIP: mylvmbackup does all the hard work

Slide 28

Slide 28 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity Backup Options Pros Non-blocking (InnoDB) Open Source Supports incremental, compression etc XtraBACKUP

Slide 29

Slide 29 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity Backup Options Cons Blocking for non-InnoDB tables XtraBACKUP

Slide 30

Slide 30 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity Backup Options $ time innobackupex --defaults-file=/etc/mysql/my.cnf \ --user=root --password=passwd --no-timestamp \ /mysql/backup/xtrabackup/first real 2m30.667s user 0m21.933s sys 0m14.713s $ echo $? 0 XtraBACKUP USAGE

Slide 31

Slide 31 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity restore Options $ sudo su – mysql $ sudo service mysql stop # Ubuntu $ sudo rm -rf /var/lib/mysql # data directory $ sudo mkdir -m /var/lib/mysql $ sudo chown mysql:mysql /var/lib/mysql $ time innobackupex --copy-back \ /mysql/backup/xtrabackup/first/ $ echo $? XtraBACKUP USAGE

Slide 32

Slide 32 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity Backup Options Pros Non Blocking (InnoDB) Commercial Support Supports incremental, compression etc media management software (MMS) Oracle Secure Backup (OSB) - SBT MySQL ENTERPRISE BACKUP (MEB)

Slide 33

Slide 33 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity Backup Options Cons Warm for non-InnoDB Cost MySQL ENTERPRISE BACKUP (MEB)

Slide 34

Slide 34 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity Backup Options $ sudo su - mysql $ time /opt/meb/bin/mysqlbackup --user=root \ --password=passwd \ --backup-dir=/mysql/backup/meb/first \ backup-and-apply-log real 3m30.879s user 0m17.081s sys 0m14.565s $ echo $? 0 $ du -sh /mysql/backup/meb/first 5.6G /mysql/backup/meb/first $ ls -lh /mysql/backup/meb/first/datadir/ibd* -rw-rw-r-- 1 uid gid 5.4G 2012-04-03 03:25 /mysql/ backup/meb/first/datadir/ibdata1 MEB USAGE

Slide 35

Slide 35 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity RESTORE Options $ sudo su – mysql $ sudo service mysql stop # Ubuntu $ sudo rm -rf /var/lib/mysql # data directory $ sudo mkdir -m /var/lib/mysql $ sudo chown mysql:mysql /var/lib/mysql $ time /opt/meb/bin/mysqlbackup \ --defaults-file=/etc/mysql/my.cnf \ --backup-dir=/mysql/backup/meb/first \ --innodb-log-files-in-group=2 copy-back $ echo $? MEB USAGE

Slide 36

Slide 36 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity Point in Time

Slide 37

Slide 37 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity Binary Logs Possible with Binary Logs #my.cnf [mysqld] log-bin=mysql-bin expire-logs-days=5 WARNING: If you care about your data, enable binary logging mysql> SHOW BINARY LOGS; +------------------+-----------+ | Log_name | File_size | +------------------+-----------+ | mysql-bin.019662 | 104857736 | | mysql-bin.019663 | 104857699 | | mysql-bin.019664 | 104857850 | $ ls -ltr /var/log/mysql | tail -rw-rw---- 1 mysql adm 104857736 2011-09-04 22:00 mysql-bin.019662 -rw-rw---- 1 mysql adm 104857699 2011-09-04 22:08 mysql-bin.019663

Slide 38

Slide 38 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity Backup Options cp rsync Slave --log-slave-updates DRBD - Disk Replicated Block Device mysqlbinlog --read-from-remote-server (New in 5.6)

Slide 39

Slide 39 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity Backup needs Static Backup Useless without Binary Log position mysql> SHOW MASTER STATUS\G File: mysql-bin.020616 Position: 63395562 Binlog_Do_DB: Binlog_Ignore_DB: WARNING: Can work on slave and provide the wrong information

Slide 40

Slide 40 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity Backup Needs $ mysqldump --master-data (or --dump-slave) CHANGE MASTER TO MASTER_HOST='10.0.0.1', MASTER_USER ='repl',MASTER_PASSWORD='******', MASTER_LOG_FILE= 'mysql-bin.000146', MASTER_LOG_POS=810715371; $ cat xtrabackup_binlog_info mysql-bin.000001 37522 $ grep binlog meta/backup_variables.txt binlog_position=mysql-bin.000017:5555 MEB Xtrabackup $ cat export-20120407-230027/metadata Log: mysql-bin.000017 Pos: 8328 mydumper

Slide 41

Slide 41 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity Restore Options mysqlbinlog MySQL replication $ mysqlbinlog /path/to/mysql-bin.000146 \ --start-position=810715371 | mysql -uroot -p $ mysqlbinlog /path/to/mysql-bin.000147 \ /path/to/mysql-bin.00148 ... etc | mysql -uroot -p

Slide 42

Slide 42 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity Advanced Features

Slide 43

Slide 43 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity Advanced Compression Incremental Remote Parallel Partial For another presentation

Slide 44

Slide 44 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity Compression Utility Comp (s) Dec (s) Saving lzo (-3) 21 34 48% pigz (-1) 43 33 64% pigz [-6] 105 25 69% gzip [-6] 232 78 69% bzip2 540 175 74% lzo (-9) 20m 82 58% lzma 58m 180 78% xz 59m 160 78% Depends greatly on data types

Slide 45

Slide 45 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity Terminology MTTD - Mean Time To Detect MTTR - Mean Time to Recover RPO - Recovery Point Objective RDO - Recovery Data Objective SLA - Service Level Agreement Determining business priorities is important for any strategy

Slide 46

Slide 46 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity Conclusion

Slide 47

Slide 47 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity CONCLUsiON This is an introduction Advance features are important Best option depends Replication is important in your strategy Test, Test, Test. - “Chaos Monkey” Slides at http://j.mp/EM-BandR

Slide 48

Slide 48 text

EffectiveMySQL.com - Performance, Scalability & Business Continuity PRESENTATIONS http://ronaldbradford.com/mysql-presentations/ http://effectivemysql.com/presentation/ More presentations at

Slide 49

Slide 49 text

220 pages dedicated to B&R http://j.mp/EM-book2

Slide 50

Slide 50 text

Ronald Bradford [email protected]