Стварэнне рэзервовай копіі 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 з рэпазітара схільны Percona.

Выканайце паслядоўна наступныя каманды:

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. Бо важна пераканацца, што ўтыліта карэктна працуе на серверы. У выніку на экране адлюструецца нешта падобнае:

arguments: — datadir=/var/lib/mysql — tmpdir=/tmp — server-id=1 — logbin=/var/log/mysql/mysql-bin.log — innodbbufferpoolsize=16384M — innodbfilepertable=1 — innodbflushmethod=Odirect 2.4.20 based on MySQL server 5.7.26 Linux (x8664) (revision id: c8b4056)

Стварэнне рэзервовай копіі MySQL пры дапамозе ўтыліты XtraBackup

Правы доступу, дазволы і прывілеі 

XtraBackup павінна мець магчымасць:

  • Падключыцца да вашага сервера MySQL.

  • Валодаць правамі доступу да каталога каталог дадзеных

  • Падчас стварэння рэзервовай копіі мець права на запіс ва ўказаны праз параметр target-dir каталог.

Што такое datadir?

каталог дадзеных - Гэта каталог, у якім сервер баз дадзеных MySQL захоўвае дадзеныя. Усе базы дадзеных, усе табліцы знаходзяцца там. У большасці дыстрыбутываў Linux па змаўчанні такім каталогам з'яўляецца /var/lib/mysql.

Што такое target-dir каталог?

target-dir - Гэта каталог, у які будзе захавана рэзервовая копія.

Карыстальніку базы даных неабходны наступныя правы доступу да табліц і баз даных, якія падлягаюць рэзервоваму капіраванню:

  • RELOAD і LOCK TABLES

  • REPLICATION CLIENT

  • CREATE TABLESPACE

  • ЯК ВЫГЛЯДЗIЦЬ ПРАЦЭС

  • СУПЕР

  • СТВАРЫЦЬ

  • INSERT

  • ВЫБАР

Канфігурацыя 

Канфігурацыя XtraBackup выконваецца з дапамогай опцый, якія паводзяць сябе гэтак жа, як і стандартныя параметры MySQL.

Што гэта значыць?

Канфігурацыйныя параметры могуць быць указаны альбо ў камандным радку, альбо ў файле канфігурацыі СКБД, напрыклад у /etc/my.cnf.

Утыліта XtraBackup пасля запуску счытвае часткі [ТуздЫ] и [xtrabackup] з канфігурацыйных файлаў MySQL. Гэта робіцца для таго, каб утыліта магла выкарыстоўваць налады вашай СКБД без неабходнасці ўказання параметраў рукамі пры кожным рэзервовым капіяванні.

Напрыклад, значэнне каталог дадзеных і некаторыя параметры InnoDB XtraBackup атрымліваем з канфігурацыі вашай СКБД.

Калі для працы XtraBackup вы хочаце перавызначыць параметры, якія знаходзяцца ў секцыі [ТуздЫ], то проста пакажыце іх у канфігурацыйным файле ў секцыі [xtrabackup]. Паколькі яны будуць прачытаныя пазней, іх прыярытэт будуць вышэйшыя.

Вам можаце не дадаваць ніякіх параметраў у мой.cnf. Усе патрабаваныя параметры дапушчальна паказваць у камандным радку. Звычайна адзінае, што можа быць зручна размясціць у раздзеле [xtrabackup] вашага мой.cnf - Гэта параметр target_dir, які па змаўчанні вызначае каталог, у які будуць змешчаны рэзервовыя копіі. Але гэта не абавязкова.

Прыклад указання шляху да каталога з рэзервовай копіяй у мой.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/backup/:

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

Папярэдне ў MySQL мы стварылі карыстальніка xtrabackup з патрабаванымі прывілеямі. Пры дапамозе параметра target-dir мы паказваем каталог, у які трэба захаваць рэзервовую копію.

Важны момант!

Звярніце ўвагу радок сцэнара:

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

Дадзеныя ў каталогу /mysql/backup не кансістэнтныя да таго часу, пакуль яны не будуць падрыхтаваны. 

Справа ў тым, што падчас капіравання файлаў маглі адбыцца змены. Аперацыя xtrabackup --prepare --target-dir=/mysql/backup робіць дадзеныя рэзервовай копіі ідэальна ўзгодненымі ў часе.

Выканаць аперацыю падрыхтоўкі даных можна на любой машыне. Няма неабходнасці гэта рабіць на серверы, дзе знаходзіцца зыходная СКБД. Вы можаце скапіяваць рэзервовую копію на мэтавы сервер і падрыхтаваць яе там.

Апошняе, што мы робім - ствараем архіў, у які змяшчаем нашу рэзервовую копію:

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

Аднаўленне рэзервовай копіі 

Перш чым прыступіць да аднаўлення рэзервовай копіі на мэтавым серверы дадзеныя павінны прайсці этап падрыхтоўкі. Як гэта зрабіць гледзіце вышэй.

Працэс аднаўлення даных вельмі просты. Вам трэба атрымаць рэзервовую копію з архіва і замяніць дадзеныя ў каталог дадзеных.

Як замяніць дадзеныя ў datadir?

Разгледзім два варыянты.

варыянт 1

Скарыстацца ўтылітай XtraBackup. Трэба пазначыць опцыю copy-bask

Каманда ніжэй перанясе рэзервовую копію ў каталог дадзеных мэтавага сервера:

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

варыянт 2

Можна паступіць інакш, абысціся без утыліты XtraBackup.

Усё, што вам трэба - гэта скапіяваць рэзервовую копію ў каталог дадзеных. Вы можаце зрабіць гэта пры дапамозе cp або Rsync.

Важна разумець, што працэдура аднаўлення рэзервовай копіі зводзіцца ўсяго толькі да замены зместу каталога. каталог дадзеных.

Перад тым, як пачаць аднаўленне рэзервовай копіі на мэтавым серверы неабходна:

  • Спыніць MySQL сервер.

  • Ачысціць тэчку каталог дадзеных ці перанесці яе змесціва ў іншае месца. Каталог каталог дадзеных абавязкова павінен быць пустым.

Пасля завяршэння пераносу дадзеных у каталог дадзеных сервер MySQL можна запусціць.

выкарыстоўваюцца матэрыялы

Афіцыйная дакументацыя Перкона XtraBackup.

Крыніца: habr.com

Купіць надзейны хостынг для сайтаў з абаронай ад DDoS, VPS VDS серверы 🔥 Купіць надзейны хостынг для сайтаў з абаронай ад DDoS, VPS VDS серверы | ProHoster