Проблемы с добавлением ролей в резервную копию

Проблемы с добавлением ролей в резервную копию

от Павел . -
Количество ответов: 25

Здравствуйте, уважаемые участники дискуссии!

Возникла проблема с бэкапами - туда не записываются роли студентов и преподавателей.

Перед описанием проблемы приведу информацию:

Сайт, на котором делается бэкап (первый сервер) - moodle 1.9.11

Сайт, на который заливается бэкап (второй сервер) - moodle 1.9.19

Оси на обоих серверах - FreeBSD 8.2

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

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

В ответ на Павел .

Re: Проблемы с добавлением ролей в резервную копию

от Alexandre Scherbyna -

А кто делает бэкап, администратор сайта или кто-то другой?

В ответ на Alexandre Scherbyna

Re: Проблемы с добавлением ролей в резервную копию

от Павел . -

Да, пользователь с административными правами. Тот администратор, который устанавливал сайт по непонятной причине не дал мне пароля на главную учетную запись, которая создается при установке сайта, а дал мне административные права. После сбоя по недосмотру администратора сервера перестали отображаться результаты в некоторых курсах, попытки есть но отображается надпись нечего показывать. Сайт был перенесен на новый сервер. После второго сбоя (зависание сервера, опять же по недосмотру администратора) появилась такая проблема. Бэкап формируется на рабочем сервере, восстанавливается на мой, но по выбору в разных курсах либо восстанавливаются только роли учителей, либо вообще не восстанавливаются никакие роли для курса. Даже попытки видно с оценками для тестов, но при щелчке по пользователю высвечивается надпись "имя_пользователя не зарегистрирован для этого курса". С бэкапами, сделанными до первого сбоя все восстанавливается отлично, все роли на месте.

В ответ на Павел .

Re: Проблемы с добавлением ролей в резервную копию

от Vadim Tabunshchik -
Изображение пользователя Developers

Павел, во-первых, тему Вы назвали неверно (проблема в сбоях сервера, а не в добавлении ролей и т. п.), во-вторых - вопрос Мудл не касается, потому как проблему Вы озвучили сами: "С бэкапами, сделанными до первого сбоя все восстанавливается отлично, все роли на месте."

Ваши сбои на сервере мы не вылечим. Обращайтесь к админу старого сервера, есть ли возможность восстановления БД до нормального работоспособного варианта (до сбоев), потом переносите курсы. Если админ бэкапы БД вовремя и регулярно не делал, придётся все назначения ролей восстанавливать ручками.

Даже попытки видно с оценками для тестов, но при щелчке по пользователю высвечивается надпись "имя_пользователя не зарегистрирован для этого курса".

Оценки в таблице quiz_grades сохранились, назначения ролей в role_assignments - нет, может, таблица после сбоев сервера повреждена.

В ответ на Vadim Tabunshchik

Re: Проблемы с добавлением ролей в резервную копию

от Павел . -

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

Также я исследовал структуру таблиц в базе moodle, она безобразна. Где связи, индексы, ключи, а также каскадное обновление, удаление, триггеры, процедуры и прочие полезные вещи? Moodle не застрахован никак от сбоя, да и вообще после удаления пользователя из базы он лишь имеет статус удаленного в базе, то есть меняется лишь признак удаления на 1, но сам пользователь остается в базе и она никак каскадно не очищается (по идее если удалить пользоваателя, то должен срабатывать механизм каскадного удаления, то есть удаляться должна из базы вся информация о нем, включая оценки, активность на форумах и.т.д)! На деле же удаление происходит с сайта, но не из базы. Благодаря этому даже база нормально работающего сайта превращается в Авгиевы конюшни, распухает в размере и теряет всякий нормальный вид, причем кучу мусора отследить в базе никак невозможно.

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

 

В ответ на Павел .

Re: Проблемы с добавлением ролей в резервную копию

от Игорь Поздеев -

Проблема Павел у вас. Как хроший исследователь проанализируйте статистику использования системы Moodle, ниже.

