Виконайте гарячі резервні копії баз даних MySQL за допомогою Percona XtraBackup на Ubuntu 16.04

Виконайте гарячі резервні копії баз даних MySQL за допомогою Percona XtraBackup на Ubuntu 16.04

Percona XtraBackup це утиліта для резервного копіювання з відкритим кодом для MySQL Він підтримує всі атрибути MySQL, такі як Percona Server, MariaDB і (Oracle) MySQL. Percona Xtrabackup виконує Hot Backup для MySQL. Гарячий резервний копіювання означає створення резервної копії сервера MySQL, коли він працює без простоїв.

У цьому підручнику я покажу вам, як створити гарячу резервну базу MySQL за допомогою інструмента OpenSource Percona XtraBackup на Ubuntu 16.04 (Xenial Xerus). Я буду використовувати MariaDB як сервер бази даних для виконання резервної копії, але та сама настройка буде працювати і для серверів MySQL.

Необхідна умова

  • Сервер Ubuntu 16.04 - (Xenial Xerus)
  • MySQL або MariaDB сервер
  • Привілеї root

Крок 1 - встановіть Percona XtraBackup

Першим кроком є ​​встановлення останнього програмного забезпечення Percona XtraBackup на нашому сервері Ubuntu. Увійдіть на свій сервер за допомогою SSH (або на консолі):

ssh [електронна пошта захищена]
ТИП ВАШ ПАРОЛЬ

Percona XtraBackup доступний у репозиторії Ubuntu, але ми хочемо використовувати останню версію з репозиторію Percona.

Додайте репозиторій Percona, завантаживши пакет deb з Інтернету та встановіть його за допомогою команди dpkg:

wget https://repo.percona.com/apt/percona-release_0.1-3.$(lsb_release -sc) _all.deb
sudo dpkg -i percona-release_0.1-3. $ (lsb_release -sc) _all.deb

Далі оновіть сховище та встановіть Ppercona XtraBackup 2.4 (останню версію на даний момент):

Суду apt-get поновлення
sudo apt-get install percona-xtrabackup-24

Percona XtraBackup встановлено.

Крок 2 - Налаштування користувача та каталогу резервних копій

Для виконання гарячого резервного копіювання нам потрібно створити нового користувача mysql з особливими правами та правами. У цьому підручнику я буду використовувати MariaDB 10.0 як сервер бази даних. Якщо ви ще не встановили MySQL-сумісну базу даних, тоді ви можете встановити за допомогою команди нижче:

sudo apt-get install mariadb-server mariadb-client

Установіть захищений пароль для кореневого користувача за допомогою цієї команди:

mysql_secure_installation

Якщо встановлено MariaDB, відкрийте оболонку MariaDB / MySQL як кореневого користувача з командою mysql client:

mysql -u root -p
TYPE MySQL PASSWORD

Створіть нового користувача під назвою "bekupuser'з паролем'мійпароль'(вибрали безпечний пароль для вашого сервера!):

CREATE USER 'bekupuser' @ 'localhost' IDENTIFIED BY 'mypassword';

Надайте користувачеві такі права: "ПОВТОРЮЄТЬСЯ, ПРОЦЕС, БЛОКОВІ СТОЛИ, КЛІЄНТ".

GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *. * TO 'bekupuser' @ 'localhost';
ФЛЮШ ПРИВІЛЕГИ;
вихід

Потім створіть новий каталог для зберігання файлів резервних копій MySQL:

mkdir -p / data / backups / mysql /

Створено новий резервний користувач і каталог резервної копії.

Крок 3 - виконувати резервне копіювання за допомогою Innobackupex

Innobackupex це скрипт Perl для програми xtrabackup. Це виправлена ​​версія сценарію innobackup, яку надає оракл, який поширюється за допомогою інструмента резервного копіювання InnoDB. Innobackupex забезпечує резервне копіювання для всього примірника бази даних MySQL, використовуючи xtrabackup у комбінації з xbstream та xbcrypt.

На цьому кроці ми створимо та готуємо повну резервну копію для примірника MySQL.

A. Створіть резервну копію за допомогою Innobackupex

На кроці 2 ми створили новий каталог для резервного копіювання та додали нового користувача резервного копіювання mysql. Ми будемо використовувати їх зараз, щоб створити резервну копію за допомогою команди innobackupex.

Створіть резервну копію MySQL за допомогою innobackupex у новому каталозі '/ data / backups / my_backup':

innobackupex -user = bekupuser -password = mypassword -no-timestamp / data / backups / my_backup

Примітка:

-Користувач = користувач з необхідними резервними привілеями (step-2).

-Паролог = пароль користувача резервного копіювання.

-Отриманий часовий покажчик = відключити створення нового підкаталогу з тимчасовим шаблоном у кореневому каталозі резервної копії.

/ data / backups / my_backup = каталог для резервної копії, воно буде створено автоматично під час процесу резервного копіювання. Якщо каталог існує, ви отримаєте повідомлення про помилку.

Створіть резервну копію за допомогою Percona XtraBackup

Інший варіант:

mkdir -p / data / backups / my_backup2
innobackupex -user = bekupuser -password = mypassword / data / backups / my_backup2
or
innobackupex -user = bekupuser -password = mypassword / data / backups /

Примітка:

Якщо немає каталогу "my_backup2', ви отримаєте ваш каталог на основі'відмітка часу'формат

результати:

Результат альтернативної команди резервного копіювання.

B. Підготуйте повне резервне копіювання за допомогою Innobackupex

Після створення нової резервної копії дані не готові до відновлення. Існує ще один крок, тому дані готові до відновлення. Нам потрібна "стадія підготовки", щоб дані могли бути відновлені.

Підготовка резервного копіювання за допомогою innobackupex з опцією -Зареєструватися до каталогу резервної копії '/ data / backups / my_backup':

innobackupex -apply-log / data / backups / my_backup

Перш ніж продовжувати, переконайтеся, що процес завершений без помилок.

Підготуйте повне резервне копіювання

Якщо у вас достатньо пам'яті та великої бази даних, то ви можете скористатися цією опцією -Use-пам'ять = номер пам'яті щоб сказати innobackupex, скільки пам'яті він може використовувати:

innobackupex -apply-log -use-memory = 4G / data / backups / my_backup

Дані готові відновити зараз. Ми можемо відновити його на одному сервері або на іншому сервері, на якому запущено MariaDB.

Крок 4 - відновити повне резервне копіювання з Innobackupex

На цьому кроці ми відновимо екземпляр MySQL за допомогою innobackupex.

Перш ніж відновити екземпляр MySQL, ми повинні зупинити процес MySQL за допомогою команди systemctl (процес MariaDB називається mysql):

systemctl stop mysql

Зробіть резервну копію старого каталогу даних MySQL:

mkdir ~ / mysql_old /
mv / var / lib / mysql / * ~ / mysql_old /

Далі відновити екземпляр mysql з повної резервної копії за допомогою innobackupex:

innobackupex -copy-back / data / backups / my_backup

Коли ви бачите результат "innobackupex: завершено ОК', то ви успішно відновили екземпляр MySQL.

Тепер змініть власника каталогу даних MySQL на користувача mysql і знову запустіть службу:

chown -R mysql: mysql / var / lib / mysql
systemctl почати mysql

відновити резервну копію

Екземпляр MySQL успішно відновлено за допомогою percona-xtrabackup.

Посилання

джерело

залишити коментар

Цей сайт використовує Akismet для зменшення спаму. Дізнайтеся, як обробляються ваші дані коментарів.