Перейти к содержимому


Фото
- - - - -

Перенос базы из 11 версии на 13


  • Please log in to reply
22 ответов в этой теме

#1 Tuxzer92

Tuxzer92

    Newbie

  • Posters
  • 30 Сообщений:

Отправлено 08 Февраль 2023 - 16:15

Доброго времени суток.

 

Есть старый сервер 11 версии на Windows и SQlite3 и новый на Debian с 13 версией и PostgreSQL.

Как перенести базу с 11 версии SQLite3 на 13 версию PostgreSQL?

 

 



#2 Afalin

Afalin

    Guru

  • Dr.Web Staff
  • 5 835 Сообщений:

Отправлено 08 Февраль 2023 - 17:07

Переключить новый на SQLite3, принести туда БД со старого (можно прямо database.sqlite при остановленном сервере), обновить её – /etc/init.d/drwcsd modexecdb database-upgrade && echo OK || echo FAILED – сделать экспорт – /etc/init.d/drwcsd modexecdb database-export /path/to/export.db && echo OK || echo FAILED – перенастроить на постгрес, остановить сервер, импортировать – /etc/init.d/drwcsd modexecdb database-import /path/to/export.db && echo OK || echo FAILED – и запустить сервер.

Если где-то фейл – остановиться и разобраться.


Семь раз отрежь – один раз проверь

#3 Afalin

Afalin

    Guru

  • Dr.Web Staff
  • 5 835 Сообщений:

Отправлено 08 Февраль 2023 - 17:08

В мурзилке есть ЧаВо, в котором рассматриваются близкие вопросы: раз и два.

Для 11 команды будут выглядеть иначе, если что. Но его дёргать тут не обязательно.


Сообщение было изменено Afalin: 08 Февраль 2023 - 17:09

Семь раз отрежь – один раз проверь

#4 Tuxzer92

Tuxzer92

    Newbie

  • Posters
  • 30 Сообщений:

Отправлено 08 Февраль 2023 - 18:27

Благодарю!

#5 Afalin

Afalin

    Guru

  • Dr.Web Staff
  • 5 835 Сообщений:

Отправлено 08 Февраль 2023 - 18:36

Мне тут напоминают, что я один момент забыл.

Если БД в потсгресе не была проинициализирована (т.е. нашей структуры там нет), перед импортом надо инициализировать: /etc/init.d/drwcsd modexecdb database-init && echo OK || echo FAILED


Семь раз отрежь – один раз проверь

#6 Tuxzer92

Tuxzer92

    Newbie

  • Posters
  • 30 Сообщений:

Отправлено 09 Февраль 2023 - 09:31

Извиняюсь, но когда я скопировал базу SQLite с сервера на Windows на сервер на Linux и пытаюсь обновить ее, то у меня код выхода FAILED.

root@drweb13:~# /etc/init.d/drwcsd modexecdb database-upgrade && echo OK || echo FAILED
FAILED


#7 Afalin

Afalin

    Guru

  • Dr.Web Staff
  • 5 835 Сообщений:

Отправлено 09 Февраль 2023 - 09:40

Тогда интерес представляет /var/opt/drwcs/log/drwcsd.log.


Семь раз отрежь – один раз проверь

#8 Kirill Polubelov

Kirill Polubelov

    Hr. Schreibikus

  • Dr.Web Staff
  • 4 345 Сообщений:

Отправлено 09 Февраль 2023 - 10:23

Я тут хрустальный шар увидел в углу, поинтересовался, он говорит, что скорей всего после копирования права на database.sqlite не были поправлены.

как минимум:

chown drwcs:drwcs database.sqlite

 


(exit 0)

#9 Afalin

Afalin

    Guru

  • Dr.Web Staff
  • 5 835 Сообщений:

Отправлено 09 Февраль 2023 - 10:38

Да ну, из-под рута же запускалось.


Семь раз отрежь – один раз проверь

#10 Tuxzer92

Tuxzer92

    Newbie

  • Posters
  • 30 Сообщений:

Отправлено 09 Февраль 2023 - 11:40

