MySQL - Considération pour les sauvegardes

Cinq 5 principales considérations

  1. À quelle vitesse et à quel point voulez-vous que le processus de récupération MySQL soit facile?
    Recovery Point Objective (RPO) : définit à quel moment vous devez récupérer votre base de données.
    Recovery Time Objective (RTO) : définit le temps qu'il faudra pour récupérer la base de données.

  2. Quel sera l'impact du processus de sauvegarde MySQL sur votre service?
    L'impact en ressouces : CPU, RAM, disques (IO, espace).
    Le temps pour prendre la sauvegarde.
    ...tout ça = impact sur l'service.

  3. À quoi ressemblera votre configuration de sauvegarde? c'est-à-dire - quoi, où, quand et comment de la sauvegarde MySQL
    Nombre de BD.
    La taille des BD.
    Le type de base de données : InnoDB, MyISAM, NDB-MySQL...
    L'activité sur ces BD.
    La version du serveur de BD.

  4. Comment allez-vous gérer votre processus de sauvegarde et vos données sauvegardées?
    Automatisé (cron, service, ...)
    Quand?
    La fréquence?
    Commandes pre et post-backup. Le pre-backup pourrait vérifier s'il a assez d'espace disque avant de démarré.
    Chiffrement?
    Compression? Ce n'est probablement pas souhaitable dans notre cas.

  5. Quel type d'exigences de suivi, de rapport et de conformité votre entreprise doit-elle appliquer à votre implémentation de sauvegarde MySQL?
    Avec BeL on est correct.
    On a pas besoin de conformité pour les Zabbix, on ammasse que des données et métriques du système d'exploitation est ses services.

Cinq (5) logiciels/solutions

Ces logiciels sont classés par ordre de popularité et peuvent être utilisés seul ou aux côtés d'un autre.

  1. mysqldump

    Utilitaire fourni avec MySQL.
    Ajouter les arguments supplémentaires pour prendre aussi ceux de MySQL? Inclure ou pas "mysql".

mysqldump --single-transaction --all-databases | gzip - >full_backup.sql.gz
  1. Percona XtraBackup

    Percona XtraBackup supports natively incremental backups.
    The Percona XtraBackup tools provide a method of performing a hot backup of your MySQL data while the system is running.
    Percona XtraBackup is a free, online, open source, complete database backups solution for all versions of Percona Server for MySQL and MySQL®.
    Percona XtraBackup performs online non-blocking, tightly compressed, highly secure full backups on transactional systems so that applications remain fully available during planned maintenance windows.

xtrabackup --backup --parallel 4 --compress --target-dir /var/backup/   
  1. Volume Snapshots

    Pas disponible actuelllement sur la plus de nos serveurs (ext4).

mysql -e 'FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS; ! zfs snapshot -r mysqldata/mysql@my_first_snapshot'
  1. Au niveau des fichiers, cela implique d'arrêter le servive MySQL (et ceux connectés).

    C'est le plus impactant, mais le plus simple.

  2. MySQL Enterprise Backup

    C'est un logiciel d'Oracle, mais trop \$$$$.

*) Replication

Primary -> Secondary. Cela nous offre la possibilité de d'appliquer toutes les solutions désirées.

Observations et questions

  • Le temps pour prendre la sauvegarde est très longue (jusqu'à l'autre cédule).
  • La vitesse IO du stockage semble problématique sur certain Zabbix.
  • L'espace disque est très restreint sur certain serveur (solution: ajouter un autre disque soit pour mettre le backup ou y mettre la DB).
  • Est-ce qu'il faudrait mettre à jour xtrabackup sur certain serveur?

Exemple de type d'engins supportés par MySQL :

mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.12 sec)