Мне нужно переместить большой файл (поврежденная таблица MySQL ~ 40 ГБ) на отдельный сервер, чтобы восстановить его. (При попытке восстановления на моем рабочем сервере он быстро убил сервер).
Для этого я хочу выполнить синхронизацию файлов .frm, .MYI и .MYD с моего рабочего сервера на облачный сервер.
Я копирую файлы из / var / lib / mysql / {database} / в / home / {myuser}, поэтому мне не нужно включать root-доступ для команды rsync и быть на 100% уверенным, что файл базы данных не используется (не следует записывать или читать из нее, но, очевидно, я не хочу выключать свою производственную базу данных, чтобы в этом убедиться).
Первый файл, который я попытался скопировать, был размером около 10 ГБ. Я перехожу с одной части своего рабочего сервера на другую, то есть на тот же массив дисков.
К сожалению, команда копирования "cp filename newfilename" потребовала столько ресурсов, что остановила сервер.
Как я могу использовать меньше ресурсов при копировании файла в другой каталог? (Неважно, сколько времени это займет).
Если мне удастся это сделать, на какое использование ресурсов я могу рассчитывать при синхронизации файла с облаком?
Может ли кто-нибудь предложить лучший способ сделать это? У меня быстро заканчивается место на диске, поэтому мне нужно как можно скорее отремонтировать и заархивировать эту таблицу.
Два варианта помимо ограничения полосы пропускания rsync:
ionice -c 3 cp foo bar
buffer -u 150 -m 16m -s 100m -p 75 -i foo -o bar
ionice
будет взаимодействовать с планировщиком ввода-вывода. buffer
это кольцевой буфер, предназначенный для повышения эффективности символьных устройств, но -u 150
будет делать паузу в 150 микросекунд между записями, которых, согласно руководству, может быть достаточно, чтобы дать диску возможность дышать.
Обе ionice
и buffer
доступны в стандартной сборке Ubuntu. iotop
удобно, если в вашем ядре настроен CONFIG_TASK_DELAY_ACCT, но мой ящик Ubuntu этого не сделал, что серьезно ограничивает удобство использования команды. я уже знаю который команда топит мой жесткий диск, я просто хочу дать ему передышку.
Кроме того, пока копирование выполняется, посмотрите на вывод iostat -x 1
(обычно в пакете sysstat) и убедитесь, что поле% занято для вашего устройства составляет 90% или меньше во время копирования. Если он находится на уровне 99-100%, то вы испытываете недостаток в других процессах для ввода-вывода.
используйте rsync с параметром --bwlimit = KBPS (ограничение пропускной способности ввода-вывода; КБайт в секунду). поэкспериментируйте с меньшим файлом и попытайтесь найти оптимальное сочетание скорости передачи и использования системы. Монитор во второй оболочке с "vmstat 1"
Ты пробовала nice -n10
с префиксом к команде?
10
значение по умолчанию. Диапазон идет от -20
(высший приоритет) на 19
(самый низкий).
Одна альтернатива:
scp -l ${KBPS} ${src} ${dest}
Но я не думаю, что это сработает, если $ {src} - растущий файл ... не могли бы вы предложить способ копирования и ожидания закрытия исходного кода ...