Горячие резервные копии с Percona XtraBackup в приложении WordPress One-Click

Содержание

  • Вступление
  • Предпосылки
  • Шаг 1: Создайте пользователя без полномочий root
  • Шаг 2: Проверьте механизм хранения
  • Шаг 3: Создать пользователя базы данных для резервного копирования
  • Шаг 4: Установите Percona XtraBackup
  • Шаг 5. Создание каталогов резервного хранилища
  • Шаг 6: Создайте первую полную резервную копию
  • Шаг 7. Создайте следующие инкрементные резервные копии
  • Шаг 8: Подготовьте файлы резервных копий для восстановления базы данных
  • Шаг 9: Восстановить базу данных
  • Дальнейшие шаги

Вступление

Percona XtraBackup - бесплатная программа на основе MySQL, используемая для создания оперативных резервных копий. Это также с открытым исходным кодом. С помощью Percona XtraBackup вы можете создавать горячие резервные копии запущенных баз данных MySQL, MariaDB или Percona Server, не останавливая службу баз данных и не делая ее доступной только для чтения. Это важная особенность для бизнеса в Интернете.

Для баз данных, использующих механизмы хранения InnoDB, XtraDB и HailDB, Percona XtraBackup может выполнять неблокирующие резервные копии. Для баз данных, использующих механизмы хранения MyISAM, Merge и Archive, Percona XtraBackup также может выполнять резервное копирование путем кратковременной приостановки записи в конце процедуры резервного копирования.

В этой статье я покажу вам, как установить и использовать Percona XtraBackup для выполнения полного и инкрементного оперативного резервного копирования на сервере Vultr на основе приложения WordPress One-Click. Мы выполним полное резервное копирование и две инкрементные резервные копии, а затем восстановим базу данных в состояние каждой из трех резервных копий соответственно.

Предпосылки

Я предполагаю, что вы развернули экземпляр сервера WordPress Vultr One-Click с нуля и вошли в систему как root, используя SSH.

Шаг 1: Создайте пользователя без полномочий root

В целях безопасности рекомендуется создать еще одну учетную запись пользователя с правами root, а затем использовать ее для входа в систему и выполнения повседневных операций в системе. Вы все еще можете выполнить почти все команды суперпользователя с помощью sudoкоманды.

1) Создать нового пользователя. Замените sysuserна свое имя пользователя.

useradd sysuser

2) Установите пароль для вашего нового пользователя. Замените sysuserна свое имя пользователя.

passwd sysuser

3) Предоставьте root-права вашему новому пользователю.

visudo

Найдите абзац ниже.

## Allow root to run any commands anywhere
root     ALL=(ALL)     ALL

Добавьте строку непосредственно под этим абзацем, замените ее sysuserсвоим именем пользователя.

sysuser     ALL=(ALL)     ALL

Сохранить и выйти.

:wq

4) Переключитесь на новую учетную запись пользователя.

logout

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

Шаг 2: Проверьте механизм хранения

По умолчанию, root-логин MySQL сохраняется на VPS в /root/.my.cnf. Отобразите пароль в вашем терминале с помощью следующей команды.

sudo cat /root/.my.cnf

Используйте учетные данные, отображаемые на экране, чтобы войти в консоль MySQL.

mysql -u root -p

В оболочке MySQL выполните следующее.

SHOW DATABASES;

Все базы данных MySQL будут отображены на экране. База данных с именем like wp5273512- это база данных WordPress, которую мы хотим сделать резервную копию. В следующей команде замените wp5273512свою собственную:

USE wp5273512;

Проверьте механизм хранения для каждой таблицы:

SHOW TABLE STATUS\G

Вы обнаружите, что все таблицы в вашей базе данных WordPress MySQL используют механизм хранения InnoDB, который идеально подходит для выполнения оперативного резервного копирования с помощью Percona XtraBackup.

Для любых других баз данных MySQL, использующих механизм хранения MyISAM, мы все равно можем сделать их резервную копию с помощью Percona XtraBackup, кратко приостановив запись.

Шаг 3: Создать пользователя базы данных для резервного копирования

Все еще в оболочке MySQL, используйте следующие команды для создания выделенного пользователя базы данных для резервного копирования. Не забудьте заменить имя пользователя базы данных xbuserи пароль xbpasswdсвоими собственными:

CREATE USER 'xbuser'@'localhost' IDENTIFIED BY 'xbpasswd';
GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT, CREATE TABLESPACE, PROCESS, SUPER, CREATE, INSERT, SELECT ON *.* TO 'xbuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Предоставленные выше привилегии необходимы для полной функциональности Percona XtraBackup. Вы можете удалить некоторые из них, чтобы уменьшить функциональность и повысить безопасность. Для получения дополнительной информации посетите официальный веб-сайт Percona XtraBackup .

Шаг 4: Установите Percona XtraBackup