Зарегистрированные сайты 72,102
Стран 223
Курсов 6,886,925
Пользователей 63,959,911
Преподавателей 1,290,022
Записей на курсы 49,361,020
Сообщений в форумах 115,030,552
Ресуров 61,738,924
Вопросов для тестов 134,773,642
В ответ на Павел .

Re: Проблемы с добавлением ролей в резервную копию

от Vadim Tabunshchik -
Изображение пользователя Developers

Павел, разбираться в вашей проблеме нужно с того момента, как на сервере произошли сбои. Что Вы теперь хотите от Мудл, если, по всей вероятности, её БД была повреждена? И "вопите" не на меня, а на своего админа (с первого сайта). Это раз.

Второе.
я исследовал структуру таблиц в базе moodle, она безобразна

Может быть, но чем-то же нужно жертвовать. Иначе бы Мудл не поддерживала такое количество типов БД: http://docs.moodle.org/24/en/Installing_Moodle#Software
Покажите мне ещё хоть одну LCMS, поддерживающую столько БД?
Если можете оптимизировать, усовершенствовать, то Вам сюда: https://moodle.org/dev/
Но не нужно "хаять" чужой труд и всем рассказывать, как всё плохо. Работа по совершенствованию Мудл (в т. ч. и её БД) ведётся от версии  к версии, делайте скидку на то, что проект абсолютно бесплатный.

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

Это сделано специально для того, чтобы при восстановлении пользователя можно было "поднять" всю его историю обучения. Не сталкивались с такой ситуацией? В жизни, не в Мудл?
Предложите другой механизм, если Вас этот не устраивает.
И почитайте справку по Reset_course

проект ваш не будет нормально работать

Ошибаетесь. Посмотрите статистику. Работать он нормально не будет у того, кто к нему относится "спустя рукава". улыбаюсь

И последнее: считаете, что с БД Мудл всё нормально - настраивайте опции резервного копирования (в частности, Восстановить назначения для этих ролей). Может, при создании/восстановлении бэкапа курса где-то галочки пропустили.

В ответ на Vadim Tabunshchik

Re: Проблемы с добавлением ролей в резервную копию

от Павел . -

Я не хаю чужой труд, а говорю так как есть. Статистика меня не интересует. И такую опцию - восстановить назначения для этих ролей я не нашел нигде, может быть подскажете где тут проблема? Если это то, что во вложении я все делаю правильно. Я по БД еще раз пробегусь, попробую ее восстановить средствами phpmyadmin.

Приложение Проблема с сайтом.png
В ответ на Павел .

Re: Проблемы с добавлением ролей в резервную копию

от Vadim Tabunshchik -
Изображение пользователя Developers

Ладно, проехали улыбаюсь

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

Ukr

Естественно, нужно включать в бэкап всех пользователей и их данные.

PS: попробовал пернести курс с одного сайта на другой (правда версии ~одинаковы) - без проблем перенеслись и пользователи с ролями (преподаватель, у кот. даже не было аккаунта на сайте), студенты с группами, логи деятельности пользователей, результаты тестирования, ну и всё остальное:

г1 г2

 

 

В ответ на Vadim Tabunshchik

Re: Проблемы с добавлением ролей в резервную копию

от Павел . -

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

В ответ на Павел .

Re: Проблемы с добавлением ролей в резервную копию

от Vadim Tabunshchik -
Изображение пользователя Developers

Павел, Вы по совету В. Лаврова просматривали файл moodle.xml в архиве с бэкапом? Если там нет строк с назначением ролей студентов, то проблема на первом сервере (при создании рез. копии), если есть - то на втором (при восстановлении курса).

Проверьте запросом по базе на первом сайте, какие студенты записаны в конкретный курс, чтобы сравнить потом с moodle.xml. Вот пример запроса (хх - это ID нужного) курса:

