mysql backup and recovery essentials

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

Upload: ronald-bradford

Post on 10-May-2015

3.444 views

Category:

Technology


2 download

DESCRIPTION

"Disaster is inevitable" and "To move forward you must first backup" should be known to all software developers. This presentation will discuss all the options for your valuable data assets in MySQL, and highlight how to maintain site reliability of your data

TRANSCRIPT

Page 1: MySQL Backup and Recovery Essentials

MySQL Backup & Recovery

Essentials

EffectiveMySQL.com - Performance, Scalability & Business Continuity

Ronald Bradfordhttp://ronaldbradford.com

Buenos Aires, Argentina2013-10

Page 2: MySQL Backup and Recovery Essentials

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)

Page 3: MySQL Backup and Recovery Essentials

EffectiveMySQL.com - Performance, Scalability & Business Continuity

Agenda

Backup Options

Tools available

Restore Options

Necessary Nomenclature

Business Requirements

Slides at http://j.mp/EM-BandR

Page 4: MySQL Backup and Recovery Essentials

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

Page 5: MySQL Backup and Recovery Essentials

EffectiveMySQL.com - Performance, Scalability & Business Continuity

Four StepOverview

Page 6: MySQL Backup and Recovery Essentials

EffectiveMySQL.com - Performance, Scalability & Business Continuity

Backup Basics

Static Consistent Backup

+

Master Binary Logs

1

Page 7: MySQL Backup and Recovery Essentials

EffectiveMySQL.com - Performance, Scalability & Business Continuity

Recovery Basics

Static Restore

+

Point in Time Recovery

2

Page 8: MySQL Backup and Recovery Essentials

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

Page 9: MySQL Backup and Recovery Essentials

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

Page 10: MySQL Backup and Recovery Essentials

EffectiveMySQL.com - Performance, Scalability & Business Continuity

"MySQL has no single unbreakable backup

solution [yet]."

Page 11: MySQL Backup and Recovery Essentials

EffectiveMySQL.com - Performance, Scalability & Business Continuity

B&R Options

Page 12: MySQL Backup and Recovery Essentials

EffectiveMySQL.com - Performance, Scalability & Business Continuity

B&R Options

Included

mysqldump

OS filecopy

OS Specific

filesystem snapshot

Open Source

XtraBackup

mydumper

Commercial

MEB

Page 13: MySQL Backup and Recovery Essentials

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.13schema_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

Page 14: MySQL Backup and Recovery Essentials

EffectiveMySQL.com - Performance, Scalability & Business Continuity

Backup Options

Pros

Included with MySQL server

ASCII output

SQL statement

Remote capabilities

mysqldump

Page 15: MySQL Backup and Recovery Essentials

EffectiveMySQL.com - Performance, Scalability & Business Continuity

Backup Options

Cons

Single threaded

Locking by default (*)

Slow restore for large DBs

Single threaded

mysqldump

Page 16: MySQL Backup and Recovery Essentials

EffectiveMySQL.com - Performance, Scalability & Business Continuity

Backup Options

Recommendations

Great for 5-10GB

No locking with InnoDB (*)

Essential for recording schema objects

mysqldump

Page 17: MySQL Backup and Recovery Essentials

EffectiveMySQL.com - Performance, Scalability & Business Continuity

Backup Options

$ time mysqldump --all-databases > /mysql/backup/dump1.sqlreal 1m31.631suser 1m12.533ssys 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

Page 18: MySQL Backup and Recovery Essentials

EffectiveMySQL.com - Performance, Scalability & Business Continuity

Restore Options

$ time mysql –u[user] -p -f < dump1.sql > dump1.out 2>&1 real 14m13.817suser 1m6.960ssys 0m1.516s$ echo $?0$ ls -l dump1.out-rw-rw-r-- 1 uid gid 0 2012-04-08 04:07 dump1.out

mysqldump USAGE

Page 19: MySQL Backup and Recovery Essentials

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

Page 20: MySQL Backup and Recovery Essentials

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

Page 21: MySQL Backup and Recovery Essentials

EffectiveMySQL.com - Performance, Scalability & Business Continuity

