⚠️ Эта страница автоматически переведена, и перевод может быть несовершенным.
blog-post

New backup and recovery approaches

Привет! У нас есть отличные новости, которыми мы хотим поделиться с вами о инструменте резервного копирования Manticore, который мы недавно выпустили в рамках Manticore Search 6 . Если вы цените свои данные и хотите обеспечить их безопасность и защиту, то это определенно то, что вам стоит посмотреть.

Этот инструмент меняет правила игры в резервном копировании ваших данных Manticore. Вам больше не нужно беспокоиться о потере важной информации из‑за сбоев системы или других непредвиденных событий. С новым инструментом вы можете легко автоматизировать процесс резервного копирования, добавив его в cron. Это значит, что вы можете расслабиться, зная, что ваши данные защищены.

История

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

Manticore Search поддерживает два типа таблиц: RT (real-time) и plain. Хотя они служат разным целям, стоит отметить, что резервное копирование обычных таблиц относительно простое, тогда как таблицы RT требуют более тонкого подхода.

Резервное копирование RT‑таблиц

Возможно, вам приходилось долго бороться с резервным копированием данных Manticore Search в RT‑таблицах без надёжного инструмента, упрощающего процесс. Если вам интересно, позвольте провести вас по памяти и объяснить, что включал в себя ручной процесс резервного копирования:

  • Во‑первых, было важно остановить Manticore Search и убедиться, что все данные были корректно сброшены, а программа завершилась правильно.
  • Затем вам нужно было найти папки data_dir / path, обратившись к конфигурации Manticore, и скопировать оттуда все данные. Это гарантировало сохранение всех данных и возможность их восстановления при необходимости. Важно отметить, что при работе с большими объёмами данных процесс резервного копирования может занять некоторое время, вызывая простой, пока экземпляр остановлен. Тем не менее, этот шаг необходим для обеспечения безопасности и доступности ваших данных.
  • Наконец, вам нужно было снова запустить Manticore Search.

В качестве альтернативы вы могли выполнить set global maintenance=1, а затем выполнить резервное копирование, или переключить приложение на слушатель _readonly и убедиться, что все записи приостановлены.

Резервное копирование обычных таблиц

При использовании обычных таблиц в Manticore Search файлы на диске обновляются только при запуске индексатора или обновлении атрибутов через SQL‑запрос. Такой простой подход упрощает резервное копирование вашего индекса. Хотя это и не сложная задача, мы планируем включить её в инструмент резервного копирования. Следите за обновлениями, проверяя соответствующий issue .

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

На пути к разработке инструмента резервного копирования

Для разработки инструмента нам пришлось добавить дополнительные возможности в нашу существующую систему Manticore: команды FREEZE и UNFREEZE, которые играют решающую роль в обеспечении согласованности ваших данных во время процесса резервного копирования.

Команды FREEZE и UNFREEZE в Manticore Search работают немного иначе, чем традиционная функция блокировки и разблокировки таблиц в MySQL. При использовании FREEZE прекращается сброс данных на диск, но при этом продолжается запись в таблицу и выборка обновлённых данных из неё. Важно отметить, что если размер вашего блока RAM превысит порог rt_mem_limit во время длительной операции резервного копирования с большим количеством вставок, данные могут быть сброшены на диск. Только тогда операции записи будут блокированы до завершения сброса. Тем не менее, такой подход позволяет найти баланс между полной блокировкой таблицы, поддержанием согласованности данных и обеспечением доступности записи в базе, пока таблица заморожена.

Эти функции были необходимы для надёжного online решения резервного копирования. Без них восстановление данных могло привести к несогласованным или повреждённым данным, вызывая серьёзные проблемы и требуя затрат времени и ресурсов. Чтобы обеспечить правильную логику резервного копирования, мы начинаем с FREEZING всех таблиц. Затем последовательно резервируем каждую таблицу и после каждой резервной копии выполняем UNFREEZE. Кроме того, инструмент имеет защитный механизм, который автоматически выполняет UNFREEZE для всех таблиц в случае сбоя процесса или его принудительного завершения пользователем.

Убедившись, что у нас есть необходимые команды для безопасной реализации логики копирования данных, возник следующий вопрос — какой язык программирования использовать для создания инструмента? Наша команда уже решила использовать PHP в качестве основного языка для проекта Manticore Buddy . Поэтому решение реализовать процесс резервного копирования данных с помощью PHP было простым:

  • Прежде всего, PHP обеспечивает большую гибкость по сравнению с Bash, который обычно используется для подобных инструментов. Это было критически важно для специфических требований нашего проекта. Например, это позволяет использовать инструмент в среде Windows, что было бы невозможно с Bash.
  • Во‑вторых, и что ещё важнее, мы спроектировали его так, чтобы можно было повторно использовать тот же код с тем же уровнем гибкости в Manticore Buddy.