SELECT
/*r.name AS 'РОЛЬ',
c.id AS 'ID курса',
c.fullname AS 'НАЗВАНИЕ КУРСА',*/
CONCAT(u.lastname,' ',u.firstname) AS 'ФИО',
u.id AS 'ID студента'
FROM
mdl_user AS u,
mdl_role AS r,
mdl_role_assignments AS ra,
mdl_context AS ctx,
mdl_course AS c
WHERE ra.userid = u.id AND ra.roleid = r.id AND ctx.id = ra.contextid AND c.id = ctx.instanceid AND
r.id = 5 AND c.id = xx
ORDER BY
/*c.shortname ASC,*/
u.lastname ASC

В ответ на Павел .

Re: Проблемы с добавлением ролей в резервную копию

от Виталий Лавров -
Изображение пользователя Эксперт по Moodle

Формат бекапа прост до безобразия. Главный файл - moodle.xml

Найдите в moodle.xml строку <ROLES_ASSIGNMENTS>

далее для каждой роли  будут секции

        <ROLE>
          <ID>3</ID>
          <NAME>Teacher</NAME>
          <SHORTNAME>editingteacher</SHORTNAME>
          <ASSIGNMENTS>
            <ASSIGNMENT>
              <USERID>26000</USERID>
              <HIDDEN>0</HIDDEN>
              <TIMESTART>0</TIMESTART>
              <TIMEEND>0</TIMEEND>
              <TIMEMODIFIED>1328865897</TIMEMODIFIED>
              <MODIFIERID>26000</MODIFIERID>
              <ENROL>manual</ENROL>
              <SORTORDER>0</SORTORDER>
            </ASSIGNMENT>
          </ASSIGNMENTS>
        </ROLE>


Если этой инфы нет, то и восстанавливать нечего.

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

А на счет мудла - у него низкий порог вхождения, бесплатность, локализация и приличный функционал.  За счет этого он и выжил. А то, что внутри уродство, дык на php в принципе нельзя писать приличные вещи, да и mysql со своими врожденными уродствами сказывается. На момент создания moodle там небыло ни триггеров, ни транзакций, ни внешних ссылок и вложенные запросы работали от версии к версии с разными результатами.

Никто не мешает выбросить mysql, поставить postgres улыбаюсь

PS не уж-то так сложно настроить бекап ?

В ответ на Виталий Лавров

Re: Проблемы с добавлением ролей в резервную копию

от Павел . -

Еще у меня появилась проблема гораздо более серьезная. Я делаю восстановление курса, и выбираю ВСЕХ пользователей (а их у меня около 1000), но в этом случае ни одного не восстанавливается. Попадалово конкретное, восстанавливаются только пользователи курса.

В ответ на Павел .

Re: Проблемы с добавлением ролей в резервную копию

от Vadim Tabunshchik -
Изображение пользователя Developers

У вас второй сайт, на который переносите данные, пустой вообще?

Если ДА, то чего голову морочить? Очистите ВСЕ таблицы, сделайте дамп БД первого сайта и залейте на второй, БД второго сайта обновится сама (т. к. версия Мудл повышается).

В ответ на Vadim Tabunshchik

Re: Проблемы с добавлением ролей в резервную копию

от Павел . -

Да, пустой. Я пробовал так делать, вообще по всякому, но проблема остается. Вдобавок еще ошибка при просмотре результатов тестов в некоторых курсах (попытки есть, но высвечивается "нечего показывать") и при восстановлении из бэкапа для тестов возникает ошибка "could not random id multichoice".

В ответ на Виталий Лавров

Re: Проблемы с добавлением ролей в резервную копию

от Павел . -

И для преподавателя, и у студента информация такая <ROLE> есть, но ничего из бэкапа не восстанавливается. Может быть это связано с тем, что я включал на время E-Mail аутентификацию и сбил какие - то настройки? Я кодовое слово указывал для каждого курса, и устанавливал что-то вроде курс доступен для самозаписи - нет. Это могло повлиять? Потом я это конечно убрал, но проблема видно осталась - бэкапы без ролей сохраняются, только учителя.

В ответ на Павел .

Re: Проблемы с добавлением ролей в резервную копию

от Alexandre Scherbyna -

> Может быть это связано с тем, что я включал на время E-Mail аутентификацию

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