Вы можете довольно легко установить Percona XtraBackup из RPM-репозитория Percona:

sudo yum install -y http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
sudo yum install -y percona-xtrabackup

Шаг 5. Создание каталогов резервного хранилища

Во-первых, вам нужно добавить пользователя sysuserв mysqlгруппу. Замените sysuserна свое имя пользователя.

sudo gpasswd -a sysuser mysql

Создайте каталог для хранения полных резервных копий.

sudo mkdir -p /dbbackup/full/

Создайте другой каталог для хранения инкрементных резервных копий.

sudo mkdir -p /dbbackup/inc/

Измените владельца этих каталогов на пользователя sysuserи группу sysuser.

sudo chown -R sysuser:sysuser /dbbackup

Выйдите из системы, чтобы эти изменения вступили в силу.

logout

Затем войдите sysuserснова.

Шаг 6: Создайте первую полную резервную копию

XtraBackup состоит в основном из программы XtraBackup и innobackupexсценария perl. Обычно innobackupexдля удобства вы можете использовать скрипт perl для выполнения различных рабочих процедур.

Введите следующую команду, чтобы создать первую полную резервную копию. Не забудьте заменить имя пользователя xbuserбазы данных, пароль пользователя базы данных xbpasswdи каталог полной резервной копии /dbbackup/full/своими собственными.

sudo innobackupex --user=xbuser  --password=xbpasswd /dbbackup/full/

При правильном выполнении этой команды вы увидите подтверждающее сообщение "innobackupex: выполнено ОК!" в последней строке вывода.

Все вновь созданные файлы этой полной резервной копии будут храниться в каталоге с меткой времени в /dbbackup/full/. Например, /dbbackup/full/2015-05-22_05-45-54.

Шаг 7. Создайте следующие инкрементные резервные копии

Введите следующую команду, чтобы создать первую инкрементную резервную копию. Подставьте переменные в команде соответственно.

sudo innobackupex --user=xbuser  --password=xbpasswd --incremental --incremental-basedir=/dbbackup/full/2015-05-22_05-45-54 /dbbackup/inc/

Опять же, вы увидите "innobackupex: завершено ОК!" в конце вывода, когда команда выполняется успешно. Файлы резервной копии будут храниться в каталоге с меткой времени в /dbbackup/inc/.

Введите следующую команду, чтобы создать вторую инкрементную резервную копию. Замените переменные в команде соответственно.

sudo innobackupex --user=xbuser  --password=xbpasswd --incremental --incremental-basedir=/dbbackup/inc/2015-05-22_05-48-12 /dbbackup/inc/

В случае успеха вы увидите «innobackupex: завершено ОК!» сообщение снова. Проверьте /dbbackup/inc/папку еще раз, чтобы увидеть файлы резервных копий.

Шаг 8: Подготовьте файлы резервных копий для восстановления базы данных

Все файлы резервных копий базы данных должны быть подготовлены, прежде чем их можно будет использовать для восстановления базы данных.

Примечание . Перед выполнением процедур подготовки и восстановления лучше хранить копию всего каталога резервной копии (например, /dbbackup/) в другом месте на случай, если повреждение резервной копии файлов вызвано ошибкой.

В каждом каталоге резервных копий есть файл с именем, xtrabackup_checkpointsкоторый содержит тип резервной копии, порядковый номер начала и конца журнала ( from_lsnи to_lsn). Вы можете использовать эти цифры для уточнения вашей стратегии восстановления базы данных. Посмотрите на примеры ниже.

В xtrabackup_checkpointsфайле первой полной резервной копии у меня есть:

backup_type = full-backuped
from_lsn = 0
to_lsn = 2932478

В xtrabackup_checkpointsфайле первой инкрементной резервной копии у меня есть:

backup_type =incremental
from_lsn = 2932478
to_lsn = 2970177

В xtrabackup_checkpointsфайле второй инкрементной резервной копии у меня есть:

backup_type = incremental
from_lsn = 2970177
to_lsn = 3004672

Вкратце, вы должны работать с каждой резервной копией в порядке возрастания lsn. Если последовательность lsn неполная или неупорядоченная, вы можете потерять данные.

Примечание . Следующие команды включают три каталога, замените их собственными.

Чтобы восстановить базу данных до состояния первой полной резервной копии, вам необходимо подготовить файлы резервной копии с помощью следующей команды:

sudo innobackupex --apply-log /dbbackup/full/2015-05-22_05-45-54

Чтобы восстановить базу данных до состояния первой инкрементной резервной копии, вам необходимо подготовить файлы резервной копии с помощью следующих команд:

sudo innobackupex --apply-log --redo-only /dbbackup/full/2015-05-22_05-45-54
sudo innobackupex --apply-log /dbbackup/full/2015-05-22_05-45-54 --incremental-dir=/dbbackup/inc/2015-05-22_05-48-12
sudo innobackupex --apply-log /dbbackup/full/2015-05-22_05-45-54

