MySQL and PostgreSQL Preparing for disaster …...Backup tips Save backup on a remote location! Keep...

30
Carlos Tutte, Support Engineer April 23, 2019 Preparing for disaster recovery on MySQL and PostgreSQL

Transcript of MySQL and PostgreSQL Preparing for disaster …...Backup tips Save backup on a remote location! Keep...

Page 1: MySQL and PostgreSQL Preparing for disaster …...Backup tips Save backup on a remote location! Keep latest backup copy on server for faster recovery Have logical+binary forms Test

Carlos Tutte, Support EngineerApril 23, 2019

Preparing for disaster recovery on MySQL and PostgreSQL

Page 2: MySQL and PostgreSQL Preparing for disaster …...Backup tips Save backup on a remote location! Keep latest backup copy on server for faster recovery Have logical+binary forms Test

www.percona.com

Agenda

● Introduction● Backups● HA● Load balancing● Monitoring● How to recover?● Conclusions● Questions

Page 3: MySQL and PostgreSQL Preparing for disaster …...Backup tips Save backup on a remote location! Keep latest backup copy on server for faster recovery Have logical+binary forms Test

www.percona.com

INTRODUCTION

Page 4: MySQL and PostgreSQL Preparing for disaster …...Backup tips Save backup on a remote location! Keep latest backup copy on server for faster recovery Have logical+binary forms Test

www.percona.com

Introduction

● What is the Recovery Time Objective (RTO)?

● What is the Recovery Point Objective (RPO)?

● What Risks should be mitigated?

Page 5: MySQL and PostgreSQL Preparing for disaster …...Backup tips Save backup on a remote location! Keep latest backup copy on server for faster recovery Have logical+binary forms Test

www.percona.com

BACKUPS

Page 6: MySQL and PostgreSQL Preparing for disaster …...Backup tips Save backup on a remote location! Keep latest backup copy on server for faster recovery Have logical+binary forms Test

www.percona.com

Backup types

● Logical● Physical

○ Cold backup (offline)○ Hot backup (online)○ Warm backup

● Snapshot based● (Delayed) Replicas

Page 7: MySQL and PostgreSQL Preparing for disaster …...Backup tips Save backup on a remote location! Keep latest backup copy on server for faster recovery Have logical+binary forms Test

www.percona.com

Why to take backups?

● For system recovery● For auditing purposes● Migrations to new versions/hw ● Testing/QA performance● Create/restore other environments

Page 8: MySQL and PostgreSQL Preparing for disaster …...Backup tips Save backup on a remote location! Keep latest backup copy on server for faster recovery Have logical+binary forms Test

www.percona.com

Backups in MySQL:logical

● Mysqldumpmysqldump -u root -p --all-databases --master-data --single-transaction --routines --events --triggers --hex-blob > /path/to/backup.sql

● Mydumpermydumper -uroot -p -t 4 --trx-consistency-only --triggers --events --routines -o /path/to/dump/ -L /path/to/log/mydumper.log -v 3

● Mysqlpumpmysqlpump -u root -p --all-databases --default-parallelism=8 --single-transaction --routines --events --triggers --hex-blob > /path/to/backup.sql

● select….into outfile

Page 9: MySQL and PostgreSQL Preparing for disaster …...Backup tips Save backup on a remote location! Keep latest backup copy on server for faster recovery Have logical+binary forms Test

www.percona.com

Backups in MySQL: physical

● Percona Xtrabackup (PXB)xtrabackup --user=root --password=pass--backup --target-dir=/data/backups/

● MySQL enterprise backupmysqlbackup -uroot -ppass --backup_dir=/backup-dir/

● Rsync o cp

Page 10: MySQL and PostgreSQL Preparing for disaster …...Backup tips Save backup on a remote location! Keep latest backup copy on server for faster recovery Have logical+binary forms Test

www.percona.com

Backups in PostgreSQL:logical

● Pg_dumppg_dump -U root -W -F t database_name > /path/backup_file.tar

● Pg_dumpallpg_dumpall -U root > /path/backup.sql

Since 9.3, pg_dump is multi threaded

Page 11: MySQL and PostgreSQL Preparing for disaster …...Backup tips Save backup on a remote location! Keep latest backup copy on server for faster recovery Have logical+binary forms Test

www.percona.com

Backups in PostgreSQL:physical

● Pg_basebackuppg_basebackup -h mydbserver -D /path/to/backupdir/

● pgBackRestsudo -u postgres pgbackrest --stanza=demo --type=incr --log-level-console=info backup

● Barman barman backup server-namebarman receive-wal --create-slot server-name

● Rsync o cp

Page 12: MySQL and PostgreSQL Preparing for disaster …...Backup tips Save backup on a remote location! Keep latest backup copy on server for faster recovery Have logical+binary forms Test

www.percona.com

DB Agnostic: Binary logs

Binary logs (WAL = write ahead logs for Psql) are not a backups, but do contain executed statements and are needed for PITR (point in time recovery).

● This can be done with barman or pgbackrest in Psql

● In MySQL you need to use mysqlbinlog utility with --read-from-remote-server flag

Page 13: MySQL and PostgreSQL Preparing for disaster …...Backup tips Save backup on a remote location! Keep latest backup copy on server for faster recovery Have logical+binary forms Test

www.percona.com

Backup tips

● Save backup on a remote location!● Keep latest backup copy on server for faster

recovery● Have logical+binary forms● Test your backups!

● Logical backup of physical backup● Queries for referential integrity verification● Queries for index scanning

● Have enough binary logs

Page 14: MySQL and PostgreSQL Preparing for disaster …...Backup tips Save backup on a remote location! Keep latest backup copy on server for faster recovery Have logical+binary forms Test

www.percona.com

