Что является самым быстрым способом регулярного резервного копирования больших файлов данных на еженедельной основе
У нас есть автоматический скрипт для резервного копирования 200 ГБ файлов данных на локальный диск. скрипт отключает базу данных, tar и локально сжимает весь каталог на диске, затем запускает базу данных
tar -czvf data.tgz /some/folder
этот процесс занимает два часа, что является слишком длительным временем простоя. Мы хотим сократить это время простоя.
Примите во внимание следующее: - главная цель - иметь идентичные копии файлов в кратчайшие сроки, пока база данных не работает. позже мы можем сжать, передать или выполнить любую операцию с файлами.
Я думал использовать rsync для синхронизации файлов каждую неделю с целевой резервной копией, rsync обновит только те изменения, которые займут меньше времени.
это будет работать, или есть лучший подход?
6 ответов
Вы можете проверить утилиту с именем rsync для резервного копирования.
rsync -av host:: src / dest
Для полной документации проверьте ниже ссылку: https://linux.die.net/man/1/rsync
Снимки файловой системы - это правильный способ сделать что-то подобное.
Что касается ответа 84014, убедитесь, что вы очищаете таблицы и (читаете) блокируете их, прежде чем делать снимок. Это обеспечивает более согласованный снимок с неразбитыми транзакциями. Также регулярно делайте резервные копии журналов транзакций в удаленном месте, чтобы вы могли получить восстановление на определенный момент времени, когда это потребуется. Лучше всего делать это на реплицированном рабе, когда это возможно.
Rsync является imho для баз данных, а не путь.
Dirvish - это то, что вы ищете. Любые идентичные файлы становятся жестко связанными, поэтому у вас есть полное дерево каталогов для копирования, плюс он использует rsync, поэтому вы экономите пропускную способность для частично измененных файлов.
Идеальная стратегия резервного копирования сильно зависит от конкретной базы данных, которую вы используете. В любом случае, вот несколько общих советов по сокращению времени простоя:
если ваша файловая система или менеджер томов поддерживает моментальные снимки, вы можете использовать их, чтобы значительно сократить ожидаемое время простоя. Рабочий процесс будет примерно таким:
- остановить вашу базу данных;
- создать снимок;
- перезапустить базу данных;
- запустите процесс резервного копирования для вашего снимка, а не для оперативных данных.
если вы можете позволить себе потерять самую последнюю транзакцию в своей резервной копии, вы можете изменить вышеуказанную последовательность действий, чтобы избежать остановки / запуска базы данных, эффективно предоставляя вам процесс резервного копирования без простоев;
Если вы не можете полагаться на снимки, вы должны максимально сократить время копирования. Я настоятельно рекомендую вам попробовать
tar --lzop -cvf
, который будет использовать очень быстрый компрессор lzo. База данных должна быть остановлена на все время резервного копирования;если этого недостаточно, вы должны попытаться скопировать только измененный блок из ваших файлов данных. Пытаться
bdsync
или жеblocksync
чтобы увидеть, если последующие резервные копии быстрее, чем первая. Обратите внимание, что обе утилиты работают с отдельными файлами, поэтому вы должны создавать сценарии вокруг них для копирования нескольких файлов. База данных должна быть остановлена на все время резервного копирования;rsync
обычно не рекомендуется для копирования очень больших файлов; Тем не менее, вы можете попробовать что-то какrsync -a --inplace
или, с другой стороны,rsync -a -W
, Вы явно должны были запустить какой-то временной тест, чтобы узнать, чтоrsync
вызов лучше подходит для ваших конкретных потребностей. Опять же, это должно быть сделано с остановкой базы данных на весь период резервного копирования;Если эти подходы не работают или не применимы к вашему случаю, вам пришлось настроить процесс резервного копирования для конкретной базы данных (т. е. полагаться на репликацию или доставку журналов на вторичный хост).
Если СУБД поддерживает репликацию, рассмотрите возможность установки экземпляра репликации в отдельном хранилище и, возможно, на удаленном сайте. Возможно, вы сможете быстро превратить другой в основной.
Но это не резервные копии, резервные копии находятся в автономном режиме. Определите, как выполнять резервное копирование, не отключая базу данных. Либо СУБД записывает резервную копию, либо вы приказываете ей приостановить запись, либо иным образом добираетесь до безопасной точки и сами получаете копию файлов.
Быстрый способ получить копию - это снимок тома данных. Необычные массивы хранения могут сделать снимок LUN, а затем представить его на другой хост резервного копирования. Или сделайте снимок уровня LVM, чтобы сделать это на уровне хоста. В любом случае, резервное копирование не будет завершено, пока оно не будет скопировано на другой сторонний носитель.