В ответ на Alexandre Scherbyna

Re: Проблемы с добавлением ролей в резервную копию

от Павел . -

По E-Mail аутентификации было записано всего 2 человека. Еще одну особенность заметил, означающую конец сайта дистанционного обучения - все наверное придется импортировать вручную и создавать новые курсы на новом сайте летом - на всех бэкапах дата начала курса 4 апреля 2011 года. Когда я переставляю дату на 25 декабря 2012 года на некоторых курсах не восстанавливаются даже роли учителей. Весь сайт придется делать заново, включая ручной импорт вопросов, пользователей и всех курсов. Опять предстоит огромная работа. Из-за ошибок типа нечего показывать (не отображаются результаты тестирования ) я не могу сбросить результаты тестирования перезаливанием бэкапа на свой сервер (не восстанавливаются роли, а это означает, что если я перезалью бэкап на основной сервер то все студенты вылетят с курса, и придется либо их записывать вручную, либо им самим записываться на курс. И такая проблема как раз перед сессией. Пытался восстанавливать копии курса с моего сервера на действующем, появились какие - то группы, но роли по прежнему не восстанавливаются. Во вложении ошибка, которая возникает при востановлении из бэкапа, не знаю с чем она связана.

Только что перезалил бэкап с моего сервера на действующий. Роли там восстановились нормально. Но когда я пытаюсь на своем сервере бэкап восстановить, то проблема остается. Может быть это связано с тем, что я обновился до новой версии MySQL?

 

Приложение Ошибка при копировании.png
В ответ на Павел .

Re: Проблемы с добавлением ролей в резервную копию

от Vadim Dvorovenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода

Когда я переставляю дату на 25 декабря 2012 года на некоторых курсах не восстанавливаются даже роли учителей.

Возможно при зачислении пользователя на курс был указан срок обучения, по умолчанию это 120 дней. Вполне возможно что из=за этого спустя полгода они и не восстанавливаются - время то уже прошло.

Сайт, на котором делается бэкап (первый сервер) - moodle 1.9.11
Сайт, на который заливается бэкап (второй сервер) - moodle 1.9.19

С этим и у продуктов посерьёзнее проблемы-то бывают, а уж и с мудлом - и подавно. Хотите, чтобы всё было идеально - работайте с одинаковыми версиями системы. Как этого добиться. 

Вариант 1. Сделайте копию сайта в 1.9.11, включая базу данных, файлы мудлдата и файлы php-файлы. Работайте с этой копией. Скопируйте поверх версию 1.9.19, зайдите под админом, чтобы сделать апгрейд. После этого делайте бэкап и разворачивайте его на своей системе. 

Вариант 2. Поставьте на второй сервер версию 1.9.11. Так вы её не скачаете, но можно взять её из git-репозитория. Подробнее тут http://docs.moodle.org/24/en/Git_for_Administrators Я бы посоветовал поставить git-extentions. В фильтре наберите номер версии и она найдётся. А уже после восстановления бэкапа на тужен версию, обновляетет её до новой.

В ответ на Павел .

Re: Проблемы с добавлением ролей в резервную копию

от Vadim Tabunshchik -
Изображение пользователя Developers

По E-Mail аутентификации было записано всего 2 человека.

Не 2, аж целых 5.  Фамилии называть не буду. улыбаюсь

Павел, из прикрепленного вами архива с moodle.xml я восстановил курс на своем сайте. В итоге:

  1. Из 987 пользователей сайта "на месте" оказались 956. Куда делись остальные - разбираться не стал (к примеру, пользователь с ИД=110). Смотрите сами, в чем дело.
  2. В курс записалось 14 чел.: 2 препода и 12 студентов.
  3. При восстановлении были те же ошибки с вопросами, как у вас на скрине. Но, список студентов с попытками есть. Что касается ошибок, то кто-то намудрил с вопросами (удалял, потом вновь добавлял), т. к. в подробном отчете по попытке отдельно взятого студента вместо текста вопроса выводится информация "Этот вопрос был удалён. Пожалуйста, свяжитесь с преподавателем." Вопросы в тест добавлялись случайным образом, отсюда сообщение "…random xxxx-xxxx for state…"
  4. Научите пользователей вписывать Имя и Фамилию в соответствующие поля, а не как попало. Замучаетесь админить пользователей улыбаюсь
  5. Хотите посмотреть курс, регистрируйтесь на moodle.pstu.edu, права на курс попросите через личку.
В ответ на Vadim Tabunshchik

Re: Проблемы с добавлением ролей в резервную копию

от Павел . -

Vadim спасибо Вам большое за исследование файла.

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

Я строго учту Ваше указание заполнять как следует имя и фамилию, т.к. из-за этого уже были проблемы при поиске учетных записей.

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

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

После этого администратор сервера не переустанавливая (!) систему сделал ее дамп на другой медицинский сервер. После этого он перенес дамп на новый сервер, и настроил moodle там, но не ту версию, которая соответствует резервным копиям а более новую (см мой самый первый пост). И на этом действующем сервере настройка произведена безобразно (не установлена защита от брутфорса, открыт root ssh, не обновлено ПО до последних версий).

После этого и появились сначала проблемы типа "Нечего показывать" (то есть попытки в тестах есть, но ни один из студентов не отображается), потом проблемы с could not random id multichoice.

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

Мой сервер в отличие от старого настроен очень аккуратно, обновлено все ПО, включая WEB сервер (Apache + PHP + MySQL), тщательно проработаны правила брандмауэра IPFW и поставлена защита от брутфорсинга и прочих пакостей (fail2ban). Поэтому я не считаю свой сервер причиной сбоев, хотя они там тоже наблюдаются, что вероятно связано со старым сервером.

В настоящий момент устранение ошибок возможно только при полной очистке курса от элементов активности (в том числе от оценок). Но в разгаре учебного процесса делать это крайне нежелательно, т.к. студенты не смогут учиться нормально, им опять придется все пересдавать (кстати, если я делаю бэкапы без данных пользователя и затем их восстанавливаю то ошибки типа could not random id multichoice не появляется!)

Таким образом, я сейчас решаю проблему так:

1. С первого сервера (старого) снимаю бэкап курса без данных пользователя, выбираю в резервной копии пользователей курса.

2. Заливаю бэкап на второй (мой) сервер с чистой базой данных (полностью чистый сайт), кстати Вы правы, восстанавливается только 12 ролей студентов при этом, хотя их было больше сотни (пользователи курса 14, как Вы и сказали).

3. Снимаю бэкап со второго сервера (моего) и заливаю на первый (старый) сервер, переименовав курс (добавив к нему - Восст.). При этом пользователей курса становится больше сотни, но все же не все опять же записаны на курс (то есть из сотни студентов где - то около четверти только записаны).

4. Даю информацию преподавателям, что дальнейшие тесты нужно решать на очищенном курсе ( с Восст.), а результаты предыдущих тестов смотреть на старом курсе.

Когда придет время, я проведу таким образом очистку всех бэкапов от данных пользователя (предварительно убедившись, что все оценки зафиксированы, и переданы в деканат в бумажном виде!) и произведу переустановку из этих бэкапов на новый свежий сайт (сначала на версию 1.9.11 строго в соответствии с версией сайта, с которого был снят бэкап, потом обновлю до более новой версии сайта 1.9.x). Копировать явно поврежденную папку moodledata и базу данных со старого сервера как мне советовал бывший администратор, не считаю целесообразным, т.к. наверняка они повреждены, если мне приходится иметь дело с поврежденными резервными копиями, которые я вынужден очищать. Более рационального и быстрого решения проблемы в данный момент я не вижу.

В ответ на Павел .

Re: Проблемы с добавлением ролей в резервную копию

от Vadim Dvorovenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода

Павел, ещё один совет. Версия 1.9. уже порядком устарела и, рано или поздно, если вы намерены развивать систему, придётся переезжать на moodle 2.x. С 1.9 вы сможете обновиться только до 2.2, а уже оттуда до 2.4. Вот с переходом с 1.9 на 2.2 связано огромное количество проблем, к которым я бы посоветовал начать присматриватся уже сейчас, когда вы всё-равно переносите материалы  в бэкапах с сервера на сервер.

Проблема 1 - модули системы тестирования. Систему тестирования мудла допиливают практически ежегодно, поэтому в более новых версиях может оказаться много нового. Придётся проверять, есть ли модули на все типы вопросов, сохраняется ли поведение тестов при переносе на новую версию.

Проблема 2- рисунки в тестах. Если у вас они используются, то могут возникнуть проблемы и  с ними.

Проблема 3 - бездонная помойная яма под названием файлы курса. В мудл 1.9 файлы складываются в папку "файлы курса", где их никто ниикогда не удаляет, даже если эти файлы больше не используются. Это создаёт проблемы с бэкапами неимоверных размеров, а также неконтролируюемый рост размера сайта. В мудле 2.x файлы хранятся уже с привязкой к элементам курса, поэтому будут удаляться автоматически при удалении элемента и не будут засорять диск. Но устаревшая область файлов курса всё-равно будет сохранена для совместимости, а если вы хотите порядка, то нужно будет придумать, как от неё избавиться.

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

P.S. Чтобы было меньше проблем на Вашем этапе 4, я бы посоветовал вам вообще осуществлять тестирование уже на новом сервере, а на старом сервере запретить на уровне ролей студентам прохождение тестов, а преподавателям - редактиование. Тогда они хочешь-нехочешь не смогут там тестироваться. А на старом сервере сделать блок с ссылкой на новый сервер.

В ответ на Vadim Dvorovenko

Re: Проблемы с добавлением ролей в резервную копию

от Павел . -

Vadim спссибо большое за советы, я действительно заметил что папка moodledata раздулась до огромных размеров, и содержит 5000 файлов. Но при переходе на новую версию я думаю мне придется столкнуться с рядом проблем такого рода:

1. При переходе на Moodle2 если были файлы курса (например, лекции и резервные копии) то они автоматически перемещаются в папку "устаревшее хранилище". Как удалить эту папку и переместить файлы в новое хранилище? У меня не получилось. К тому  же, в старом хранилище я никак не мог удалить файлы, файл виден, а удалить его невозможно, везде обыск провел, бесполезно.

2. При переходе на Mooodle2 могут возникнуть проблемы с тестами, если я сделаю их экспорт его со старого сайта и импортирую в Moodle2?

3. Меня беспокоит вопрос с рассылкой писем. Какой способ лучше использовать?

3.1. Средствами самой операционной системы (в настоящее время я вместо паршивого sendmail поставил легкий и удобный ssmtp, и он лихо рассылает почту.

3.2. Средствами Moodle (я заметил, что в Moodle существуют собственные настройки почты, где можно указать ящик, пароль, сервер.

Какой из способов предпочтительнее и безопаснее использовать? Оставить ssmtp или отключить его напрочь вместе с sendmail и слать почту через сайт?

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

В ответ на Павел .

Re: Проблемы с добавлением ролей в резервную копию

от Виталий Лавров -
Изображение пользователя Эксперт по Moodle

п. 3.2 если на машине почта отсылается только moodl-ом, то особого смысла использовать локалный ssmtp нет. Если вы не принимаете сами письма, то возможно это нормальный вариант.

ssmtp на является MTA , в отличии от sendmail-а.

Показания к применению ssmtp - нестандартный/хитрый  почтовый сервер через который ведется рассылка ( требование непростой авторизации или ssl/tls) с которым напрямую не могут договориться программы отсылающие почту с вашей машины.

Использование ssmtp удобно когда у вас есть куча локальных программ которые отправляют почту. Тогда в случае изменения адреса mailhub не придеться перенастраивать все эти программы.

п. 4 В смена пароля и подтверждение регистрации письмо пытаются отправить непосредственно во время выполнения запроса. Пересылка письма может занимать много время (попадание на greylist) и делать это в момент выполнения запроса не хорошо.

А рассылка с форума может подождать. Нормальный MTA может успеть накопить несколько писем адресованных одному почтовому серверу и дальше отдать их за 1 сеанс. При использовании форума небольшим числом людей, это не очень актуально. Но если народу много и форумов много, то без этого трудно обойтись.

В ответ на Павел .

Re: Проблемы с добавлением ролей в резервную копию

от Vadim Dvorovenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода

Также я исследовал структуру таблиц в базе moodle, она безобразна. Где связи, индексы, ключи, а также каскадное обновление, удаление, триггеры, процедуры и прочие полезные вещи? 

Павел, я полностью с Вами согласен - структура ужасна. Более 300 таблиц, когда можно было обойтись двумя-тремя, в которые складывать данные в xml формате. подмигиваю

Теперь давайте по порядку. Структура данных системы мудл описывается в файлах db/install.xml, расскиданных по модулям системы. Там описывается структура полей и связей между ними. То, что вы видите в структуре конкретной базы данных всего лишь отображение идеальной структуры на возможности вашей конкретной БД. Мудл писался из соображений совместимости с самыми популярными системами, а когда-то самой популярной была связка php и движка mysql myisam. А он не умеет создавать ни внешних ключей, ни каскадных обновлений. Впоследствии в moodle перешли на транзакционный innodb, но произошло это лишь года три назад и переписать весь код, чтобы он был совместим с блокировками операций внешними ключами пока не успели. Если вы заглянете в moodle/lib/ddl/sql_generator.php - там описаны конструкции для ключей, но пока они не используются.

Триггеры, процедуры, функции в мудл не используются принципиально, поскольку написать код, который бы одновременно работал бы в 4 разных БД, к несчастью, невозможно. А писать 4 вида кода базы данных - это значит через месяц обнаружить, что половина кода работает только в одной бд, а другая половина кода - только в другой. Поверьте, разработчики мудл уже наступали на эти грабли, когда писали разный код обновления для разных БД, где-то времена версии 1.6.

Да, в мудл пока не используются транзакции, но разработчики уже предусмотрели такую возможность в библиотеках работы с бд. Вся беда по прежнему в MyISAM, но когда-нибудь от него всё-таки откажутся. Спросите, почему же сразу от него не отказались - да потому что разработчики мудла думают о реальных пользователях, которые хотят пользоваться системой, не отдавай состояния за коммерческие БД или за хостинг втридорого из-за специфических требований к окружению, а не об идеалистах, которым не хватает FOREIGN KEY.

А вот индексы в мудл есть, и работают они как надо. Поэтому никаких проблем с "мусором", как вы говорите, не существует. Как только начнёте выбирать какие-то данные - будет использован индекс, то есть скорость поиска от количества строк и наличия "мусора" зависеть не будет.

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

Этот ваш тезис совершенно верен, только если говорить об некой абстрактной структуре. Если удалить из форума сообщения некоторых пользователей, форум станет безсмысленным набором несвязанных реплик. Если вместе с пользователем удалить всю историю переписки, то она исчезнет и у получателей его сообщений. Начните-ка с гневных писем руководству социальных сетей, не удаляющих переписку вместе с учёткой пользователем. Нельзя просто так взять и выкинуть человека из этого мира - он всегда оставит свой след. Также и в мудле. Если удалять всё каскадно без разбора, простые пользователи, не понимающие ничего в связях в базах данных, начнут пугаться.

А каскадное удаление в мудле реализовано. Оно инициируются при удалении курса. Курс - вот главный структурный элемент системы. Удалите курс - удалятся форумы и форумные сообщения, удалятся попытки тестирования и выбранные ответы, удалятся вопросы тестов и локальные назначения ролей. Не хотите удалять курс - похожий результат даст команда "очистка".

P.S. Здесь и разработчиков-то, собственно нет. Здесь простые пользователи, которые, не смотря ни на что, готовы поделиться своим опытом в освоении системы с безобразной структурой таблиц