Backup tips cont

● Use incremental backups● Have incremental backups ready● Take backups from a replica● Have multiple backup copies in case data

was altered and change was not noticed

Page 15: MySQL and PostgreSQL Preparing for disaster …...Backup tips Save backup on a remote location! Keep latest backup copy on server for faster recovery Have logical+binary forms Test

www.percona.com

HIGH AVAILABILITY

High availability is a quality of a system or component that assures a high level of operational performance for a given period of time.

Page 16: MySQL and PostgreSQL Preparing for disaster …...Backup tips Save backup on a remote location! Keep latest backup copy on server for faster recovery Have logical+binary forms Test

www.percona.com

High Availability

Availability Max Downtime per year

90% 36.53 days

99% 3.65 days

99.9% 8.77 hours

99.99% 4.38 minutes

99.999% 26.30 seconds

Page 17: MySQL and PostgreSQL Preparing for disaster …...Backup tips Save backup on a remote location! Keep latest backup copy on server for faster recovery Have logical+binary forms Test

www.percona.com

Reasons for HA

Business won’t earn money if their servers are not working.

Common causes for unavailability:● Maintenance● Bugs/OS/HW problems● Human errors● Natural disasters● Electrical disruptions● Intentional damage

Page 18: MySQL and PostgreSQL Preparing for disaster …...Backup tips Save backup on a remote location! Keep latest backup copy on server for faster recovery Have logical+binary forms Test

www.percona.com

HA in MySQL

Only consider ROW binlog format● Async slave● Delayed slave● Semi sync slave● Virtually synchronous

○ Group Replication○ Percona XtraDB Cluster (PXC)

● DRBD replicationHot-standby vs cold-standby

Page 19: MySQL and PostgreSQL Preparing for disaster …...Backup tips Save backup on a remote location! Keep latest backup copy on server for faster recovery Have logical+binary forms Test

www.percona.com

HA in PostreSQL

● Streaming replication● Delayed replication● DRBD replicationHot-standby vs cold-standby

For Psql there is no native clustering Solution. It’s based on 3rd party software (Stolon, pgpool-II, pgBouncer) which monitores and load balances between many nodes

Page 20: MySQL and PostgreSQL Preparing for disaster …...Backup tips Save backup on a remote location! Keep latest backup copy on server for faster recovery Have logical+binary forms Test

www.percona.com

LOAD BALANCING

Load balancing have many uses but in the context of this talk, we use them as a way to redirect load to different servers in the cluster in case of failure

Page 21: MySQL and PostgreSQL Preparing for disaster …...Backup tips Save backup on a remote location! Keep latest backup copy on server for faster recovery Have logical+binary forms Test

www.percona.com

Load balancing products

● DB Agnostic HAProxy, F5 load balancer● MySQL: ProxySQL, MaxScale (MariaDB),

MySQL Router● Psql: Stolon, pgpool-II, pgBouncer

Page 22: MySQL and PostgreSQL Preparing for disaster …...Backup tips Save backup on a remote location! Keep latest backup copy on server for faster recovery Have logical+binary forms Test

www.percona.com

MONITORING

Page 23: MySQL and PostgreSQL Preparing for disaster …...Backup tips Save backup on a remote location! Keep latest backup copy on server for faster recovery Have logical+binary forms Test

www.percona.com

Monitoring

● Backup server disk space● Last backup state● Last backup verification test run● Binlog availability

Page 24: MySQL and PostgreSQL Preparing for disaster …...Backup tips Save backup on a remote location! Keep latest backup copy on server for faster recovery Have logical+binary forms Test

www.percona.com

HOW TO RECOVER?

Page 25: MySQL and PostgreSQL Preparing for disaster …...Backup tips Save backup on a remote location! Keep latest backup copy on server for faster recovery Have logical+binary forms Test

www.percona.com

How to recover?

● Load balancing to other nodes● Master-slave topologies: promote slave● Shared disk failover● Failover:

○ MySQL: MHA, Orchestrator○ Psql: Patroni, repmgr (replication

manager), PAF (Psql automatic failover) + pacemaker, pglookout

Page 26: MySQL and PostgreSQL Preparing for disaster …...Backup tips Save backup on a remote location! Keep latest backup copy on server for faster recovery Have logical+binary forms Test

www.percona.com

How to recover? cont

● Apply logs in delayed slave○ START SLAVE UNTIL

● Restore backups + PITR○ Apply binlogs from fake master

Page 27: MySQL and PostgreSQL Preparing for disaster …...Backup tips Save backup on a remote location! Keep latest backup copy on server for faster recovery Have logical+binary forms Test

www.percona.com

CONCLUSIONS

Page 28: MySQL and PostgreSQL Preparing for disaster …...Backup tips Save backup on a remote location! Keep latest backup copy on server for faster recovery Have logical+binary forms Test

www.percona.com

Conclusions

● For every server or system:○ Specify RTO and RPO○ Identify failure points (FP)○ Design recovery plan for every FP○ Implement HA and restore strategy○ Test and monitor everything!○ Automatize!

Page 29: MySQL and PostgreSQL Preparing for disaster …...Backup tips Save backup on a remote location! Keep latest backup copy on server for faster recovery Have logical+binary forms Test

www.percona.com

References

● MySQL reference manualhttps://dev.mysql.com/doc/refman/8.0/en/

● PostgreSQL reference manualhttps://www.postgresql.org/docs/

● Percona bloghttps://www.percona.com/blog/

● PMM demohttps://pmmdemo.percona.com

Page 30: MySQL and PostgreSQL Preparing for disaster …...Backup tips Save backup on a remote location! Keep latest backup copy on server for faster recovery Have logical+binary forms Test

www.percona.com

QUESTIONS?