Практика резервного копирования на MODX


С ростом опыта и усложнением работ, все актуальнее становится тема резервного копирования базы данных, особенно при наличии большого объема информации.
Хочу поделиться своим опытом с начинающими разработчиками, а также почитать советы опытных мастеров.
Мне такая статья очень пригодилась бы на определенном этапе развития.



Год-полтора назад, в начале своей карьеры MODX разработчика я делал резервные копии сайта следующим образом.
  1. Через PhpMyAdmin делал экспорт базы данных
  2. Чистил каталог cache на хостинге
  3. Архивировал и скачивал файлы и каталоги сайта
Восстановление сайта соответствено происходило в обратном порядке
  1. Загружал архив с файлами на хостинг и распаковывал его
  2. в phpMyAdmin очищал базу данных, если она существовала до этого и делал импорт SQL файла
  3. Проверял и если нужно настраивал конфигурационный файл
Так как я был начинающим разработчиком, то у меня и проекты были соотвествующими: лендинги, небольшие каталоги, визитки. Т.е. проекты с минимальным количеством информации и используемым программным обеспечением.

С ростом опыта и профессиональной наглости проекты начали расти, клиенты стали заказывать все более сложные и объемные сайты, и с моей обычной системой резервного копирования начались проблемы.

Первая проблема с которой я столкнулся это объемная база данных. Оказалось, что у большинства хостингов есть ограничения по объему загружаемого SQL файла. К примеру 32 мегабайта. Выкручиваться было крайне неудобно, приходилось делать SQL запросы вручную по отдельным таблицам.

Следующая проблема которая начала повторяться довольно часто — это ошибки в синтаксисе SQL при импорте таблиц с PHP кодом, например таблицы отвечающей за хранение сниппетов и таблицы с плагинами. Почему то использование приложения minifyx вызывало ошибку.

Умные люди подсказали мне в каком направлении двигаться для решения данных проблем. Оказалось, что существуют автоматизированные скрипты для управления резервным копированием, которые позволяют:
  • Создавать резервную копию базы практически в 2-3 клика мышью
  • Соответственно так же быстро и просто восстанавливать нужную резервную копию
  • Дополнительно скрипт позволяет выполнять проверку и оптимизацию таблиц
Кроме того, при резервном копировании, подобные скрипты в десятки раз сжимают резервную копию базы данных, что конечно же позволят хранить несколько подобных копий.

С тех пор для резервного копирования базы данных я использую PHP скрипт Sypex Dumper 2, который хотел бы порекомендовать и вам.

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

Скрипт руссифицирован, имеет приятный интуитивно понятный веб интерфейс.
На сайте производителя есть подробные инструкции и даже видео по использованию.

Нюансы и проблемы с которыми мне приходилось сталкиваться.
  1. Скрипт не работает на PHP7. Насколько я понял он не обновлялся с 2011 года и работает максимум с PHP 5.6, чего наверное хватит для 90-95% хостингов. UPD В комментариях дали ссылку на версию скрипта, которая работает с PHP7
  2. На некоторых хостингах почему-то не хватало прав доступа и скрипт не запускался. На форуме нарыл решение (выставить вручную права 777 для файла cfg.php)
  3. Не всегда, получается попасть в панель управления. При внимательном рассмотрении оказалось, что по умолчанию скрипт запрашивает localhost. Если вы подключаетесь к другому хосту, нужно указать это при подключении в дополнительных настройках
Итак подведу итог.
Данный скрипт очень сильно сжимает sql файл, архивируя его, что позволяет хранить большее количество копий, быстрее загружать дамп при восстановлении и избежать привышение лимита установленного на хостинге.
Удобная панель управления позволяет делать импорт\экспорт базы практически одной кнопкой.
Все русифицировано (собственно скрипт российского происхождения)
Процесс восстановления позволяет восстанавливать записи любой сложности, даже если там есть ошибки в синтаксисе.
И еще, что порой очень важно, для работы со скриптом не нужен доступ в PhpMyAdmin, который не всегда дают клиенты-параноики. Скрипт работает через браузер по адресу sitename.com/sxd (ну или как назовете каталог).

А какие инструменты используете Вы? Делитесь своим опытом в комментариях.
Как часто делаете резервные копии своей работы? И делаете ли вообще?
28 декабря 2016, 00:24    Николай Савин   
4    1268 +7