Чтобы восстановить базу данных до состояния второй инкрементной резервной копии, вам необходимо подготовить файлы резервной копии с помощью следующих команд:

sudo innobackupex --apply-log --redo-only /dbbackup/full/2015-05-22_05-45-54
sudo innobackupex --apply-log --redo-only /dbbackup/full/2015-05-22_05-45-54 --incremental-dir=/dbbackup/inc/2015-05-22_05-48-12
sudo innobackupex --apply-log /dbbackup/full/2015-05-22_05-45-54 --incremental-dir=/dbbackup/inc/2015-05-22_05-51-32
sudo innobackupex --apply-log /dbbackup/full/2015-05-22_05-45-54

Примечания :

Для инкрементных резервных копий следует использовать этот --redo-onlyпараметр для всех, кроме последней инкрементной резервной копии. Тем не менее, использование этой опции в последнем инкрементном резервном копировании по-прежнему безвредно для согласованности ваших данных - это приведет только к некоторой задержке из-за отката базы данных.

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

После подготовки изменения, записанные в файлах инкрементной резервной копии, будут добавлены к подготовленным базовым файлам полной резервной копии, поэтому вы всегда должны использовать подготовленные файлы полной резервной копии для восстановления базы данных, независимо от того, выбрали ли вы полную или инкрементную резервную копию.

Шаг 9: Восстановить базу данных

Прежде чем вы сможете восстановить свою базу данных, вам необходимо остановить службу базы данных.

sudo service mysqld stop

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

sudo mkdir /currentdb
sudo mv /var/lib/mysql/* /currentdb

Восстановите базу данных с подготовленными файлами «полной резервной копии».

sudo innobackupex --copy-back /dbbackup/full/2015-05-22_05-45-54

Поскольку процедура восстановления изменит владельца каталога базы данных, вам необходимо изменить его обратно, mysql:mysqlчтобы сделать его работоспособным.

sudo chown -R mysql:mysql /var/lib/mysql

Перезапустите службу базы данных.

sudo service mysqld start

Вот и все. На этом этапе вы можете посетить свой сайт WordPress, чтобы убедиться, что процесс восстановления прошел успешно.



Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

6 невероятных фактов о Nintendo Switch

6 невероятных фактов о Nintendo Switch

Многие из вас знают Switch, который выйдет в марте 2017 года, и его новые функции. Для тех, кто не знает, мы подготовили список функций, которые делают «Switch» обязательным гаджетом.

Технические обещания, которые все еще не выполнены

Технические обещания, которые все еще не выполнены

Вы ждете, когда технологические гиганты выполнят свои обещания? проверить, что осталось недоставленным.

Функциональные возможности уровней эталонной архитектуры больших данных

Функциональные возможности уровней эталонной архитектуры больших данных

Прочтите блог, чтобы узнать о различных уровнях архитектуры больших данных и их функциях самым простым способом.

Как ИИ может вывести автоматизацию процессов на новый уровень?

Как ИИ может вывести автоматизацию процессов на новый уровень?

Прочтите это, чтобы узнать, как искусственный интеллект становится популярным среди небольших компаний и как он увеличивает вероятность их роста и дает преимущество перед конкурентами.

CAPTCHA: как долго она может оставаться жизнеспособным методом различения между человеком и ИИ?

CAPTCHA: как долго она может оставаться жизнеспособным методом различения между человеком и ИИ?

CAPTCHA стало довольно сложно решать пользователям за последние несколько лет. Сможет ли он оставаться эффективным в обнаружении спама и ботов в ближайшем будущем?

Технологическая сингулярность: далекое будущее человеческой цивилизации?

Технологическая сингулярность: далекое будущее человеческой цивилизации?

По мере того, как наука развивается быстрыми темпами, принимая на себя большую часть наших усилий, также возрастает риск подвергнуться необъяснимой сингулярности. Прочтите, что может значить для нас необычность.

Телемедицина и удаленное здравоохранение: будущее уже здесь

Телемедицина и удаленное здравоохранение: будущее уже здесь

Что такое телемедицина, дистанционное здравоохранение и их влияние на будущее поколение? Это хорошее место или нет в ситуации пандемии? Прочтите блог, чтобы узнать мнение!

Вы когда-нибудь задумывались, как хакеры зарабатывают деньги?

Вы когда-нибудь задумывались, как хакеры зарабатывают деньги?

Возможно, вы слышали, что хакеры зарабатывают много денег, но задумывались ли вы когда-нибудь о том, как они зарабатывают такие деньги? Давайте обсудим.

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Недавно Apple выпустила macOS Catalina 10.15.4, дополнительное обновление для исправления проблем, но похоже, что это обновление вызывает больше проблем, приводящих к поломке компьютеров Mac. Прочтите эту статью, чтобы узнать больше