После выполнения команды для инициализации БД PostgreSQL: /etc/init.d/drwcsd modexecdb database-init && echo OK || echo FAILED
В логе ошибка:
 
20230209.123613.86 inf [01878 01878] main   [Server] Dr.Web Server Version 13.00.0.202204040 (REL-1300_202107090, Linux/x86_64) has terminated
20230209.123613.86 ERR [01878 01878] main   [Server] Server execution failed because of
20230209.123613.86 ERR [01878 01878] main   [Server] \ no DB connections have been created
20230209.123613.86 ERR [01878 01878] main   [Server] exceptions_namespace::config_exception: no DB connections have been created
20230209.123613.86 ntc [01878 01878] main   [Server] Exit code 0xe/14 (server execution error), 00.049 elapsed, 00.072 CPU (145%)
 
Строки в конфиге:
 <database connections='2' speedup='yes'>
   <pgsql dbname='drwcs' host='localhost' port='5432' options='' requiressl='0' user='drwcs' password='drwcs' temp_tablespaces='' default_transaction_isolation='' debugproto ='yes' />
 </database>
 
 

 

Я тут хрустальный шар увидел в углу, поинтересовался, он говорит, что скорей всего после копирования права на database.sqlite не были поправлены.

как минимум:

chown drwcs:drwcs database.sqlite

Да, поправил.



#11 Afalin

Afalin

    Guru

  • Dr.Web Staff
  • 5 835 Сообщений:

Отправлено 09 Февраль 2023 - 11:45

В логе ошибка:

Интересное выше должно быть.


Семь раз отрежь – один раз проверь

#12 Tuxzer92

Tuxzer92

    Newbie

  • Posters
  • 30 Сообщений:

Отправлено 09 Февраль 2023 - 11:47

 

В логе ошибка:

Интересное выше должно быть.

 

[PgSQL/1] Unable to create instance because of
20230209.123613.85 ERR [01878 01878] main   [PgSQL/1] \ База данных "drwcs" не существует (S:3D000 ВАЖНО)
20230209.123613.85 ERR [01878 01878] main   [PgSQL/1] exceptions_namespace::database_exception: База данных "drwcs" не существует (S:3D000 ВАЖНО)
20230209.123613.85 ERR [01878 01878] main   [DBPool] Unable to create [PgSQL/1] connection because of База данных "drwcs" не существует (S:3D000 ВАЖНО)
 
Базу сначала надо создать ?

Сообщение было изменено Tuxzer92: 09 Февраль 2023 - 11:47


#13 Tuxzer92

Tuxzer92

    Newbie

  • Posters
  • 30 Сообщений:

Отправлено 09 Февраль 2023 - 12:00

Так все таки как правильнее создать БД PostgreSQL?

Так:

Создайте базу данных PostgreSQL одним из следующих способов:

a)При помощи графического интерфейса pgAdmin.

B)При помощи SQL-команды CREATE DATABASE.

 

или так? /etc/init.d/drwcsd modexecdb database-init



#14 Afalin

Afalin

    Guru

  • Dr.Web Staff
  • 5 835 Сообщений:

Отправлено 09 Февраль 2023 - 12:15

Сначала первое, потом второе. Создание БД (а ещё создание юзера и наделение его полномочиями) и создание физической структуры БД с наполнением дефолтными данными – процессы раздельные.


Сообщение было изменено Afalin: 09 Февраль 2023 - 12:16

Семь раз отрежь – один раз проверь

#15 Tuxzer92

Tuxzer92

    Newbie

  • Posters
  • 30 Сообщений:

Отправлено 09 Февраль 2023 - 12:28

Сначала первое, потом второе. Создание БД (а ещё создание юзера и наделение его полномочиями) и создание физической структуры БД с наполнением дефолтными данными – процессы раздельные.

 

Спасибо. Все получилось)



#16 Tuxzer92

Tuxzer92

    Newbie

  • Posters
  • 30 Сообщений:

Отправлено 09 Февраль 2023 - 13:05

А нет. Поторопился. Ошибка при импорте: /etc/init.d/drwcsd modexecdb database-import /path/to/export.db && echo OK || echo FAILED

