Назад | Перейти на главную страницу

Каков самый быстрый способ еженедельного резервного копирования больших файлов данных?

У нас есть автоматизированный скрипт для резервного копирования 200 ГБ файлов данных на локальный диск. сценарий завершает работу базы данных, выполняет тарсинг и сжатие всего каталога локально на диске, а затем запускает базу данных

tar -czvf data.tgz / some / папка

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

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

Я думал использовать rsync для синхронизации файлов каждую неделю с целевой резервной копией, а rsync будет обновлять только изменения, что займет меньше времени.

Будет ли это работать, или есть лучший подход?

Снимки файловой системы - правильный способ сделать что-то подобное.

Вы можете попробовать инструмент rsync для резервного копирования:

rsync -av host::src /dest 

Для полной проверки документации по указанной ниже ссылке: https://linux.die.net/man/1/rsync

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

Что касается ответа 84014, убедитесь, что вы очищаете таблицы и (читаете) блокируете их, прежде чем делать снимок. Это обеспечивает более согласованный снимок без прерывания транзакций. Также регулярно создавайте резервные копии журналов транзакций в удаленном месте, чтобы иметь возможность восстановления на определенный момент времени, когда это необходимо. По возможности лучше делать это на реплицированном ведомом устройстве.

Rsync - это imho для баз данных, который не подходит.

Если СУБД поддерживает репликацию, рассмотрите возможность установки экземпляра репликации в отдельном хранилище и, возможно, на удаленном сайте. Возможно, вы сможете быстро превратить другой в основной.

Но это не бэкапы, бэкапы офлайн. Определите, как выполнять резервное копирование без остановки базы данных. Либо СУБД записывает резервную копию, либо вы приказываете ей приостановить запись, либо иным образом переходите в безопасную точку и сами получаете копию файлов.

Самый быстрый способ получить копию - сделать снимок тома данных. Необычные массивы хранения могут делать снимки LUN, а затем передавать их другому хосту резервного копирования. Или сделайте снимок уровня LVM, чтобы сделать это на уровне хоста. В любом случае резервная копия не будет полной, пока она не будет скопирована на другой внешний носитель.

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

  • если ваша файловая система или менеджер томов поддерживает снимки, вы можете использовать их, чтобы значительно сократить ожидаемое время простоя. Рабочий процесс будет примерно таким:

    1. остановить вашу базу данных;
    2. создать снимок;
    3. перезапустить базу данных;
    4. запустить процесс резервного копирования против ваш снимок, а не данные в реальном времени.
  • если вы можете позволить себе потерять самую последнюю транзакцию в своей резервной копии, вы можете изменить приведенную выше последовательность, чтобы избежать остановки / запуска базы данных, эффективно давая вам без простоев процесс резервного копирования;

  • Если вы не можете полагаться на снимки, вы должны максимально сократить время копирования. Я настоятельно рекомендую вам попробовать tar --lzop -cvf, который будет использовать очень быстрый компрессор lzo. База данных должен быть остановлен на все время резервного копирования;

  • если этого недостаточно, попробуйте скопировать только изменено заблокировать ваши файлы данных. Пытаться bdsync или blocksync чтобы увидеть, будет ли последующее резервное копирование быстрее первого. Обратите внимание, что обе утилиты работают с отдельными файлами, поэтому вы должны использовать их в сценарии для копирования нескольких файлов. База данных должен быть остановлен на все время резервного копирования;

  • rsync обычно не рекомендуется для копирования очень больших файлов; однако вы можете попробовать что-то вроде rsync -a --inplace или, с другой стороны, rsync -a -W. Очевидно, вам нужно запустить какой-нибудь тест по времени, чтобы узнать, что rsync вызов лучше подходит для ваших конкретных нужд. Опять же, это нужно делать с базой данных остановлен на все время резервного копирования;

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