Комментарии (20)

  1. Здоров Александр 28 декабря 2016, 01:04 # +2
    Navicat Premium с ежедневным копированием базы данных
    Скрипт не работает на PHP7.
    давно ушел с хостинг площадок где версия ниже и использую самую последнею версию modx которая лучше всего себя чувствует с этой версией php, спасибо за рекомендацию, за ваш труд в написании.
    1. Николай Савин 28 декабря 2016, 01:31 # 0
      Спасибо за Ваше спасибо )
      1. Пётр Молчанов 28 декабря 2016, 12:49 # +1
        1000$ для бэкапа БД? не, не надо
      2. but1head 28 декабря 2016, 05:25 # +3
        modhost.pro и не нужно думать о бэкапах. Идеальный хостинг, вот только не хватает «доверительного управления», в день по 10ти хостингам приходится прыгать. Да и Василий с Леонидом быстро на мои тупые вопросы реагируют :)
        1. Николай Савин 28 декабря 2016, 11:57 # 0
          Спасибо за рекомендацию, надо будет попробовать. Только не всегда вопрос стоит именно в РЕЗЕРВНОМ копировании. Иногда просят разработать обновление сайта, не сломав рабочий проект. Ну к примеру внедрить новую версию MiniShop2.4, которая как известно при обновлении с Minishop2.2 может сломать сайт, так как построена на другой логике.
          Лично мне проще скачать копию сайта себе на локальный хостинг, спокойно все что нужно сделать, проверить, и потом залить готовую копию на рабочий проект.
          1. Павел Карелин 29 декабря 2016, 17:14 # 0
            Тоже когда то работал на локальном хостинге и не понимал как вообще можно удобно работать сразу на удаленном. Открыл для себя PhpStorm. Теперь просто не представляю как можно работать на локалке. По теме, кажется все легко решается или выбором шаред хостинга если не хочется парится. Или настройкой своей VDS под себя.
            1. Николай Савин 29 декабря 2016, 17:17 # 0
              Паш я тоже работаю с PhpStorm с недавних пор. А как ты его к удаленному хостингу подключаешь?
              1. Павел Карелин 29 декабря 2016, 17:39 # +1
                Идешь в Tools -> Deployment. Там должны быть настройки удаленного подключения.
                Если у тебя их нет, то нужно скачать плагин. Идешь в File -> Settings -> Plugins. Плагин называется Remote Hosts Access.
                После этого можно будет добавлять к проекту разные хосты ftp или ssh и работать напрямую.
                Тоже долго разбирался как это все дело запустить, но оно того стоит, очень удобно. Во всяком случае разрабатывать компоненты на порядок проще.
                1. Николай Савин 29 декабря 2016, 18:34 # 0
                  Спасибо друг, облизательно попробую.
                  1. Николай Савин 29 декабря 2016, 19:45 # 0
                    Ну точно, было же. Спасибо за напоминалочку.
          2. Николай 28 декабря 2016, 10:59 # +1
            Сам делаю как и вы только использую админер www.adminer.org/en/phpmyadmin/
            Он легче в разы, не такой монструозный интерфейс и для бекапов его функционала за глаза хватает.

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

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

            Все же решил погуглить по теме вашего поста и с удивлением обнаружил такой вариант
            www.handybackup.ru/modx-backup.shtml

            Не знаю, решены ли в нем ваши проблемы
            1. Николай Савин 28 декабря 2016, 12:03 # 0
              Встречал как то adminer на одном из поддерживаемых проектов, не стал разбираться что это такое, удалил за ненадобностью. Все таки надо будет на досуге потестировать.
              Насчет handybackup я так и не понял при чем тут MODX. Ну копирует эта программа файлы, ну делает бэкап базы. Она же не в админку устанавливается, а работает как отдельный скрипт.
              Походу просто SEO оптимизаторы создали статьи для каждой популярной CMS.
            2. Андрей 28 декабря 2016, 12:08 # 0
              Vapor — отличный инструмент для быстрого клонирования сайта.
              1. Виталий Батушев 29 декабря 2016, 07:52 # 0
                Давно променял Vapor на Teleport.
                Удобно как раз для переносов сайтов и для бэкапов прекрасно — все в одном файле получается.
                Минус только в одном: после inject-а нужно обновить (переустановить) несколько плагинов: MIGX, Ace, CKEditor.
                «Традиционный» бэкап делаю только в силу благоприобретенной паранойи.
                1. Rahim Egamov 09 января 2017, 10:51 # +1
                  Вот рабочий Sypex Dumper на PHP7
                  Тестировал на PHP7.0.8
                  1. Николай Савин 09 января 2017, 12:32 # +1
                    Спасибо, загуглил по версии скрипта, оказывается у них есть англоязычный сайт с обновленной версией
                    1. Дмитрий Суворов 09 января 2017, 12:44 # 0
                      не поделитесь ссылкой?
                      1. Николай Савин 09 января 2017, 13:05 # 0
                        Я все таки ввел в заблуждение. На англоязычной версии сайта висит все та же версия. В комментарии выше можно скачать файл, он кем то модифицирован. Это не оригинальная версия от производителя. Вес файла отличается.
                        1. Rahim Egamov 09 января 2017, 13:42 # 0
                          Да но работает без проблем!
                          Нажмите PHP7 и скачайте
                  Вы должны авторизоваться, чтобы оставлять комментарии.