четверг, 29 сентября 2016 г.

Kodi - перенос БД на другое устройство

Я уже писал, что использую централизованную базу данных для хранения информации о фильмах, сериалах и музыке. База данных (MySQL) жила себе на HTPC Acer Revo RL100. Обычно я пишу: "Ну почему же "жила", живет счастливо и по сей день". Но, "здесь вам не тут", и в этот раз я сказать такого не могу. А все потому, что мне пришлось заменить свой HTPC.

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

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

После того, как я понял, что проблема не софтовая, я попробовал заменить блок питания. Сначала поставил от нетбука Toshiba - он был по характеристикам чуть слабее требуемых, но разъем подходил. Не помогло. Я не сдавался и поставил блок от старого семнадцатидюймового ноутбука HP. Тот обладал заведомо лучшими характеристиками, но разъем был чуть больше. Что могу сказать... Выключения как были, так и остались, и непредсказуемый их характер не изменился. И тогда я решил, что сломалось что-то внутри.

Скорее всего, что-то произошло в цепи питания, что-то, из-за чего питание "ослабло", если можно так сказать. В результате, когда оно по каким-то причинам проседает, комп выключается. Такие, точнее говоря, похожие симптомы могут наблюдаться у оборудования, в блоке питания которого "потек" конденсатор. У меня было устройство с похожей проблемой, правда, оно не выключалось, а просто не выполняло своих функций.

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

На замену же пришло устройство от производителя, продукцией которого я пользовался и пользуюсь. Кроме того, этой продукцией  я еще и очень доволен. Речь про Minix. На кухне я уже пару лет успешно использую Minix Neo G4, свисток с Android-ом на борту. Теперь же в гостиной поселился его старший брат - Minix Neo X8-H Plus. Это уже не свисток, устройство сие носит гордое название Android TV Box. О нем я обязательно расскажу подробнее , но, как-нибудь, в другой раз. Сейчас же важно отметить одну деталь - в принципе, он полностью заменил старый HTPC. Но одну функцию он выполнить не смог.

Вспоминаем начало этого поста: база данных (MySQL) жила себе на HTPC Acer Revo RL100. Да, именно, устройство под управлением Android не может выступать централизованной базой данных для Kodi. Вот и встал вопрос о том, где, все-таки, развернуть сервер MySQL.

После непродолжительных раздумий из загашников был извлечен нетбук производства Toshiba. Были произведены все необходимые манипуляции по превращению его в сервер. В том числе, установлен и сервер MySQL. Для того, чтобы не перенастраивать файлы advancedsettings.xml на всех устройствах, на которых установлен Kodi, я задал новоявленному серверу тот же статический IP адрес, который был и у старого HTPC. А дальше встал вопрос - как поступить с имеющейся базой данных. Очень мне не хотелось терять отметки о просмотренных эпизодах и фильмах, поэтому я решил базу данных перенести.

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

Не буду рассказывать, как заставлял старый Acer Revo проработать достаточное время, чтобы сделать экспорт БД - это не самое главное. Более важно - какие (и почему) настройки экспорта я, в конечном итоге, задал.

Итак, как вызвать окошко экспорта, мы уже знаем:


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


Итак, почему я включил галку, определяющую добавление команды удаления (прикольный оборот: добавление ... удаления) БД в скрипт экспорта. Дело в том, что после того, как я установил MySQL на новом сервере и присвоил этому серверу статический IP (такой же, который был прописан для старого HTPC), я запустил Kodi на одном из своих устройств, настроенных на использование централизованной БД. Kodi же написан таким образом, что создает БД, если обнаруживает настройку, требующую использовать централизованную БД, но не находит в указанном месте саму БД. То есть, запустив Kodi я инициировал создание БД на новом сервере. Но она мне не нужна. Поэтому я и отметил соответствующую галку. Тут еще надо упомянуть вот что: очень важно помнить о правах, предоставленных пользователю БД, под которым будут выполняться команды создаваемого во время экспорта скрипта - если уровень привилегий будет недостаточен, то можно получить массу ошибок и не достичь требуемого результата. Поэтому я выполнял эти команды (импортировал БД) под пользователем root.

Почему я включил галку создания БД, объяснять, я думаю, не стоит? Так, на всякий случай - иначе БД просто не будет.

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

Данные мы экспортируем в виде SQL команд вставки (INSERT) - в пустые, только что воссозданные, таблицы новенькой БД на новом сервере надо добавить данные.

Вот, пожалуй, и все. Хотя нет. Может так случиться, что у вас будет несколько баз с именами, удовлетворяющим шаблону myvideosXX, где XX может принимать одно из следующих значений. Могу предположить, что экспортировать и, соответственно, импортировать, нужно только базу с максимальным числом XX - именно там содержится вся нужная информация для вашей версии Kodi. Когда в новой версии Kodi происходит изменение структуры БД, в которой она может хранить информацию, Kodi, обнаружив, что настроен на использование централизованной БД, и найдя соответствующий сервер, создаст новую базу (с новой структурой) и перепишет все необходимые данные из старой, используемой ранее базы, в новую. Таким образом, все необходимые для правильной работы данные всегда лежат в последней версии БД.

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

И еще. В advancedsettings.xml помимо того, где искать базу данных, прописаны имя и пароль пользователя под которым, собственно, будет производиться соединение с БД и работа с ней. Изначально я настраивал XBMC на работу под специально созданным пользователем. Нет, конечно, можно было указать и параметры пользователя root, но я посчитал, что это уж чересчур небезопасно. Поэтому я создал специального пользователя с паролем, и прописал его параметры в advancedsettings.xml. Ну а для того, чтобы пользователь этот мог работать с базой данных Kodi, ему следует выдать необходимый набор прав. Я делал это на старом HTPC, и на новом сервере пришлось повторить все эти же действия. Собственно,  в документации Kodi можно найти уже готовый скрипт для этих телодвижений. Просто замените имя и пароль, если печетесь о безопасности, и вперед!

Комментариев нет:

Отправить комментарий