Прикрепленные файлы:

  • Прикрепленный файл  drwcsd.log   2,58Мб   2 Скачано раз

Сообщение было изменено Tuxzer92: 09 Февраль 2023 - 13:08


#17 Tuxzer92

Tuxzer92

    Newbie

  • Posters
  • 30 Сообщений:

Отправлено 09 Февраль 2023 - 14:10

[Srv/DBMgr] table "station_hips_event" field #6 record #328 numeric value is over limit 2147483647
20230209.133435.44 wrn [02351 02351] main   [Srv/DBMgr] table "station_hips_event" field #6 record #328 value "3178711513" changed to "2147483647"
20230209.133435.60 wrn [02351 02351] main   [Srv/DBMgr] table "station_hips_event" field #6 record #1414 numeric value is over limit 2147483647
20230209.133435.60 wrn [02351 02351] main   [Srv/DBMgr] table "station_hips_event" field #6 record #1414 value "3862481585" changed to "2147483647"
20230209.133435.67 wrn [02351 02351] main   [Srv/DBMgr] Table "station_hips_event" has erronous records
20230209.135320.34 ERR [02351 02351] main   [PgSQL/1] Повторяющееся значение ключа нарушает ограничение уникальности "env_strings_0001". Ключ "(str)=(Microsoft)" уже существует. (S:23505 ОШИБКА, schema "public", table "env_strings", constraint "env_strings_0001"), 00.395, INSERT INTO env_strings(id,str) VALUES(?,?) <any> [5:"17738", 11:"Microsoft\x00H"]
20230209.135320.34 FTL [02351 02351] main   [Srv/DBMgr] Unable to execute statement "INSERT INTO env_strings(id,str) VALUES(?,?)" because of [string "database/utils/utils.ds"]:169: Database "Повторяющееся значение ключа нарушает ограничение уникальности "env_strings_0001". Ключ "(str)=(Microsoft)" уже существует. (S:23505 ОШИБКА, schema "public", table "env_strings", constraint "env_strings_0001")" error occured executing "INSERT INTO env_strings(id,str) VALUES(?,?)"
20230209.135320.34 ERR [02351 02351] main   [Lua/DB] Unable to execute "SELECT * FROM env_strings" because of row read callback returned false
20230209.135320.34 ERR [02351 02351] main   [Srv/DBMgr] Execution error "[string \"database/import/utils.ds\"]:168: row read callback returned false" occured
20230209.135320.35 ERR [02351 02351] main   [Srv/DBMgr] Execution error "[string \"database/import/utils.ds\"]:197: [string \"database/import/utils.ds\"]:168: row read callback returned false" occured

Тут видимо ошибка? Что-то надо поправить в самой базе?



#18 Tuxzer92

Tuxzer92

    Newbie

  • Posters
  • 30 Сообщений:

Отправлено 09 Февраль 2023 - 16:02

"Ключ "(str)=(Microsoft)" уже существует" Видимо в этом проблема. Как решить?


Сообщение было изменено Tuxzer92: 09 Февраль 2023 - 16:02


#19 Afalin

Afalin

    Guru

  • Dr.Web Staff
  • 5 835 Сообщений:

Отправлено 09 Февраль 2023 - 17:06

Ага, разные СУБД по-разному считают текст. Значения, равные для одной, будут разными для другой. И это пока что побороть, емнип, не удалось. Проще всего вот так:

 

/opt/drwcs/bin/drwidbsh3 /var/opt/drwcs/database.sqlite

> DELETE FROM env_strings;

> DELETE FROM station_env_hw;

> DELETE FROM station_env_sw;

> DELETE FROM station_env_kb;

> DELETE FROM station_env_hash;

> .quit

 

И повторить, начиная с database-export.

 

Потом станции новое пришлют.

Но такой подвох может быть не один.


Семь раз отрежь – один раз проверь

#20 Tuxzer92

Tuxzer92

    Newbie

  • Posters
  • 30 Сообщений:

Отправлено 10 Февраль 2023 - 10:22

Фух. БД успешно импортировалась в PostgreSQL. Надеюсь на этом все)




Читают тему: 0

0 пользователей, 0 гостей, 0 скрытых