База знаний

3. Быстрое создание горячей РК MYSQL с одновременным копированием на удаленный сервер

Иногда встречается ситуация, когда нужно развернуть полную копию MySQL на другом сервере.

Нужна консультация или помощь в решении IT вопроса? Пожалуйста, в таком случае  заполните форму запроса на Sytes.ru!

В статье предполагается, что сервер терминалов уже прошел предварительную настройку и работает. Все скриншоты соответствуют Windows Server 2016.

Существует ряд инструментов, которые позволяют это сделать. Наиболее популярый способ, это пожалуй - использование mysqldump,  но у метода есть ряд минусов: 

  •  во-первых, приводит к блокировкам
  •  во-вторых, на больших базах длиться десятки минут и даже часы (десятки часов).

Единственный плюс mysqldump — это возможность сделать копию баз(ы) в «человеко-читаемом» формате или сделать копию только определенных частей базы (структуру всех таблиц или выбранных, данные всей базы или только нужных таблиц и т.д.)

В данной заметке описан другой продукт:  Percona Xtrabackup -он  позволяет делать горячие резервные копии всего экземпляра MySQL, нельзя сделать бэкап одной базы. Размер не имеет значения, можно использовать  Percona Xtrabackup на базах размером и 500 MB и 150 GB.

1. Скачиваем и устанавливаем пакет percona-release_latest, включаем репозитарий percona tools (release) и устанавливаем набор полезных утилит от Percona Toolkit, устанавливаем Percona Xtrabackup и вспомогательные утилиты qpress, socat:

wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb && rm -f percona-release_latest.$(lsb_release -sc)_all.deb
percona-release enable-only tools release
apt-get update
apt-get install -y percona-toolkit percona-xtrabackup-24 qpress socat screen

2. На сервере приемнике (куда будем копировать резервную копию) создаем каталог, куда будет загружаться резервная копия и запускаем:

mkdir /root/mysqlbackup
screen
socat -u tcp-listen:9999,reuseaddr stdout 2>/tmp/socat.log | xbstream -x -C /root/mysqlbackup

 

???? на что следует обратить внимание:

а) Директива tcp-listen:9999 указывает, что мы будем принимать входящие подключения по протоколу TCP на порт 9999, не забудьте открыть порт на межсетевом экране;
б) Принятый поток будет передаваться xbstream, а тот будет сохранять данные в каталог /root/mysqlbackup, проверьте чтобы на диске было достаточно места для данных. Сколько необходимо? Столько, сколько на источнике занимает каталог с данными MySQL, как правило это /var/lib/mysql, но он может меняться, смотрите на источнике в MySQL настройку datadir, она покажет каталог хранения данных.

3. На источнике запускаем xtrabackup в формат потокового резервного копирования xbstream. Запускать xtrabackup желательно в screen чтобы в случае обрыва ssh сессии процесс создания и передачи резервной копии не прервался.

 screen ulimit -n 256000 && /usr/bin/xtrabackup --defaults-file=/etc/mysql/my.cnf --host=127.0.0.1 --port 3306 --user=root --password=mysqlrootpasswd --backup --no-backup-locks --no-lock --parallel=4 --stream=xbstream | socat - TCP4:172.16.0.1:9999

???? на что следует обратить внимание:

а) Директива —defaults-file указывает местоположение файла конфигурации MySQL, это директива должна быть самой первой в списке;
б) Директивы —host, —port, —user и —password указывают соответствующие опции подключения к работающему MySQL, это у Вас они будут своими, как минимум пароль пользователя root;
в) Директива —no-backup-locks указывает, что не нужно делать блокировок при резервном копировании;
г) Директива —no-lock указывает, что не нужно делать блокировок таблиц при резервном копировании;
д) Директива —parallel указывает, во сколько потоков будет идти резервное копирование;
е) Директива —stream указывает формат потокового резервного копирования;
ж) Директива для socat — TCP4:172.16.0.1:9999 — указывают протокол, IP адрес и порт приемника, это адрес сервера из п.2;

После запуска xtrabackup начнется процесс создания горячей резервной копии и одновременной передачи её на сервер-приемник.

В следующей статье я расскажу как можно восстановить полностью рабочий экземпляр MySQL из созданной нами резервной копии.

Если у вас есть профессиональный интерес в расширении данной статьи – заполните форму запроса!

Cпасибо автору!

Заметка распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

 

     Источник:

Конец! 

  • Percona Xtrabackup Mysql, mysql hotbackup
  • 0 Пользователи нашли это полезным
Помог ли вам данный ответ?

Связанные статьи

1. МYSQL на Ubuntu

Обновляем систему: apt-get updateapt-get upgrade   Устанавливаем sudo: apt-get install sudo...

2. СУБД MariaDB на CentOS и настройка кластера MariaDB / MySQL

Установка MariaDB на CentOS и настройка кластера для репликации между двумя базами данных...

4. Восстановление MySQL из горячей (hotbackup) резервной копии

В предыдущей статье мы рассмотрели вопрос создания горячей резервной копии MySQL с одновременным...