В определенное время запускаем несколько скриптов резервного копирования для резервного копирования:
В это время веб-сайты на сервере перегружаются, вызывая тайм-ауты и проблемы с подключением к базе данных.
Итак, я представляю, что делаю это неправильно. Как лучше всего выполнять ночное резервное копирование, не влияя на производительность сайтов на сервере?
ОС: приложения Centos: MySQL, Rsync
Резервные копии делаются на удаленный сервер.
Из-за операции резервного копирования возникает конкуренция за диск и процессор, а также, возможно, за сетевые ресурсы, поэтому ваш сайт не отвечает. Чтобы избежать этого, вам придется уменьшить приоритеты io и cpu операций резервного копирования, чтобы ваш сайт мог нормально функционировать.
Вы можете использовать это перед вызовом сценария резервного копирования.
root@x:~# bash
root@x:~# echo $BASHPID
6576
Переменная BASHID - это PID текущего сеанса bash
root@x:~# ionice -c 2 -n 7 -p $BASHPID
Это снизит приоритет диска io вашей текущей оболочки.
-c = class (0 - нет, 1 - в реальном времени, 2 - с максимальным усилием, 3 - в режиме ожидания)
-n = приоритет (0-7, 0 - наивысший приоритет)
root@x:~# renice +10 -p $BASHPID
Это уменьшит приоритет планирования процессора вашей текущей оболочки (-19 - максимальный приоритет, а 20 - наименьший).
root@x:~# ./backup-script
Теперь отсюда вы можете вызвать сценарий резервного копирования. Поскольку дочерние процессы наследуют приоритеты cpu и io от родительских, ваши процессы сценария резервного копирования будут выполняться с более низкими приоритетами io, cpu, и поэтому процессы вашего сервера имеют приоритет над резервным копированием.
Если вы используете задание cron, вы можете поместить все вышеперечисленные команды в файл, chmod для разрешений x и добавить этот файл в cron.
В случае, если сеть является узким местом, вам, возможно, придется использовать «tc» для классификации резервного трафика и ограничения его скорости. Вы можете прочитать об ограничении скорости здесь. http://wiki.openvz.org/Traffic_shaping_with_tc
Трудно ответить, не зная, какая ОС, приложения, файловые системы и носители резервных копий задействованы.
Без всего этого мой ответ: rsync