Ru-MaNGOS

Ru-MaNGOS (http://mangos.ytdb.ru/index.php)
-   Новичкам (http://mangos.ytdb.ru/forumdisplay.php?f=40)
-   -   Обновление БД(пример) (http://mangos.ytdb.ru/showthread.php?t=96)

DeusModus 07.03.2010 16:16

Обновление БД(пример)
 
упрощенно ревизия=версия

для удобства используйте Упордочить Значки->По Имени в папках с sql обновлениями


БД= База Данных


Прежде, чем начать:
  • Определите номер вашей текущей ревизии сервера MaNGOS
  • Определите, под какую ревизию MaNGOS у вас БД.
  • Я буду обьяснять на примере. Моя ревизия ядра- 4800

Моя ревизия базы данных(на просторах интернет нашел Super_Unknown_MaNGOS_DB_for_4714.rar)- 4714.

Что я хочу: получить самую новую версию сервера.

Часть 1: Через Папки к Обновлению


Наш путь начинается с обращения к папке, где хранятся SQL-обновления:

Ваш путь до исходников MaNGOS/sql/updates

В этой папке мы видим множество файлов с расширением .sql и несколько папок вида 0.<число>.

Теперь нам необходимо найти первый SQL апдейт для баз
  1. mangos
  2. characters
  3. realmd

Ищем sql файлы >4714(больше номера ревизии нашей БД).
И не находим. Далее ищем по папкам.
Нужный нам файл лежит в /sql/updates/0.9/ и называется

4718_mangos_uptime.sql

Применяем его к таблице Базе Данных mangos.

К БД mangos, потому что имя sql файла строится таким образом:

<РЕВИЗИЯ> _ <БД> _ <ТАБЛИЦА _ КОТОРУЮ _ ЗАТРАГИВАЕТ> . sql

Ищем следующий .sql файл. Теперь уже нам нужен номер > 4718

Это 4737_mangos_command.sql. Обратите внимание, его тоже необходимо применить на БД mangos.
Следующий апдейт - 4764_characters_auctionhouse.sql. И.. правильно! Его необходимо применить на БД characters. Браво!

Входим в цикл: {Запомнить текущий SQL файл => Найти SQL файл, начинающийся с большей цифры => применить}.

Часть 2: Берем выше


Когда БД вашего сервера станет 4842(ведь последний апдейт в папке 0.9 это 4842_mangos_quest_template.sql), настанет время выйти за пределы этой папки и перейти в следующую... Правильно! Следующую по номеру. В нашем случае это 0.10.

Но вот незадача, файлы
4846_mangos_creature_template.sql
4846_mangos_item_template.sql
4846_mangos_npc_option.sql

Имеют одинаковые номера. Однако это не должно вас смутить! Помните упомниание о том, как строятся названия sql-апдейтов в MaNGOS? Да, именно, эти обновлени затрагивают три разные таблицы. Они не пересекаются. Ставим в любом порядке и двигаемся дальше.

Входим в цикл: {Запомнить текущий SQL файл => Найти SQL файл, начинающийся с большей цифры => применить}.

Часть 3: Абсолют

Итак, вы полностью применили обновления из папок 0.9, 0.10,(вы ведь двинулись дальше?).
На текущий момент у вас должна быть ревизия 6351.
Переходим в папку 0.11. По каким-то неведомым причинам sql файлы здесь называются иначе. Но это не проблема для нас!

На ближайшие десять минут запомните(потом придется забыть), что на самом деле имя sql файла строится следующим образом:


0<РЕВИЗИЯ>_<БД>_<ТАБЛИЦА_КОТОРУЮ_ЗАТРАГИВАЕТ>.sql
И ноль это не ошибка. Применяем файлы с
06360_characters_characters.sql
по
06760_mangos_creature_template.sql

Затем применяем апдейты вида
2008_х_х_х_(База_Данных)_(Табли а).sql

Они импортируются в порятке возрастания, т.е. сначала 2008_10_18_01_characters_characters.sql, потом 2008_10_18_02_mangos_spell_proc_event.sql и так далее.
После того, как все обновления из папки 11 установлены переходим в дирректорию на уровень выше(/sql/updates).
Это главная папка с обновлениями. Импортируем сначала .sql файлы вида
2008_х_х_х_(База_Данных)_(Табли а).sql
Первый файл такого вида- 2008_12_22_01_mangos_creature_equip_template.sql

а затем
(НОМЕР_РЕВИЗИИ_ЯДРА)_(НОМЕР_ОБНОВЛЕНИЯ)_(БД)_(ТАБЛИЦА).sql
Первый файл такого вида- 6936_01_mangos_spell_chain.sql.


Вот и всё! Мы обновили БД с версии 4714 до 8104(в моём случае) без каких либо проблем.

RabinoVich 26.07.2010 07:17

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

Что сделал:
1. Скачал я с репозитория исходники мангоса, собрал ядро, зашел в папку mangos/sql
2. С помощью create_mysql.sql создал таблицы
3. С помошью characters.sql и realmd.sql заполнил таблицы characters и realmd
3. mangos.sql заливать не стал, вместо этого залил файл YTDB_0.13.5_R550_MaNGOS_R10023_SD2_R1706_ACID_R304 _RuDB_R37.7, самый свежий на данный момент, взял с репозитория YTDB
4. Перешёл в папку ScriptDev2/sql
5. Файлом scriptdev2_create_database.sql создал таблицу
6. Файлами scriptdev2_create_structure_mysql.sql и scriptdev2_script_full.sql заполнил таблицу

Вопросы:
1. Как определить нынешние ревизии баз characters, realmd и ScriptDev2, чтобы относительно её продолжить их дальнейшее обновление?
2. Или же они на данный момент находятся в максимальной ревизии после моих действий?
3. На данный момент ревизия моего ядра - 12340, а самое последнее обновление для БД, скачанное, естественно с того же репозитория имеет ревизию 10270. Если я не ошибаюсь, то ревизии ядра и базы должны совпадать. Что делать?
4. В ропозиториях YTBD и mangos можно встретить обновления одиинаковых версий, я правильно полагаю, что разницы откуда ставить нет? Но в репозитории мангоса они обычно свежее

З.Ы. Спасибо за мануал по обновлению БД

З.З.Ы. ответ на вопрос 1 нашел сам - в БД нужно лишь найти таблицу, содержащей db_version
З.З.З.Ы. практика показал, что даунгрейд сделать нельзя, главное не ошибится и ставить одновления строго по порядку

timmit 26.07.2010 09:54

1. Посмотреть db_version, для каждой есть она.
3. Посмотреть таблицу db_version и начать накатывать апдейты из mangos/sql к тебе, до нужной ревизии по порядку. (для мангос 4 столбец этой таблицы)
4. Потому что мангос постоянно обновляется, база раз в неделю - куда включаются все обновления на мангос,чарактерс, реалмд за неделю. Можете в принципе ждать до апа.

p.s текущая ревизия базы 557, у вас 550 фул.. накатывайте с svn апдейты, там уже все ядерные включены (сначала ядерные апдейты, затем сам апдейт базы по порядку ревизий)

RabinoVich 26.07.2010 10:27

3. Я поставил пакет 550, потом довел до 557го патчами, потом стал поднимать дальше из папки mangos/sql до 10270

tempura 26.07.2010 15:06

Последний вариант - все-таки запустить сервер, и прочесть в логе ошибку. :) :) :) Там будет указано, что именно не хватает и что делать. :) :) :)

Near 30.07.2010 10:45

К примеру:

Код:

2010-07-29 14:29:33 ERROR: [A] You have: --> `10244_01_mangos_command.sql`
2010-07-29 14:29:33 ERROR:
2010-07-29 14:29:33 ERROR: [B] You need: --> `10270_01_mangos_reputation_spillover_template.sql'


накатывая апдейт
10270_01_mangos_reputation_spillover_template.sql
он выдает ошибку:


Код:

[Err] 1054 - Unknown column 'required_10263_03_mangos_pool_pool' in 'db_version'
[Msg] Finished - Unsuccessfully

накатываю апдейт выше 10244 т.е. 10256_01_mangos_command.sql
тоже выдает ошибку:

Код:

[Err] 1054 - Unknown column 'required_10252_01_mangos_reputation_reward_rate' in 'db_version'
[Msg] Finished - Unsuccessfully

:swoon2:

LordJZ 30.07.2010 11:48

Апдейт выше 10244 это 10251. Чем вы смотрели?

Near 30.07.2010 13:26

До меня дошло. Спасибо.


Текущее время: 13:42. Часовой пояс GMT +3.

ru-mangos.ru - Русское сообщество MaNGOS