Назад | Перейти на главную страницу

Инкрементное резервное копирование Percona Xtrabackup на основе подготовленного полного резервного копирования

Я хочу создавать ежечасную резервную копию нашей базы данных MySQL в промежуточной системе с помощью Percona XtraBackup.

Можно ли подготовить $ BACKUPBASE, а затем использовать эту подготовленную базу резервных копий в качестве основы для следующего инкрементного резервного копирования (с использованием параметра incremental-lsn)?

В моих планах:

Чтобы быть более конкретным:

Нет, потому что вышеупомянутый --apply-log не обновляет LSN в xtrabackup_checkpoints, поэтому при каждом следующем инкрементном резервном копировании будут копироваться страницы, измененные с момента последнего полного резервного копирования. Это не то, чего вы хотите достичь

UPD

Для реализации вашего сценария вам потребуется:

  1. Сделайте полную резервную копию

    innobackupex --no-timestamp /path/full
    
  2. Сохраните последний LSN

    # cat /path/full/xtrabackup_checkpoints 
    backup_type = full-backuped
    from_lsn = 0
    to_lsn = 1887987291
    last_lsn = 1887987291
    compact = 0
    
    to_lsn=`grep to_lsn /path/full/xtrabackup_checkpoints | awk '{ print $3 }'`
    
  3. Применить журнал xtrabackup REDO

    innobackupex --apply-log --redo-only /path/full/
    
  4. Сделайте инкрементное резервное копирование

    innobackupex --no-timestamp --incremental /path/inc/ --incremental-lsn=$to_lsn
    
  5. Сохранить последний LSN

    # cat /path/inc/xtrabackup_checkpoints 
    backup_type = incremental
    from_lsn = 1887987291
    to_lsn = 1887987291
    last_lsn = 1887987291
    compact = 0
    
    to_lsn=`grep to_lsn /path/inc/xtrabackup_checkpoints | awk '{ print $3 }'`
    
  6. Применить добавочные изменения и журнал REDO

    innobackupex --apply-log --redo-only --incremental-dir=/path/inc /path/full/
    
  7. Удалить каталог с инкрементным резервным копированием

    rm -r  /path/inc
    

Повторите 4-7 раз, сколько вам нужно. / path / full будет содержать последнюю версию вашей базы данных.

Когда вы хотите восстановить базу данных

  1. Завершите применение журналов (= создать журнал REDO):

    innobackupex --apply-log /path/full
    
  2. Скопируйте резервную копию в datadir

    mv /path/full/* /var/lib/mysql
    
  3. Исправьте разрешения (убедитесь, что параметры в /path/full/backup-my.cnf такие же, как в /etc/my.cnf (/etc/mysql/my.cnf для Debian))

    chown -R mysql /var/lib/mysql
    
  4. Запустить MySQL

    /etc/init.d/mysql start