Креирање резервна копија на MySQL со помош на алатката XtraBackup

Percona XtraBackup е алатка за топли резервни копии на базата на податоци MySQL,.

Кога креирате резервна копија на податоци, ниедна табела не е заклучена и вашиот систем продолжува да работи без никакви ограничувања.

XtraBackup 2.4 може да креира резервни копии од табелите InnoDBXtraDB и MyISAM на серверите MySQL 5.11, 5.5, 5.6 и 5.7, а исто така и на серверот Перкона за MySQL, с XtraDB.

Да се ​​работи со MySQL 8.x треба да се користи верзија XtraBackup 8.x. Оваа статија ќе зборува само за XtraBackup 2.4.

Главна предност XtraBackup е тоа што оваа алатка е погодна и за создавање резервни копии на високо оптоварени сервери и за системи со мал број трансакции.

Ако вкупната големина на вашите бази на податоци MySQL е значајна (десетици гигабајти), тогаш стандардната алатка mysqldump нема да ви дозволи брзо да креирате резервна копија, а враќањето на депонијата ќе потрае многу време.

Инсталација

Инсталација XtraBackup од складиштето apt Перкона.

Извршете ги следните команди последователно:

wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb

sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb

sudo apt-get update 

sudo apt-get install percona-xtrabackup-24

2. По инсталацијата, извршете ја командата xtrabackup -v. Бидејќи, важно е да бидете сигурни дека алатката работи правилно на серверот. Како резултат на тоа, нешто како ова ќе се прикаже на екранот:

xtrabackup: препознаени аргументи на серверот: - datadir=/var/lib/mysql - tmpdir=/tmp - server-id=1 - logbin=/var/log/mysql/mysql-bin.log - innodbbufferpoolsize=16384M - innodbfilepertable=1 - innodbflushmethod=Odirect — innodbflushlogattrxcommit=0xtrabackup верзија 2.4.20 базирана на MySQL сервер 5.7.26 Linux (x8664) (ID на ревизија: c8b4056)

Креирање резервна копија на MySQL со помош на алатката XtraBackup

Права, дозволи и привилегии за пристап 

XtraBackup треба да може:

  • Поврзете се со вашиот MySQL сервер.

  • Имајте права за пристап до директориумот datadir

  • Кога креирате резервна копија, имајте права за запишување на наведениот параметар цел-режија каталог.

Што е datadir?

datadir е директориумот каде серверот на базата на податоци MySQL, складира податоци. Сите бази на податоци, сите табели се таму. На повеќето дистрибуции на Линукс, стандардниот директориум е /var/lib/mysql.

Што е target-dir директориум?

цел-режија - Ова е директориумот каде што ќе се зачува резервната копија.

На корисникот на базата на податоци му требаат следните права за пристап до табелите и базите на податоци за да се направат резервни копии:

  • ПОВТОРИВАЈТЕ и ЗАКЛУЧЕТЕ ГИ ТАСИТЕ

  • КЛИЕНТ ЗА РЕПЛИКАЦИЈА

  • КРЕИРАЈ ПРОСТОР ЗА МАСЕНА

  • ПРОЦЕС

  • СУПЕР

  • КРЕАЦИЈА

  • INSERT

  • ИЗБЕРЕТЕ

Конфигурација 

Конфигурација XtraBackup направено со користење на опции кои се однесуваат исто како стандардните MySQL опции.

Што значи ова?

Конфигурациските параметри може да се наведат или на командната линија или во конфигурациската датотека DBMS, на пример во /тнк/мој.cnf.

Услужната алатка XtraBackup ги чита партициите по стартувањето [mysqld] и [xtrabackup] од конфигурациските датотеки на MySQL. Ова е направено така што алатката може да ги користи поставките на вашиот DBMS без да мора рачно да ги специфицира параметрите за време на секоја резервна копија.

На пример, вредноста datadir и некои параметри InnoDB Добиваме XtraBackup од конфигурацијата на вашиот DBMS.

