Привет! У нас есть отличные новости, которыми мы хотим поделиться с вами о инструменте резервного копирования Manticore, который мы недавно выпустили в рамках Manticore Search 6 . Если вы цените свои данные и хотите обеспечить их безопасность, то это определенно то, что вам стоит проверить.
Этот инструмент меняет правила игры, когда дело доходит до резервного копирования ваших данных Manticore. Вам больше не нужно беспокоиться о потере важной информации из-за сбоев системы или других непредвиденных событий. С новым инструментом вы можете легко автоматизировать процесс резервного копирования, добавив его в свою задачу cron. Это означает, что вы можете расслабиться, зная, что ваши данные защищены.
История
В прошлом обеспечение безопасности ваших данных было сложной задачей, требующей ручного резервного копирования, которое часто занимало много времени и было подвержено ошибкам. Давайте вспомним, как это было сложно.
Manticore Search поддерживает два типа таблиц: RT (реального времени) и plain. Хотя обе служат разным целям, стоит отметить, что резервное копирование обычных таблиц относительно просто, в то время как таблицы RT требуют более тонкого подхода.
Резервное копирование RT таблиц
Вы, вероятно, долгое время испытывали трудности с резервным копированием данных Manticore Search RT таблиц, не имея надежного инструмента, чтобы сделать этот процесс бесшовным. Если вам интересно, позвольте мне провести вас по дорожке воспоминаний и объяснить, что включал в себя процесс ручного резервного копирования:
- Во-первых, было важно остановить Manticore Search и убедиться, что все данные были правильно сброшены и программа завершила работу корректно.
- Затем вам нужно было найти папки
data_dir/path, обратившись к конфигурации Manticore, и скопировать все данные из них. Это обеспечивало сохранение всех данных и возможность их восстановления при необходимости. Важно отметить, что при работе с большими объемами данных процесс резервного копирования может занять некоторое время, что приведет к простоям, пока экземпляр остановлен. Тем не менее, этот шаг необходим для обеспечения безопасности и доступности ваших данных. - Наконец, вам нужно было снова запустить Manticore Search.
В качестве альтернативы вы могли установить set global maintenance=1, а затем выполнить резервное копирование или переключить ваше приложение на _readonly слушатель и убедиться, что любые записи приостановлены.
Резервное копирование обычных таблиц
Когда вы используете обычные таблицы в Manticore Search, файлы на диске обновляются только тогда, когда вы запускаете индексатор или вносите изменения в атрибуты через SQL-запрос. Этот простой подход облегчает резервное копирование вашего индекса. Хотя это не сложная задача, у нас все же есть планы включить ее в инструмент резервного копирования. Вы можете оставаться на связи и следить за обновлениями, проверяя соответствующий вопрос .
Новый инструмент резервного копирования предоставляет значительно более простой способ управления резервными копиями. С ним все упрощено и понятно. Вы даже можете запланировать регулярные резервные копии, чтобы всегда иметь последнюю версию ваших данных под рукой, без простоя или хлопот.
На пути к разработке инструмента резервного копирования
Для разработки инструмента нам пришлось добавить дополнительные функции в нашу существующую систему Manticore: команды FREEZE и UNFREEZE, которые играют ключевую роль в обеспечении согласованности ваших данных во время процесса резервного копирования.
Команды FREEZE и UNFREEZE в Manticore Search работают немного иначе, чем традиционная функция блокировки и разблокировки таблиц в MySQL. При использовании FREEZE прекращается сброс данных на диск, но все еще разрешается запись в таблицу и выбор обновленных данных из нее. Важно отметить, что если размер вашего блока ОЗУ превышает порог rt_mem_limit во время выполнения длительной операции резервного копирования с большим количеством вставок, это может привести к сбросу данных на диск. Только тогда операции записи будут заблокированы до завершения сброса. Тем не менее, этот подход позволяет достичь баланса между полной блокировкой таблицы, поддержанием согласованности данных и обеспечением доступности записи в базу данных, пока таблица заморожена.
Эти функции были необходимы для надежного онлайн решения для резервного копирования. Без них восстановление ваших данных могло бы привести к несогласованным или поврежденным данным, что вызвало бы серьезные проблемы и стоило бы вам времени и ресурсов. Чтобы обеспечить правильную логику резервного копирования, мы начинаем с замораживания всех таблиц. Затем мы продолжаем резервное копирование каждой таблицы по одной и выполняем UNFREEZE после каждого резервного копирования. Кроме того, инструмент имеет защитную меру, которая автоматически выполняет UNFREEZE для всех таблиц в случае, если процесс завершится неудачно или будет прерван пользователем.
После того как мы убедились, что у нас есть необходимые команды для безопасной реализации логики копирования данных, возник следующий вопрос – какой язык программирования нам следует использовать для реализации инструмента? Наша команда уже решила использовать PHP в качестве основного языка для проекта Manticore Buddy . Поэтому для нас было простым решением реализовать процесс резервного копирования данных с использованием PHP:
- Прежде всего, PHP предоставляет большую гибкость по сравнению с Bash, который обычно используется для подобных инструментов. Это было критически важно для специфических требований нашего проекта. Например, это позволяет использовать инструмент в среде Windows, что было бы невозможно с Bash.
- Во-вторых, и что более важно, мы разработали его таким образом, чтобы мы могли повторно использовать один и тот же код с тем же уровнем гибкости в Manticore Buddy.
Инструмент резервного копирования требует определенных внешних модулей, включая сжатие. Чтобы упростить его использование, мы статически компилируем PHP и включаем все расширения в него. Этот объединенный объект называется manticore-executor. По сути, это как PHP, но со всем включенным для запуска различных проектов Manticore Search на PHP: Manticore Buddy и инструмент резервного копирования. Вы можете ознакомиться с нашей историей о разработке
Manticore Buddy и о том, как мы использовали PHP там
.
Это сделало возможным использование инструмента не только из командной строки, но и как новой SQL команды внутри Manticore, используя ту же кодовую базу.
Теперь давайте узнаем, как сделать резервную копию ваших данных, используя интерфейсы CLI и SQL!
manticore-backup - версия CLI
Новый инструмент резервного копирования был выпущен в Manticore 6 , поэтому установка его не составит труда, если вы просто следуете странице руководства по установке Manticore .
Предполагая, что вы успешно установили инструмент резервного копирования, теперь у вас должен быть доступ к исполняемому файлу manticore-backup. Давайте рассмотрим несколько примеров из реальной жизни, как вы можете использовать инструмент в своей повседневной работе. Для начала убедитесь, что вы создали папку /backup для хранения всех ваших резервных копий. Эта папка будет использоваться во всех следующих примерах, чтобы проиллюстрировать, как работает инструмент, но, конечно, это не обязательно должно быть именно /backup, вы можете выбрать любой путь, который хотите.
- Сценарий 1: вы хотите сделать резервную копию всей вашей инстанции Manticore:
manticore-backup --config=/etc/manticore/manticore.conf --backup-dir=/backup
- Сценарий 2: вы хотите сделать резервную копию только нескольких таблиц:
manticore-backup --config=/etc/manticore/manticore.conf --backup-dir=/backup --tables=users,messages,products
Не забывайте регулярно делать резервные копии ваших данных, чтобы убедиться, что все в безопасности. Более того, рекомендуется зеркалировать их на другой сервер или в дата-центр, чтобы гарантировать доступность всех данных в любое время.
Проверьте раздел помощи по резервному копированию для глубокого погружения в использование инструмента.
Как использовать команду SQL BACKUP?
Manticore 6 также позволяет вам делать резервные копии, используя SQL интерфейс, не устанавливая ничего и не следуя специальным инструкциям. Вы можете использовать тот же подход, обсуждаемый в предыдущем разделе, чтобы сделать резервную копию как всей инстанции, так и конкретных таблиц.
- Для резервного копирования всей инстанции используйте эту команду:
BACKUP TO /backup
- Для резервного копирования конкретных таблиц используйте это:
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 ❤️