Backup Options

Pros

No software needed

Consistent

File Copy

Page 22: MySQL Backup and Recovery Essentials

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

Page 23: MySQL Backup and Recovery Essentials

EffectiveMySQL.com - Performance, Scalability & Business Continuity

Backup Options

Recommendations

Great for slaves

When access disabled

File Copy

Page 24: MySQL Backup and Recovery Essentials

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

Page 25: MySQL Backup and Recovery Essentials

EffectiveMySQL.com - Performance, Scalability & Business Continuity

Backup Options

Pros

Fastest

Database agnostic (*)

SNAPSHOT

Page 26: MySQL Backup and Recovery Essentials

EffectiveMySQL.com - Performance, Scalability & Business Continuity

Backup Options

Cons

Must be pre-configured (LVM)

Extra Disk I/O

Inconsistent (*)

FLUSH TABLES duration

SNAPSHOT

Page 27: MySQL Backup and Recovery Essentials

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

Page 28: MySQL Backup and Recovery Essentials

EffectiveMySQL.com - Performance, Scalability & Business Continuity

Backup Options

Pros

Non-blocking (InnoDB)

Open Source

Supports incremental, compression etc

XtraBACKUP

Page 29: MySQL Backup and Recovery Essentials

EffectiveMySQL.com - Performance, Scalability & Business Continuity

Backup Options

Cons

Blocking for non-InnoDB tables

XtraBACKUP

Page 30: MySQL Backup and Recovery Essentials

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/firstreal 2m30.667suser 0m21.933ssys 0m14.713s$ echo $?0

XtraBACKUP USAGE

Page 31: MySQL Backup and Recovery Essentials

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

Page 32: MySQL Backup and Recovery Essentials

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)

Page 33: MySQL Backup and Recovery Essentials

EffectiveMySQL.com - Performance, Scalability & Business Continuity

Backup Options

Cons

Warm for non-InnoDB

Cost

MySQL ENTERPRISE BACKUP (MEB)

Page 34: MySQL Backup and Recovery Essentials

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-logreal 3m30.879suser 0m17.081ssys 0m14.565s$ echo $?0$ du -sh /mysql/backup/meb/first5.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

Page 35: MySQL Backup and Recovery Essentials

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

Page 36: MySQL Backup and Recovery Essentials

EffectiveMySQL.com - Performance, Scalability & Business Continuity

Point in Time

Page 37: MySQL Backup and Recovery Essentials

EffectiveMySQL.com - Performance, Scalability & Business Continuity

Binary Logs

Possible with Binary Logs#my.cnf

[mysqld]log-bin=mysql-binexpire-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

Page 38: MySQL Backup and Recovery Essentials

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)

Page 39: MySQL Backup and Recovery Essentials

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

Page 40: MySQL Backup and Recovery Essentials

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

Page 41: MySQL Backup and Recovery Essentials

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

Page 42: MySQL Backup and Recovery Essentials

EffectiveMySQL.com - Performance, Scalability & Business Continuity

Advanced Features

Page 43: MySQL Backup and Recovery Essentials

EffectiveMySQL.com - Performance, Scalability & Business Continuity

Advanced

Compression

Incremental

Remote

Parallel

PartialFor another presentation

Page 44: MySQL Backup and Recovery Essentials

EffectiveMySQL.com - Performance, Scalability & Business Continuity

Compression

Utility Comp (s) Dec (s) Savinglzo (-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

Page 45: MySQL Backup and Recovery Essentials

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

Page 46: MySQL Backup and Recovery Essentials

EffectiveMySQL.com - Performance, Scalability & Business Continuity

Conclusion

Page 47: MySQL Backup and Recovery Essentials

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

Page 48: MySQL Backup and Recovery Essentials

EffectiveMySQL.com - Performance, Scalability & Business Continuity

PRESENTATIONS

http://ronaldbradford.com/mysql-presentations/http://effectivemysql.com/presentation/

More presentations at

Page 49: MySQL Backup and Recovery Essentials

220 pages dedicated to B&R

http://j.mp/EM-book2