Мне нужно переместить большой файл (поврежденная таблица MySQL ~ 40 ГБ) на отдельный сервер, чтобы восстановить его. (При попытке восстановить на моем производственном сервере, он быстро убил сервер).
Для этого я хочу rsync файлы .frm, .MYI и .MYD с моего производственного сервера на облачный сервер.
Я копирую файлы из / var / lib / mysql / {database} / в / home / {myuser}, так что мне не нужно включать корневой доступ для команды rsync и я на 100% уверен, что файл базы данных не используется (это не должно быть записано или прочитано, но, очевидно, я не хочу закрывать производственную базу данных, чтобы убедиться).
Первый файл, который я попытался скопировать, был размером около 10 ГБ. Я перемещаюсь с одной части моего производственного сервера на другую, то есть на тот же массив дисков.
К сожалению, команда копирования "cp filename newfilename" заняла столько ресурсов, что остановила сервер.
Как я могу использовать меньше ресурсов при копировании файла в другой каталог? (Неважно, сколько времени это займет).
Предполагая, что мне удастся сделать это, какое использование ресурсов можно ожидать при повторном синхронизировании файла в облаке?
Кто-нибудь может предложить лучший способ сделать это? У меня быстро заканчивается свободное место на диске, поэтому мне нужно как можно быстрее восстановить и заархивировать эту таблицу.
источник
nice
привычки.iotop
также твой друг.nice -n 20 ionice -c 3 cp /var/lib/mysql/{database}/{table}.MYI /home/{USER}/
выполнил, была: « Это увеличило нагрузку на мой сервер, немного замедляя его, но веб-сайт был доступен на время передачиДва варианта помимо ограничения пропускной способности 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) и убедитесь, что поле% busy для вашего устройства составляет 90% или меньше во время копирования. Если он равен 99-100%, то вы не хотите использовать другие процессы для ввода-вывода.источник
ionice -c 3 -p $pidUnison
работает на унисон на внешнем HDD, спасибо !!используйте rsync с ключом --bwlimit = KBPS (ограничить пропускную способность ввода-вывода; кбайт в секунду). поиграйте с меньшим файлом и постарайтесь найти оптимальное сочетание между скоростью передачи и использованием системы. Монитор во второй оболочке с "vmstat 1"
источник
rsync
будет копировать файлы локально. Думай,rsync --bwlimit=28000 foo.frm /bar/foo.frm
а потом смотриiostat
. Я не уверен, почемуvmstat
бы сказать вам, если вы насыщали диск. Ищите% занят вiostat
.Одна из альтернатив:
Но я не думаю, что это сработает, если $ {src} - растущий файл ... Можете ли вы предложить способ копирования и ожидания закрытия источника ...
источник