Инструмент резервного копирования требует определённых внешних модулей, включая сжатие. Чтобы упростить его использование, мы статически компилируем PHP и включаем в него все расширения. Этот объединённый объект известен как manticore-executor. По сути, это как PHP, но со всеми включёнными компонентами для запуска различных PHP‑проектов Manticore Search: Manticore Buddy и инструмента резервного копирования. Вы можете ознакомиться с нашей историей разработки Manticore Buddy и тем, как мы использовали PHP в нём .

Это сделало возможным использование инструмента не только из командной строки, но и как новой SQL команды внутри Manticore, используя ту же кодовую базу.

Теперь давайте узнаем, как сделать резервную копию ваших данных, используя интерфейсы CLI и SQL!

manticore-backup - версия CLI

Новый инструмент резервного копирования был выпущен в Manticore 6 , поэтому установка его не составит труда, если вы просто следуете странице руководства по установке Manticore .

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

  1. Сценарий 1: вы хотите сделать резервную копию всей вашей инстанции Manticore:
manticore-backup --config=/etc/manticore/manticore.conf --backup-dir=/backup
  1. Сценарий 2: вы хотите сделать резервную копию только нескольких таблиц:
manticore-backup --config=/etc/manticore/manticore.conf --backup-dir=/backup --tables=users,messages,products

Не забывайте регулярно делать резервные копии ваших данных, чтобы убедиться, что все в безопасности. Более того, рекомендуется зеркалировать их на другой сервер или в дата-центр, чтобы гарантировать доступность всех данных в любое время.

Проверьте раздел помощи по резервному копированию для глубокого погружения в использование инструмента.

Как использовать команду SQL BACKUP?

Manticore 6 также позволяет вам делать резервные копии, используя SQL интерфейс, не устанавливая ничего и не следуя специальным инструкциям. Вы можете использовать тот же подход, обсуждаемый в предыдущем разделе, чтобы сделать резервную копию как всей инстанции, так и конкретных таблиц.

  1. Для резервного копирования всей инстанции используйте эту команду:
BACKUP TO /backup
  1. Для резервного копирования конкретных таблиц используйте это:
BACKUP TABLES users, messages, products TO /backup

Имейте в виду, что резервное копирование большого объема данных может занять некоторое время. Чтобы избежать беспокойства о потере соединения с Manticore во время выполнения команды BACKUP, вы можете выполнить запрос асинхронно. Вы мгновенно получите ID запроса и сможете проверить статус процесса резервного копирования позже, отправив команду SHOW QUERIES. Вот пример:

BACKUP TO /backup OPTION async=1

Это так просто!

Теперь вы, возможно, задаетесь вопросом: "Что насчет восстановления резервных данных?

Восстановление

Мы успешно создали резервную копию, используя два разных метода, обеспечивая безопасность ваших данных. Но как восстановить ваши данные? Не волнуйтесь, мы вас поддержим.

На данный момент manticore-backup поддерживает только восстановление полной резервной копии, пока демон поиска Manticore остановлен, но у нас есть планы добавить восстановление отдельных таблиц.

Предположим, что вы сделали резервную копию ваших данных в /backup, и инструмент резервного копирования создал и сохранил все ваши данные в папке с именем backup-20230305121400. Вам нужно остановить вашу инстанцию поиска Manticore, удалить все данные и конфигурацию и выполнить команду:

 manticore-backup --config=/etc/manticore/manticore.conf --backup-dir=/backup --restore=backup-20230305121400

Если вы все еще хотите восстановить конкретную таблицу, вы можете использовать IMPORT TABLE в SQL режиме. Например, если у вас есть таблица с именем users в вашей резервной копии, вам просто нужно отправить запрос, подобный этому:

IMPORT TABLE users FROM '/backup/backup-20230305121400/data/users'

Вы можете найти больше информации о manticore-backup --restore в документации здесь и о команде IMPORT здесь .

Резюме

Когда дело доходит до работы в производственной среде, резервное копирование ваших данных является абсолютной необходимостью. И теперь, с помощью manticore-backup и команды BACKUP, вы можете сделать это с легкостью.

Чтобы начать работу с новыми инструментами резервного копирования, посетите нашу документацию . Мы уверены, что вам это понравится! Если у вас есть какие-либо предложения по функциям, пожалуйста, поделитесь ими с нами через GitHub Issues .

С наилучшими пожеланиями, Команда Manticore ❤️

Установить Manticore Search

Установить Manticore Search