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

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

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

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?