Главная
» Как сделать
»
Удалите предупреждение Nextcloud об отсутствии индексов в базе данных.
Удалите предупреждение Nextcloud об отсутствии индексов в базе данных.
Устраните предупреждение Nextcloud «В базе данных отсутствуют некоторые индексы», запустив команду occ db:add-missing-indicesот имени пользователя веб-сервера из правильной установки Nextcloud. Команда добавляет индексы, определенные Nextcloud или установленными приложениями, но отсутствующие в базе данных; в текущей документации Nextcloud 35 --dry-runперед выполнением команды выполняется предварительный просмотр SQL-запроса.
Предупреждение появляется в разделе «Обзор администрирования», когда Nextcloud обнаруживает отсутствие индексов в схеме базы данных.
Что означает это предупреждение
Индекс базы данных — это структура поиска, которая помогает базе данных находить строки без сканирования всей таблицы. Nextcloud и его приложения иногда добавляют индексы для улучшения запросов. Обновление может оставить эту работу администратору, поскольку создание индекса для большой таблицы может занять время и повлиять на производительность во время работы. Предупреждение об отсутствии индекса обычно является сигналом о необходимости технического обслуживания, а не доказательством повреждения файлов или записей базы данных.
В текущем справочнике команд базы данных Nextcloud описывается db:add-missing-indicesдобавление индексов, которые присутствуют в ожидаемой схеме, но отсутствуют в текущей установке. В текущем руководстве также описан --dry-runпредварительный просмотр SQL-запросов. Точные индексы зависят от вашей версии Nextcloud и установленных приложений.
Подготовьте сервер
Уточните, в каком именно экземпляре Nextcloud отображается предупреждение, особенно если вы управляете тестовой и производственной средами или несколькими контейнерами.
Убедитесь, что существует актуальная резервная копия базы данных и что вы знаете, как её восстановить. Эта команда изменяет структуру базы данных. Не редактируйте и не удаляйте индексы вручную.
Планируйте выполнить команду, когда нагрузка на базу данных будет приемлемой. Согласно рекомендациям Nextcloud по обновлению, сервер может оставаться в сети во время этой операции, но индексирование большой таблицы может занять время и временно повлиять на скорость ответа.
Найдите каталог установки Nextcloud, версию PHP CLI, используемую веб-сервером, и учетную запись операционной системы веб-сервера. www-dataВ Debian или Ubuntu эта учетная запись часто совпадает с apacheверсией для Fedora или CentOS, а httpв Arch Linux — с другой.
В руководстве Nextcloud по OCC поясняется, что occэто интерфейс командной строки сервера, и его необходимо запускать от имени пользователя HTTP, чтобы права собственности и разрешения файлов оставались неизменными. Не используйте его www-dataбездумно, если в вашей установке используется другая учетная запись.
Предварительный просмотр и добавление отсутствующих индексов.
Для стандартной установки архива в Debian или Ubuntu откройте командную строку на сервере Nextcloud и перейдите в каталог, содержащий occфайл. В этом примере используется /var/www/nextcloud; ваш путь может отличаться.
cd /var/www/nextcloud
sudo -E -u www-data php occ db:add-missing-indices --dry-run
В режиме пробного запуска выводится SQL-запрос, который будет выполнен без изменения базы данных. Прочитайте вывод и убедитесь, что это ожидаемая операция обслуживания. Эта --dry-runопция описана в текущем руководстве Nextcloud 35; если в более старой версии она недоступна, проверьте справку по командам этой версии, а не удаляйте опции случайным образом.
Воспользуйтесь описанной в документации функцией пробного запуска, чтобы проверить SQL-запрос перед внесением изменений в базу данных.
Когда будете готовы применить изменения, выполните команду без символа --dry-run":".
Nextcloud проверяет соответствующие таблицы и сообщает о ходе выполнения. Дождитесь завершения процесса; не прерывайте его только потому, что проверка большой таблицы занимает больше времени, чем ожидалось. В руководстве по обновлению эта команда указана среди более длительных задач по настройке схемы, которые могут выполняться во время работы экземпляра, поэтому обычно для этого не требуется включать режим обслуживания. Избегайте одновременного обслуживания базы данных во время выполнения этой команды.
Эта команда проверяет таблицы базы данных и возвращается в оболочку по завершении.
Если Nextcloud работает в Docker
Запускать occв контейнере приложения Nextcloud, а не в отдельном контейнере базы данных. Для контейнера, названного nextcloudс использованием обычной www-dataучетной записи, команда обычно выглядит так:
Замените nextcloudна фактическое имя контейнера вашего приложения. Если ваш образ или развертывание использует другого пользователя контейнера, исполняемый файл PHP или обертку команд, следуйте документации этого образа и продолжайте выполнение команды от имени пользователя HTTP.
Убедитесь, что предупреждение исчезло.
После завершения выполнения команды обновите настройки администрирования > Обзор . Сообщение об отсутствующем индексе должно исчезнуть, как только проверка Nextcloud распознает индексы. Вы также можете повторно запустить команду; она должна завершиться без необходимости повторного добавления тех же отсутствующих индексов. Это подтверждает, что проверка схемы завершилась успешно, хотя и не измеряет общую производительность базы данных.
После завершения выполнения команды обновите раздел «Обзор администрирования» и проверьте, исчезло ли предупреждение базы данных.
Если предупреждение останется в силе
Убедитесь, что вы выполнили команду для той же установки Nextcloud и той же базы данных, которые вызвали предупреждение. Распространенная ошибка — выполнение команды в контейнере обслуживания, тестовом экземпляре или контейнере базы данных.
Убедитесь, что команда выполнялась от имени правильного пользователя веб-сервера и использовала ту же версию PHP, что и веб-сервер. Nextcloud отмечает, что другая конфигурация PHP в командной строке может вызывать occошибки.
В Nextcloud 35 и более поздних версиях выполните команду sudo -E -u www-data php occ db:schema:checkдля проверки различий в схеме. В текущем справочнике указано, что эта проверка добавлена в версии 35. В более ранних версиях используйте диагностические средства, описанные для этой версии.
Если отсутствующий индекс принадлежит стороннему приложению или команда выдает ошибку, обновите приложение, если доступно обновление, просмотрите журнал Nextcloud и вывод команды, а также обратитесь к сопровождающему приложения или в службу поддержки Nextcloud с точными именами индекса и таблицы. Не выполняйте CREATE INDEXзапросы, написанные вручную, если сопровождающий приложения или базы данных не предоставил их для вашей конкретной схемы.
Для производственного сервера сохраните резервную копию базы данных до тех пор, пока предупреждение не исчезнет и приложение не начнет работать в обычном режиме. В руководстве по обновлению Nextcloud описаны задачи онлайн-обслуживания и необязательный пробный запуск.