Ако за да работи XtraBackup сакате да ги отфрлите параметрите што се во делот [mysqld], потоа само наведете ги во конфигурациската датотека во делот [xtrabackup]. Бидејќи тие ќе се читаат подоцна, нивниот приоритет ќе биде поголем.

Не треба да додавате никакви параметри my.cnf. Сите потребни параметри може да се наведат на командната линија. Обично единственото нешто што може погодно да се стави во делот [xtrabackup] твоето негово my.cnf е параметар target_dir, кој стандардно го одредува директориумот каде што ќе се поставуваат резервните копии. Но, ова е опционално.

Пример за одредување на патеката до директориумот со резервна копија во my.cnf:

[xtrabackup]
target_dir = /data/backups/mysql/

Скрипта за резервна копија

Можете да ја користите следнава скрипта за да креирате резервна копија:

#!/bin/bash

# Удаляем данные в каталоге бекапа
rm -rf /mysql/backup

# Cоздаём бекап
xtrabackup --user=xtrabackup 
 --password=xxxx_SECRET_xxxx 
 --backup 
 --target-dir=/mysql/backup

# Выполняем подготовку бекапа для развёртывания
xtrabackup --prepare --target-dir=/mysql/backup

# Создаём архив
tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-"$(date +%F-%H:%M:%S)".gz /mysql/backup

Што се случува за време на извршувањето на скриптата?

Пред сè, го бришеме (бришеме) директориумот во кој ќе ја зачуваме резервната копија:

rm -rf /mysql/backup.

Потоа, користејќи ја алатката XtraBackup креирајте резервна копија и зачувајте ја во /mysql/резервна копија/:

xtrabackup --user=xtrabackup --password=xxxxz1cYf95550Gc6xxxxxxxpE3rB03xxxx --backup --target-dir=/mysql/backup

Претходно, создадовме корисник во MySQL xtrabackup со потребните привилегии. Користење на параметарот target-dir го одредуваме директориумот каде што треба да се зачува резервната копија.

Важна точка!

Забележете ја линијата на сценариото:

xtrabackup --prepare --target-dir=/mysql/backup

Податоци за каталог /mysql/резервна копија не се конзистентни додека не се зготват. 

Факт е дека промените може да се случат при копирање датотеки. Операција xtrabackup --prepare --target-dir=/mysql/backup ги прави резервните податоци совршено конзистентни со текот на времето.

Операцијата за подготовка на податоци можете да ја извршите на која било машина. Нема потреба да го правите ова на серверот каде што се наоѓа изворниот DBMS. Можете да ја копирате резервната копија на целниот сервер и да ја подготвите таму.

Последното нешто што го правиме е да создадеме архива во која ја ставаме нашата резервна копија:

tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-«$(date % F% H% M% S)».gz /mysql/backup

Враќање на резервна копија 

Пред да можете да вратите резервна копија на целниот сервер, податоците мора да поминат низ фаза на подготовка. Погледнете погоре за тоа како да го направите ова.

Процесот на обновување на податоците е многу едноставен. Треба да ја извадите резервната копија од архивата и да ги замените податоците во datadir.

Како да ги замените податоците во datadir?

Ајде да разгледаме две опции.

Опција 1

Користете ја алатката XtraBackup. Треба да наведете опција -- копирајте назад

Командата подолу ќе ја пренесе резервната копија во datadir целен сервер:

xtrabackup --copy-back --target-dir=/mysql/backup

Опција 2

Можете да го направите тоа поинаку, направете го без алатката XtraBackup.

Сè што треба да направите е да ја копирате резервната копија во datadir. Можете да го направите ова со cp или rsync.

Важно е да се разбере дека постапката за враќање на резервната копија се сведува на само замена на содржината на директориумот datadir.

Пред да започнете со враќање на резервната копија на целниот сервер, мора:

  • Запрете го MySQL серверот.

  • Исчистете ја папката datadir или преместете ја неговата содржина на друга локација. Каталог datadir мора да биде празен.

По завршувањето на преносот на податоците до datadir MySQL серверот може да се стартува.

Користени материјали

Официјална документација Перкона XtraBackup.

Извор: www.habr.com

Додадете коментар